30
/100
prowl
Benchmarked Apr 06, 2026

Gemini

Cryptocurrencies Exchange

crypto crypto_app
Benchmark Your API

Score Breakdown

Latency 10/10
Auth Simplicity 10/10
Token Efficiency 5/10
Documentation 4/10
Error Clarity 2/10
Consistency 0/10
First-Try Success 0/10
Parseability 0/10

Benchmark Analysis Log

Full LLM thinking from the 4-phase benchmark pipeline.

Analyze
```json
{
  "service_type": "crypto_app",
  "base_url": "https://api.exchange.com",
  "auth_method": "api_key_header",
  "auth_config": {},
  "endpoints": [
    {"path": "/v1/markets", "method": "GET", "purpose": "list trading pairs"},
    {"path": "/v1/ticker", "method": "GET", "purpose": "price data"}
  ],
  "pricing_model": {"type": "per_request", "details": {}},
  "rate_limits": {"rpm": 120},
  "capabilities": ["spot_trading", "futures", "staking", "bridge", "portfolio"],
  "crypto_specifics": {
    "supported_chains": ["ethereum", "bitcoin", "solana"],
    "token_count": 500,
    "has_websocket": true,
    "has_orderbook": true,
    "fee_structure": "maker/taker",
    "security_features": ["2fa", "withdrawal_whitelist", "cold_storage"]
  }
}
```
Plan
```json
{
  "tests": [
    {
      "name": "test_list_trading_pairs",
      "endpoint": "/v1/markets",
      "method": "GET",
      "headers": {
        "Authorization": "Bearer <api_key>"
      },
      "payload": {},
      "expected_status": 200,
      "expected_behavior": "Returns list of trading pairs",
      "metrics": ["latency", "status_code"],
      "validation": {"field": "data", "type": "array", "min_length": 1}
    },
    {
      "name": "test_price_data",
      "endpoint": "/v1/ticker",
      "method": "GET",
      "headers": {
        "Authorization": "Bearer <api_key>"
      },
      "payload": {},
      "expected_status": 200,
      "expected_behavior": "Returns price data for trading pairs",
      "metrics": ["latency", "accuracy", "status_code"],
      "validation": {"field": "data", "type": "object"}
    },
    {
      "name": "test_invalid_authentication",
      "endpoint": "/v1/markets",
      "method": "GET",
      "headers": {
        "Authorization": "Bearer invalid_key"
      },
      "payload": {},
      "expected_status": 401,
      "expected_behavior": "Returns unauthorized error for invalid API key",
      "metrics": ["status_code"],
      "validation": {"field": "error", "type": "string"}
    },
    {
      "name": "test_missing_authentication",
      "endpoint": "/v1/markets",
      "method": "GET",
      "headers": {},
      "payload": {},
      "expected_status": 401,
      "expected_behavior": "Returns unauthorized error for missing API key",
      "metrics": ["status_code"],
      "validation": {"field": "error", "type": "string"}
    },
    {
      "name": "test_rate_limit_headers",
      "endpoint": "/v1/markets",
      "method": "GET",
      "headers": {
        "Authorization": "Bearer <api_key>"
      },
      "payload": {},
      "expected_status": 200,
      "expected_behavior": "Includes rate limit headers",
      "metrics": ["status_code"],
      "validation": {"field": "headers", "type": "object", "required_fields": ["X-RateLimit-Limit", "X-RateLimit-Remaining"]}
    },
    {
      "name": "test_invalid_trading_pair_error",
      "endpoint": "/v1/ticker",
      "method": "GET",
      "headers": {
        "Authorization": "Bearer <api_key>"
      },
      "payload": {
        "symbol": "INVALID_PAIR"
      },
      "expected_status": 400,
      "expected_behavior": "Returns error for invalid trading pair",
      "metrics": ["status_code"],
      "validation": {"field": "error", "type": "string"}
    }
  ],
  "pricing_probes": [
    {
      "name": "verify_request_pricing",
      "description": "Ensuring each request is logged as per pricing model",
      "endpoint": "/v1/ticker",
      "method": "GET",
      "headers": {
        "Authorization": "Bearer <api_key>"
      },
      "payload": {},
      "check": "response.headers['X-Request-Count'] should increment with each call"
    }
  ],
  "stress_profile": {
    "concurrent_requests": 5,
    "duration_seconds": 10,
    "ramp_up": true
  }
}
```
Execute

0/6 tests passed

TestEndpointStatusLatency
test_list_trading_pairsGET /v1/marketsNone12ms
test_price_dataGET /v1/tickerNone11ms
test_invalid_authenticationGET /v1/marketsNone10ms
test_missing_authenticationGET /v1/marketsNone10ms
test_rate_limit_headersGET /v1/marketsNone11ms
test_invalid_trading_pair_errorGET /v1/tickerNone16ms
Interpret
```json
{
  "overall": 20,
  "dimensions": {
    "token_efficiency": 5.0,
    "first_try_success": 0.0,
    "response_parseability": 0.0,
    "error_clarity": 2.0,
    "doc_quality": 4.0,
    "auth_simplicity": 10.0,
    "latency": 10.0,
    "consistency": 0.0
  },
  "pricing_normalized": {
    "maker_fee_bps": null,
    "taker_fee_bps": null,
    "withdrawal_fee_usd": null,
    "free_tier_requests": null
  },
  "issues": ["service_unreachable", "missing_security_headers"],
  "recommendations": ["Ensure domain and service are correctly configured and accessible.", "Provide detailed error messages for better diagnostics."]
}
```

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/gemini">
  <img src="https://prowl.world/badge/gemini.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