Prowl
40/100
prowl
Benchmarked Oct 15, 2026

Block Lottos

On-chain lottery, draw history, jackpot and advertising endpoints

cryptoai crypto_app public
Benchmark Your API

Score Breakdown

Auth Simplicity8/10
Latency6/10
Consistency5/10
Documentation5/10
Token Efficiency4/10
Parseability4/10
First-Try Success3/10
Error Clarity2/10

Benchmark Analysis Log

Full LLM thinking from the 4-phase benchmark pipeline.

Analyze
{
  "service_type": "crypto_app",
  "base_url": "https://blocklottos.com",
  "auth_method": "none",
  "auth_config": {},
  "endpoints": [
    {"path": "/openapi.json", "method": "GET", "purpose": "openapi specification"}
  ],
  "pricing_model": {"type": "free", "details": {}},
  "rate_limits": {},
  "capabilities": ["lottery", "draw_history", "jackpot", "advertising"],
  "crypto_specifics": {
    "supported_chains": [],
    "token_count": 0,
    "has_websocket": false,
    "has_orderbook": false,
    "fee_structure": "unknown",
    "security_features": []
  }
}
Plan
```json
{
  "tests": [
    {
      "name": "fetch_openapi_spec",
      "endpoint": "/openapi.json",
      "method": "GET",
      "headers": {},
      "payload": {},
      "expected_status": 200,
      "intent": "happy_path",
      "expected_behavior": "Returns the OpenAPI specification document describing available endpoints",
      "metrics": ["latency", "status_code", "accuracy"],
      "validation": {"field": "openapi", "type": "string", "min_length": 1}
    },
    {
      "name": "openapi_has_paths",
      "endpoint": "/openapi.json",
      "method": "GET",
      "headers": {},
      "payload": {},
      "expected_status": 200,
      "intent": "happy_path",
      "expected_behavior": "OpenAPI spec contains a non-empty 'paths' object enumerating endpoints",
      "metrics": ["accuracy"],
      "validation": {"field": "paths", "type": "object", "min_length": 1}
    },
    {
      "name": "security_headers_check",
      "endpoint": "/",
      "method": "GET",
      "headers": {},
      "payload": {},
      "expected_status": 200,
      "intent": "happy_path",
      "expected_behavior": "Root endpoint responds and response includes security headers (HSTS or CSP or X-Frame-Options)",
      "metrics": ["status_code", "latency"],
      "validation": {"field": "headers.strict-transport-security", "type": "string", "min_length": 1}
    },
    {
      "name": "unknown_endpoint_error",
      "endpoint": "/v1/definitely-not-a-real-endpoint-xyz",
      "method": "GET",
      "headers": {},
      "payload": {},
      "expected_status": 404,
      "intent": "validation",
      "expected_behavior": "Unknown path is cleanly rejected with 404 rather than 500 or hang",
      "metrics": ["status_code", "latency"],
      "validation": {"field": "status", "type": "number", "min_length": 1}
    },
    {
      "name": "invalid_draw_id_validation",
      "endpoint": "/v1/draws/not-a-number",
      "method": "GET",
      "headers": {},
      "payload": {},
      "expected_status": 400,
      "intent": "validation",
      "expected_behavior": "Malformed draw identifier is rejected with a 4xx error, not a 5xx",
      "metrics": ["status_code", "accuracy"],
      "validation": {"field": "status", "type": "number", "min_length": 1}
    },
    {
      "name": "invalid_trading_pair_validation",
      "endpoint": "/v1/ticker/INVALID_PAIR_ZZZ",
      "method": "GET",
      "headers": {},
      "payload": {},
      "expected_status": 400,
      "intent": "validation",
      "expected_behavior": "Unsupported pair/token is rejected with structured 4xx error describing the bad input",
      "metrics": ["status_code", "accuracy"],
      "validation": {"field": "status", "type": "number", "min_length": 1}
    },
    {
      "name": "invalid_http_method",
      "endpoint": "/openapi.json",
      "method": "POST",
      "headers": {"Content-Type": "application/json"},
      "payload": {"test": true},
      "expected_status": 405,
      "intent": "validation",
      "expected_behavior": "POST to a GET-only endpoint returns 405 Method Not Allowed rather than 500",
      "metrics": ["status_code", "accuracy"],
      "validation": {"field": "status", "type": "number", "min_length": 1}
    }
  ],
  "pricing_probes": [
    {
      "name": "verify_free_tier_no_auth",
      "description": "Service declares free pricing with no auth. Confirm public endpoint returns 2xx without any Authorization header.",
      "endpoint": "/openapi.json",
      "method": "GET",
      "payload": {},
      "check": "response.status == 200 and no 401/403 returned when Authorization header is absent"
    },
    {
      "name": "verify_no_usage_billing_headers",
      "description": "Since pricing is 'free' with empty details, confirm no unexpected billing/usage/cost headers are present claiming metered usage.",
      "endpoint": "/openapi.json",
      "method": "GET",
      "payload": {},
      "check": "response headers should NOT include x-usage, x-cost, or x-price headers implying paid metering"
    }
  ],
  "stress_profile": {
    "concurrent_requests": 5,
    "duration_seconds": 10,
    "ramp_up": true
  }
}
```
Execute

4/7 tests passed

TestEndpointStatusLatency
fetch_openapi_specGET /openapi.json200619ms
openapi_has_pathsGET /openapi.json200208ms
security_headers_checkGET /200121ms
unknown_endpoint_errorGET /v1/definitely-not-a-real-endpoint-xyz404120ms
invalid_draw_id_validationGET /v1/draws/not-a-number404119ms
invalid_trading_pair_validationGET /v1/ticker/INVALID_PAIR_ZZZ404121ms
invalid_http_methodPOST /openapi.json200115ms
Interpret
{
  "overall": 34,
  "dimensions": {
    "token_efficiency": 4.0,
    "first_try_success": 3.0,
    "response_parseability": 4.0,
    "error_clarity": 2.0,
    "doc_quality": 5.0,
    "auth_simplicity": 8.0,
    "latency": 6.0,
    "consistency": 5.0
  },
  "pricing_normalized": {
    "maker_fee_bps": null,
    "taker_fee_bps": null,
    "withdrawal_fee_usd": null,
    "free_tier_requests": null
  },
  "issues": [
    "Service is a lottery/advertising API, not a crypto market-data service; market-data scoring criteria (ticker, prices, trading pairs, fees) do not apply.",
    "All non-/openapi.json paths (/, /v1/definitely-not-a-real-endpoint-xyz, /v1/draws/not-a-number, /v1/ticker/INVALID_PAIR_ZZZ) return HTML instead of JSON, causing CONTENT_TYPE_MISMATCH errors.",
    "Error responses return full HTML pages with Google Tag Manager/gtag scripts instead of structured JSON error bodies; agents cannot reliably parse error reasons.",
    "Invalid draw ID returns generic 404 HTML rather than a clear validation error (e.g., 'draw_id must be an integer').",
    "Root path '/' returns a marketing HTML page rather than API metadata or a JSON index.",
    "Invalid HTTP method test on /openapi.json returned 200, indicating the test may not have actually exercised a non-GET method or the server does not enforce method restrictions."
  ],
  "recommendations": [
    "Ensure all documented API endpoints (draws, jackpot, advertising, purchase flow) return application/json; route 404s to a JSON error handler.",
    "Add a JSON error schema: {error, code, message, details} for 400/404/422/429/500 responses with actionable messages (invalid pair, invalid draw id, rate limit).",
    "Disable or selectively serve the marketing SPA for API routes so unknown paths don't fall through to HTML.",
    "Return 405 Method Not Allowed with JSON body for unsupported HTTP methods instead of 200.",
    "If a market-data or trading capability exists (lottery pricing/tickets), expose ticker/jackpot endpoints with numeric JSON fields (price, jackpot_amount, currency, timestamp).",
    "Publish fee/rate-limit docs for the agent purchase flow (non-custodial Base ticket purchases) so agents know costs before transacting.",
    "Add caching/ETag guidance for /openapi.json since first call took 619ms."
  ]
}

Agent Readiness

x402 Payments
Not supported
Streaming
No
Sandbox
None
Agent Auth
public
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/block-lottos">
  <img src="https://prowl.world/badge/block-lottos.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