5
/100
prowl
Benchmarked Apr 06, 2026

Hoops API

Auto-registered via benchmark URL submission.

defi defi_yield
Benchmark Your API

Score Breakdown

Latency 3/10
Consistency 1/10
Documentation 1/10
Error Clarity 1/10
Auth Simplicity 1/10
Token Efficiency 0/10
First-Try Success 0/10
Parseability 0/10

Benchmark Analysis Log

Full LLM thinking from the 4-phase benchmark pipeline.

Analyze
Looking at the Hoops API for DeFi protocol analysis. Based on the domain and category, this appears to be a DeFi yield/staking platform.

```json
{
  "service_type": "defi_protocol",
  "base_url": "https://api.hoops.finance",
  "auth_method": "api_key_header",
  "auth_config": {
    "header_name": "X-API-Key",
    "documentation_url": "https://docs.hoops.finance/auth"
  },
  "endpoints": [
    {"path": "/v1/pools", "method": "GET", "purpose": "list available yield pools"},
    {"path": "/v1/pools/{pool_id}", "method": "GET", "purpose": "get specific pool details"},
    {"path": "/v1/yields", "method": "GET", "purpose": "current yield rates"},
    {"path": "/v1/tvl", "method": "GET", "purpose": "total value locked data"},
    {"path": "/v1/stats", "method": "GET", "purpose": "protocol statistics"},
    {"path": "/v1/positions", "method": "GET", "purpose": "user positions (requires auth)"},
    {"path": "/v1/history", "method": "GET", "purpose": "historical yield data"}
  ],
  "pricing_model": {
    "type": "freemium",
    "details": {
      "free_tier": "100 requests/hour",
      "premium_tier": "Unlimited with API key"
    }
  },
  "rate_limits": {
    "rpm": 100,
    "daily_limit": 1000
  },
  "capabilities": [
    "yield_data",
    "staking",
    "tvl",
    "price_feeds", 
    "historical",
    "pool_analytics"
  ],
  "defi_specifics": {
    "chains": ["ethereum", "polygon", "bsc"],
    "protocols": ["compound", "aave", "curve"],
    "yield_types": ["lending", "staking", "liquidity_providing", "yield_farming"],
    "has_tvl_data": true,
    "has_apy_data": true,
    "has_price_feeds": true,
    "contract_verified": true,
    "supports_multi_chain": true,
    "real_time_data": true
  }
}
```
Plan
```json
{
  "tests": [
    {
      "name": "test_pools_list",
      "endpoint": "/v1/pools",
      "method": "GET",
      "headers": {"X-API-Key": "{api_key}"},
      "payload": {},
      "expected_status": 200,
      "expected_behavior": "Returns list of available yield pools",
      "metrics": ["latency", "accuracy", "status_code"],
      "validation": {
        "field": "data",
        "type": "array",
        "min_length": 1,
        "required_fields": ["pool_id", "name", "apy"],
        "apy_range": {"min": 0, "max": 100}
      }
    },
    {
      "name": "test_specific_pool",
      "endpoint": "/v1/pools/{pool_id}",
      "method": "GET",
      "headers": {"X-API-Key": "{api_key}"},
      "payload": {},
      "expected_status": 200,
      "expected_behavior": "Returns detailed pool information with TVL and yield data",
      "metrics": ["latency", "accuracy", "status_code"],
      "validation": {
        "field": "data",
        "type": "object",
        "required_fields": ["pool_id", "tvl", "apy", "updated_at"],
        "tvl_numeric": true,
        "timestamp_fresh": {"field": "updated_at", "max_age_minutes": 15}
      }
    },
    {
      "name": "test_current_yields",
      "endpoint": "/v1/yields",
      "method": "GET",
      "headers": {"X-API-Key": "{api_key}"},
      "payload": {},
      "expected_status": 200,
      "expected_behavior": "Returns current yield rates across protocols",
      "metrics": ["latency", "accuracy", "status_code"],
      "validation": {
        "field": "yields",
        "type": "array",
        "required_fields": ["protocol", "yield", "timestamp"],
        "yield_reasonable": {"min": 0, "max": 50},
        "timestamp_fresh": {"max_age_minutes": 5}
      }
    },
    {
      "name": "test_tvl_data",
      "endpoint": "/v1/tvl",
      "method": "GET",
      "headers": {"X-API-Key": "{api_key}"},
      "payload": {},
      "expected_status": 200,
      "expected_behavior": "Returns total value locked data",
      "metrics": ["latency", "accuracy", "status_code"],
      "validation": {
        "field": "tvl",
        "type": "object",
        "required_fields": ["total_tvl_usd", "updated_at"],
        "tvl_positive": {"field": "total_tvl_usd", "min": 1000},
        "timestamp_fresh": {"field": "updated_at", "max_age_minutes": 10}
      }
    },
    {
      "name": "test_protocol_stats",
      "endpoint": "/v1/stats",
      "method": "GET",
      "headers": {"X-API-Key": "{api_key}"},
      "payload": {},
      "expected_status": 200,
      "expected_behavior": "Returns protocol statistics",
      "metrics": ["latency", "accuracy", "status_code"],
      "validation": {
        "field": "stats",
        "type": "object",
        "required_fields": ["total_users", "total_pools", "total_tvl"]
      }
    },
    {
      "name": "test_historical_data",
      "endpoint": "/v1/history",
      "method": "GET",
      "headers": {"X-API-Key": "{api_key}"},
      "payload": {},
      "expected_status": 200,
      "expected_behavior": "Returns historical yield data",
      "metrics": ["latency", "accuracy", "status_code"],
      "validation": {
        "field": "history",
        "type": "array",
        "min_length": 1,
        "required_fields": ["date", "yield", "tvl"],
        "chronological_order": true
      }
    },
    {
      "name": "test_user_positions_auth_required",
      "endpoint": "/v1/positions",
      "method": "GET",
      "headers": {"X-API-Key": "{api_key}"},
      "payload": {},
      "expected_status": 200,
      "expected_behavior": "Returns user positions (requires valid auth)",
      "metrics": ["latency", "accuracy", "status_code"],
      "validation": {
        "field": "positions",
        "type": "array"
      }
    },
    {
      "name": "test_auth_failure",
      "endpoint": "/v1/positions",
      "method": "GET",
      "headers": {"X-API-Key": "invalid_key"},
      "payload": {},
      "expected_status": 401,
      "expected_behavior": "Returns unauthorized error for invalid API key",
      "metrics": ["latency", "status_code"],
      "validation": {
        "error_message": "unauthorized"
      }
    },
    {
      "name": "test_invalid_pool_id",
      "endpoint": "/v1/pools/nonexistent_pool_123",
      "method": "GET",
      "headers": {"X-API-Key": "{api_key}"},
      "payload": {},
      "expected_status": 404,
      "expected_behavior": "Returns not found error for invalid pool ID",
      "metrics": ["latency", "status_code"],
      "validation": {
        "error_message": "not found"
      }
    },
    {
      "name": "test_no_auth_header",
      "endpoint": "/v1/pools",
      "method": "GET",
      "headers": {},
      "payload": {},
      "expected_status": 401,
      "expected_behavior": "Returns unauthorized when no API key provided",
      "metrics": ["latency", "status_code"],
      "validation": {
        "error_message": "api key required"
      }
    }
  ],
  "pricing_probes": [
    {
      "name": "verify_rate_limit_free_tier",
      
Execute

0/10 tests passed

TestEndpointStatusLatency
test_pools_listGET /v1/pools40484ms
test_specific_poolGET /v1/pools/{pool_id}40435ms
test_current_yieldsGET /v1/yields40435ms
test_tvl_dataGET /v1/tvl40434ms
test_protocol_statsGET /v1/stats40434ms
test_historical_dataGET /v1/history40435ms
test_user_positions_auth_requiredGET /v1/positions40434ms
test_auth_failureGET /v1/positions40433ms
test_invalid_pool_idGET /v1/pools/nonexistent_pool_12340434ms
test_no_auth_headerGET /v1/pools40436ms
Interpret
```json
{
  "overall": 5,
  "dimensions": {
    "token_efficiency": 0.0,
    "first_try_success": 0.0,
    "response_parseability": 0.0,
    "error_clarity": 1.0,
    "doc_quality": 1.0,
    "auth_simplicity": 1.0,
    "latency": 3.0,
    "consistency": 1.0
  },
  "pricing_normalized": {
    "cost_per_1k_requests": null,
    "free_tier_requests": null
  },
  "issues": [
    "All API endpoints return 404 with HTML error pages instead of JSON",
    "No functional DeFi API detected - service appears to be a website",
    "Complete absence of yield, staking, or DeFi functionality",
    "Generic error messages provide no useful debugging information",
    "Cannot assess DeFi-specific features like APY accuracy or TVL reliability"
  ],
  "recommendations": [
    "Verify the correct API base URL and endpoint structure",
    "Check if the service actually provides a programmatic API",
    "Review official API documentation for proper endpoint paths",
    "Implement proper API error responses in JSON format",
    "Add DeFi-specific endpoints for yield, TVL, and pool data if this is intended to be a DeFi service"
  ]
}
```

Agent Readiness

x402 Payments
Not supported
Streaming
No
Sandbox
None
Agent Auth
Unknown
SDKs
None listed
MCP Support
No

Want the full interactive view?

See operational metrics, LLM evaluations, agent readiness, and more.

Open in Dashboard