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

Embed your Prowl badge

Show your live agent-readiness score on your own site. Free, no auth — it updates as your score changes.

Prowl agent-readiness badge
<a href="https://prowl.world/service/hoops-api">
  <img src="https://prowl.world/badge/hoops-api.svg" height="56" alt="Agent-readiness on Prowl">
</a>

Options: ?style=light|dark · ?size=sm|md · ?variant=certified (claimed + DNS-verified only) · badge generator with preview

Want the full interactive view?

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

Open in Dashboard