Full LLM thinking from the 4-phase benchmark pipeline.
```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"]
}
}
``````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
}
}
```0/6 tests passed
| Test | Endpoint | Status | Latency |
|---|---|---|---|
| test_list_trading_pairs | GET /v1/markets | None | 12ms |
| test_price_data | GET /v1/ticker | None | 11ms |
| test_invalid_authentication | GET /v1/markets | None | 10ms |
| test_missing_authentication | GET /v1/markets | None | 10ms |
| test_rate_limit_headers | GET /v1/markets | None | 11ms |
| test_invalid_trading_pair_error | GET /v1/ticker | None | 16ms |
```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."]
}
```Show your live agent-readiness score on your own site. Free, no auth — it updates as your score changes.
<a href="https://prowl.world/service/gemini">
<img src="https://prowl.world/badge/gemini.svg" height="56" alt="Agent-readiness on Prowl">
</a>
See operational metrics, LLM evaluations, agent readiness, and more.
Open in Dashboard