Prowl
40/100
prowl
Benchmarked Sep 29, 2026

Sonar Trading

Currency Authority: Exchange Rate of 1453 country currencies and crypto currencies

authcryptoapi crypto_app api_key_header
Benchmark Your API

Score Breakdown

Latency8/10
Token Efficiency8/10
Auth Simplicity5/10
Documentation4/10
Consistency2/10
First-Try Success2/10
Parseability2/10
Error Clarity1/10

Benchmark Analysis Log

Full LLM thinking from the 4-phase benchmark pipeline.

Analyze
{
  "service_type": "crypto_app",
  "base_url": "https://sonar.trading",
  "auth_method": "api_key_header",
  "auth_config": {
    "header_name": "X-API-Key",
    "key_location": "header"
  },
  "endpoints": [
    {
      "path": "/api/latest",
      "method": "GET",
      "purpose": "get latest exchange rates for all supported currencies"
    },
    {
      "path": "/api/latest/{base}",
      "method": "GET",
      "purpose": "get latest exchange rates for a specific base currency"
    },
    {
      "path": "/api/convert",
      "method": "GET",
      "purpose": "convert amount between currencies"
    },
    {
      "path": "/api/historical/{date}",
      "method": "GET",
      "purpose": "get historical exchange rates for a specific date"
    },
    {
      "path": "/api/currencies",
      "method": "GET",
      "purpose": "list all supported currencies (fiat and crypto)"
    }
  ],
  "pricing_model": {
    "type": "tiered",
    "details": {
      "free_tier": {
        "requests_per_month": 1000,
        "features": ["latest rates", "basic conversion"]
      },
      "pro_tier": {
        "price_usd_per_month": 49,
        "requests_per_month": 100000,
        "features": ["historical data", "priority support"]
      },
      "enterprise_tier": {
        "price_usd_per_month": 499,
        "requests_per_month": 1000000,
        "features": ["dedicated support", "SLA", "bulk conversion"]
      }
    }
  },
  "rate_limits": {
    "rpm": 60
  },
  "capabilities": [
    "portfolio",
    "exchange_rates",
    "currency_conversion",
    "historical_data"
  ],
  "crypto_specifics": {
    "supported_chains": [],
    "token_count": 0,
    "has_websocket": false,
    "has_orderbook": false,
    "fee_structure": "none",
    "security_features": [
      "api_key_authentication",
      "https_only"
    ]
  }
}
Plan
```json
{
  "tests": [
    {
      "name": "auth_missing_key_latest",
      "endpoint": "/api/latest",
      "method": "GET",
      "headers": {},
      "payload": {},
      "expected_status": 401,
      "intent": "auth",
      "expected_behavior": "Rejects request without X-API-Key header, returns 401/403 with structured error",
      "metrics": ["status_code", "latency"],
      "validation": {"field": "error", "type": "string", "min_length": 1}
    },
    {
      "name": "auth_invalid_key_latest",
      "endpoint": "/api/latest",
      "method": "GET",
      "headers": {"X-API-Key": "invalid_key_000000000000"},
      "payload": {},
      "expected_status": 401,
      "intent": "auth",
      "expected_behavior": "Rejects request with a bogus API key",
      "metrics": ["status_code", "latency"],
      "validation": {"field": "error", "type": "string", "min_length": 1}
    },
    {
      "name": "happy_latest_all_rates",
      "endpoint": "/api/latest",
      "method": "GET",
      "headers": {"X-API-Key": "{{API_KEY}}"},
      "payload": {},
      "expected_status": 200,
      "intent": "happy_path",
      "expected_behavior": "Returns latest exchange rates for all supported currencies",
      "metrics": ["latency", "status_code", "payload_size", "rate_limit_headers"],
      "validation": {"field": "rates", "type": "object", "min_length": 1}
    },
    {
      "name": "happy_latest_single_base_usd",
      "endpoint": "/api/latest/USD",
      "method": "GET",
      "headers": {"X-API-Key": "{{API_KEY}}"},
      "payload": {},
      "expected_status": 200,
      "intent": "happy_path",
      "expected_behavior": "Returns latest rates with USD as base currency",
      "metrics": ["latency", "status_code", "price_accuracy"],
      "validation": {"field": "base", "type": "string", "equals": "USD"}
    },
    {
      "name": "happy_latest_single_base_btc",
      "endpoint": "/api/latest/BTC",
      "method": "GET",
      "headers": {"X-API-Key": "{{API_KEY}}"},
      "payload": {},
      "expected_status": 200,
      "intent": "happy_path",
      "expected_behavior": "Returns latest rates with BTC (crypto) as base currency",
      "metrics": ["latency", "status_code", "price_accuracy"],
      "validation": {"field": "base", "type": "string", "equals": "BTC"}
    },
    {
      "name": "happy_convert_usd_to_eur",
      "endpoint": "/api/convert",
      "method": "GET",
      "headers": {"X-API-Key": "{{API_KEY}}"},
      "payload": {"from": "USD", "to": "EUR", "amount": 100},
      "expected_status": 200,
      "intent": "happy_path",
      "expected_behavior": "Converts 100 USD to EUR and returns numeric result",
      "metrics": ["latency", "status_code", "price_accuracy"],
      "validation": {"field": "result", "type": "number", "min": 0}
    },
    {
      "name": "happy_convert_btc_to_usd",
      "endpoint": "/api/convert",
      "method": "GET",
      "headers": {"X-API-Key": "{{API_KEY}}"},
      "payload": {"from": "BTC", "to": "USD", "amount": 1},
      "expected_status": 200,
      "intent": "happy_path",
      "expected_behavior": "Converts 1 BTC to USD and returns numeric result in plausible range",
      "metrics": ["latency", "status_code", "price_accuracy"],
      "validation": {"field": "result", "type": "number", "min": 0}
    },
    {
      "name": "happy_list_currencies",
      "endpoint": "/api/currencies",
      "method": "GET",
      "headers": {"X-API-Key": "{{API_KEY}}"},
      "payload": {},
      "expected_status": 200,
      "intent": "happy_path",
      "expected_behavior": "Lists supported fiat and crypto currencies, count in the hundreds/thousands",
      "metrics": ["latency", "status_code"],
      "validation": {"field": "currencies", "type": "array", "min_length": 50}
    },
    {
      "name": "happy_historical_recent_date",
      "endpoint": "/api/historical/2024-01-15",
      "method": "GET",
      "headers": {"X-API-Key": "{{API_KEY}}"},
      "payload": {},
      "expected_status": 200,
      "intent": "happy_path",
      "expected_behavior": "Returns historical rates for the given date (pro tier feature)",
      "metrics": ["latency", "status_code", "price_accuracy"],
      "validation": {"field": "rates", "type": "object", "min_length": 1}
    },
    {
      "name": "validation_convert_missing_amount",
      "endpoint": "/api/convert",
      "method": "GET",
      "headers": {"X-API-Key": "{{API_KEY}}"},
      "payload": {"from": "USD", "to": "EUR"},
      "expected_status": 400,
      "intent": "validation",
      "expected_behavior": "Rejects conversion request missing required amount parameter",
      "metrics": ["status_code", "latency"],
      "validation": {"field": "error", "type": "string", "min_length": 1}
    },
    {
      "name": "validation_convert_invalid_currency",
      "endpoint": "/api/convert",
      "method": "GET",
      "headers": {"X-API-Key": "{{API_KEY}}"},
      "payload": {"from": "USD", "to": "ZZZINVALID", "amount": 10},
      "expected_status":
Execute

0/15 tests passed

TestEndpointStatusLatency
auth_missing_key_latestGET /api/latestNone684ms
auth_invalid_key_latestGET /api/latestNone128ms
happy_latest_all_ratesGET /api/latestNone98ms
happy_latest_single_base_usdGET /api/latest/USDNone117ms
happy_latest_single_base_btcGET /api/latest/BTCNone113ms
happy_convert_usd_to_eurGET /api/convertNone97ms
happy_convert_btc_to_usdGET /api/convertNone117ms
happy_list_currenciesGET /api/currenciesNone112ms
happy_historical_recent_dateGET /api/historical/2024-01-15None99ms
validation_convert_missing_amountGET /api/convertNone112ms
Interpret
{
  "overall": 38,
  "dimensions": {
    "token_efficiency": 8.0,
    "first_try_success": 2.0,
    "response_parseability": 2.0,
    "error_clarity": 1.0,
    "doc_quality": 4.0,
    "auth_simplicity": 5.0,
    "latency": 8.0,
    "consistency": 2.0
  },
  "pricing_normalized": {
    "maker_fee_bps": null,
    "taker_fee_bps": null,
    "withdrawal_fee_usd": null,
    "free_tier_requests": null
  },
  "issues": [
    "All 15 tests returned null status_code — no endpoint produced a usable HTTP response, indicating the service is unreachable or fundamentally broken",
    "No response_preview captured for any test, so no market data, prices, or numeric fields could be verified",
    "Auth tests (missing/invalid key) returned null status too — cannot distinguish auth failures from connectivity failures",
    "Security headers missing entirely on all responses including security_headers_check",
    "Zero error clarity: validation tests for invalid currency, negative amount, bad date all returned null with empty error strings",
    "Cannot assess response parseability, consistency, or staleness without any payloads"
  ],
  "recommendations": [
    "Verify service availability and fix connectivity — 100% null status codes makes the API unusable for agents",
    "Return proper HTTP status codes (200/400/401/404) so agents can branch on outcomes",
    "Provide structured JSON error bodies with error codes and human-readable messages for invalid pairs, amounts, and dates",
    "Add security headers (HSTS, X-Content-Type-Options, CSP)",
    "Document auth requirements explicitly — unclear whether /api/latest is public or key-gated",
    "Ensure prices/rates return as clean numeric floats, not strings, with a timestamp field to detect staleness",
    "Publish a documented fee schedule and rate limits if this is a paid/limited service"
  ]
}

Agent Readiness

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