Locio for agents
The address API as an MCP server: the same four calls as tools, the same key, the same price. One endpoint, and any client that speaks MCP can validate, geocode and look up Australian addresses.
- Endpoint
- https://api.locio.com.au/mcp
- Transport
- Streamable HTTP, stateless, JSON responses.
- Sign in
- A secret key as
Authorization: Bearer, from your Keys tab. Or OAuth: hosted agents register themselves, send you here to sign in and allow, and the connection appears on your Keys tab as a key you can revoke at any time. - Cost
- The same units as the endpoints, from the same plan. Listing tools costs nothing. Pricing.
Connect
Pick your client. Paste a key in the box and the samples fill it in, or let the hosted clients use OAuth and never see a key at all.
Authorise
Paste a key to run the examples below against it. It stays in this browser tab and is never sent anywhere except to this API.
No key here? Run uses your own account instead. Create a key.
claude mcp add --transport http locio https://api.locio.com.au/mcp \ --header "Authorization: Bearer lc_live_..." # Or, checked into a project for the whole team, with the key from the environment: # .mcp.json # { # "mcpServers": { # "locio": { # "type": "http", # "url": "https://api.locio.com.au/mcp", # "headers": { "Authorization": "Bearer ${LOCIO_KEY}" } # } # } # }
# No key to paste. Customize → Connectors → Add connector, and give it: https://api.locio.com.au/mcp # Claude registers itself, sends you to locio.com.au to sign in and allow, # and the connection appears on your Keys tab as a key you can revoke.
# Settings → Security → Developer mode, then Settings → Plugins → + https://api.locio.com.au/mcp # Choose OAuth. ChatGPT registers itself, sends you to locio.com.au to sign in # and allow, and the connection appears on your Keys tab as a key you can revoke. # A pasted key works too: choose Token and paste lc_live_...
// .cursor/mcp.json
{
"mcpServers": {
"locio": {
"type": "http",
"url": "https://api.locio.com.au/mcp",
"headers": { "Authorization": "Bearer lc_live_..." }
}
}
}// .vscode/mcp.json (the key is asked for once and kept by VS Code, never written to disk)
{
"servers": {
"locio": {
"type": "http",
"url": "https://api.locio.com.au/mcp",
"headers": { "Authorization": "Bearer ${input:locio-key}" }
}
},
"inputs": [
{ "id": "locio-key", "type": "password", "description": "Locio secret key" }
]
}# The Messages API connects to the server itself: no tool loop to write. import anthropic client = anthropic.Anthropic() response = client.beta.messages.create( model="claude-opus-5", max_tokens=16000, betas=["mcp-client-2025-11-20"], mcp_servers=[{ "type": "url", "url": "https://api.locio.com.au/mcp", "name": "locio", "authorization_token": "lc_live_...", }], tools=[{"type": "mcp_toolset", "mcp_server_name": "locio"}], messages=[{"role": "user", "content": "Is 1 gorge rd sydenhum nsw a real address? Give me its G-NAF id."}], ) print(response.content[-1].text)
Tools
Four, read only, each the same call as its endpoint. The tool descriptions carry the guidance the reference gives a person: store the G-NAF id, not the text.
| Tool | Does | Input | Cost |
|---|---|---|---|
| search_addresses | Suggest resolved addresses as someone types. | q, limit | 1 unit |
| resolve_address | Validate, geocode and parse one address in one call. matched: false when it does not exist. | q | 1 unit |
| similar_addresses | The nearest real addresses to a misspelled one. | q, limit | 3 units |
| get_address | Read an address back by the G-NAF id you stored. | gnaf_pid | 1 unit |
Guides
- Use Locio from Claude Code, Claude Desktop and Cursor
- Give an agent address tools with the Anthropic API
- Clean a spreadsheet of addresses with an agent
Protected resource metadata is at https://api.locio.com.au/.well-known/oauth-protected-resource and the authorization server's at https://api.locio.com.au/.well-known/oauth-authorization-server: dynamic client registration, PKCE with S256, public clients only. A client that cannot do OAuth uses a key.