Postcode lookup & Geolocation for the UK
Full LLM thinking from the 4-phase benchmark pipeline.
```json
{
"service_type": "rest_api",
"base_url": "https://api.postcodes.io",
"auth_method": "none",
"auth_config": {
"header": "",
"prefix": ""
},
"endpoints": [
{
"path": "/postcodes/{postcode}",
"method": "GET",
"purpose": "Lookup a postcode",
"params": {
"postcode": {
"type": "string",
"required": true
}
},
"response_format": "json",
"is_primary": true
},
{
"path": "/postcodes",
"method": "GET",
"purpose": "Autocomplete search for a postcode or return nearest postcodes for a given geolocation",
"params": {
"query": {
"type": "string",
"required": false
},
"limit": {
"type": "integer",
"required": false
},
"longitude": {
"type": "number",
"required": false
},
"latitude": {
"type": "number",
"required": false
}
},
"response_format": "json",
"is_primary": false
}
],
"pricing_model": {
"type": "free_tier",
"details": {},
"free_tier": {
"requests": null,
"period": null
},
"paid_tiers": []
},
"rate_limits": {
"rpm": null,
"tpm": null,
"daily": null,
"concurrent": null
},
"capabilities": ["postcode lookup", "autocomplete search", "geolocation query"],
"agent_readiness": {
"supports_x402": false,
"supports_streaming": false,
"has_sandbox": false,
"sdks": [],
"agent_auth_methods": ["public"]
}
}
``````json
{
"tests": [
{
"name": "basic_connectivity_and_auth",
"endpoint": "/postcodes/EC1A1BB",
"method": "GET",
"headers": {},
"payload": {},
"expected_status": 200,
"expected_behavior": "Returns details for the given postcode",
"metrics": ["latency", "status_code"],
"validation": {"field": "result", "type": "object", "min_length": 1}
},
{
"name": "primary_endpoint_with_realistic_payload",
"endpoint": "/postcodes",
"method": "GET",
"headers": {},
"payload": {"query": "EC1A", "limit": 5},
"expected_status": 200,
"expected_behavior": "Returns a list of suggestions for the given query",
"metrics": ["latency", "accuracy", "status_code"],
"validation": {"field": "result", "type": "array", "min_length": 1}
},
{
"name": "measure_latency_normal_conditions",
"endpoint": "/postcodes/EC1A1BB",
"method": "GET",
"headers": {},
"payload": {},
"expected_status": 200,
"expected_behavior": "Returns quickly with valid response",
"metrics": ["latency"],
"validation": {"field": "result", "type": "object", "min_length": 1}
},
{
"name": "error_handling_bad_input",
"endpoint": "/postcodes/INVALID_POSTCODE",
"method": "GET",
"headers": {},
"payload": {},
"expected_status": 404,
"expected_behavior": "Returns an error for invalid postcode",
"metrics": ["latency", "status_code"],
"validation": {"field": "error", "type": "string", "min_length": 1}
},
{
"name": "error_handling_missing_params",
"endpoint": "/postcodes",
"method": "GET",
"headers": {},
"payload": {"longitude": 0.1276, "latitude": 51.5074},
"expected_status": 200,
"expected_behavior": "Returns nearest postcodes for given geolocation",
"metrics": ["latency", "accuracy", "status_code"],
"validation": {"field": "result", "type": "array", "min_length": 1}
}
],
"pricing_probes": [],
"stress_profile": {
"concurrent_requests": 5,
"duration_seconds": 10,
"ramp_up": true
}
}
```2/5 tests passed
| Test | Endpoint | Status | Latency |
|---|---|---|---|
| basic_connectivity_and_auth | GET /postcodes/EC1A1BB | 200 | 68ms |
| primary_endpoint_with_realistic_payload | GET /postcodes | 400 | 114ms |
| measure_latency_normal_conditions | GET /postcodes/EC1A1BB | 200 | 18ms |
| error_handling_bad_input | GET /postcodes/INVALID_POSTCODE | 404 | 115ms |
| error_handling_missing_params | GET /postcodes | 400 | 113ms |
```json
{
"overall": 77,
"dimensions": {
"token_efficiency": 9.0,
"first_try_success": 8.0,
"response_parseability": 10.0,
"error_clarity": 8.0,
"doc_quality": 7.0,
"auth_simplicity": 10.0,
"latency": 9.0,
"consistency": 9.0
},
"pricing_normalized": {
"cost_per_1k_requests": 0.0,
"cost_per_1m_input_tokens": 0.0,
"cost_per_1m_output_tokens": 0.0,
"free_tier_requests": null,
"estimated_monthly_cost_light": 0.0,
"estimated_monthly_cost_heavy": 0.0
},
"issues": [
{
"severity": "medium",
"detail": "Error message could be more descriptive for better agent guidance.",
"endpoint": "/postcodes"
}
],
"recommendations": [
"Improve error messages to provide more guidance on solving the issue.",
"Enhance documentation with more examples and detailed descriptions for each endpoint."
]
}
```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/postcodesio">
<img src="https://prowl.world/badge/postcodesio.svg" height="56" alt="Agent-readiness on Prowl">
</a>
See operational metrics, LLM evaluations, agent readiness, and more.
Open in Dashboard