02 / MCP
Tools with a Bearer key
Connect to https://api.csnb.net/mcp with a separately issued CSNB key. Tools are vehicle_lookup and coverage. Vehicle lookup accepts country, plate (or VIN) and state.
Developer guide
Australia is live. Choose your access route, make a request and use the response metadata to decide how the result fits your workflow.
01 / Application integration
Subscribe to the AU Rego Check listing and use the API key supplied by RapidAPI.
regoOrVin and an Australian state for plate lookups._meta.These snippets describe the RapidAPI route. MCP and x402 use different authentication and parameter names. Keep API keys on your server.
GET https://au-rego-check.p.rapidapi.com/rego-check
Headers:
x-rapidapi-host: au-rego-check.p.rapidapi.com
x-rapidapi-key: YOUR_API_KEY
Query:
regoOrVin registration plate or 17-character VIN
state NSW | VIC | QLD | WA | SA | TAS | ACT | NT
required for a plate; optional for a VINcurl --get 'https://au-rego-check.p.rapidapi.com/rego-check' \
--data-urlencode 'regoOrVin=1ABC123' \
--data-urlencode 'state=VIC' \
--header 'x-rapidapi-host: au-rego-check.p.rapidapi.com' \
--header 'x-rapidapi-key: YOUR_API_KEY'const params = new URLSearchParams({
regoOrVin: "1ABC123", state: "VIC"
});
const response = await fetch(
`https://au-rego-check.p.rapidapi.com/rego-check?${params}`,
{ headers: {
"x-rapidapi-host": "au-rego-check.p.rapidapi.com",
"x-rapidapi-key": process.env.RAPIDAPI_KEY
} }
);
if (!response.ok) throw new Error(`HTTP ${response.status}`);
const vehicle = await response.json();
if (vehicle.make == null) {
console.log(vehicle._meta?.reason ?? "No vehicle identity");
} else {
console.log(vehicle.year, vehicle.make, vehicle.model);
}import os
import requests
response = requests.get(
"https://au-rego-check.p.rapidapi.com/rego-check",
headers={
"x-rapidapi-host": "au-rego-check.p.rapidapi.com",
"x-rapidapi-key": os.environ["RAPIDAPI_KEY"],
},
params={"regoOrVin": "1ABC123", "state": "VIC"},
timeout=30,
)
response.raise_for_status()
vehicle = response.json()
if vehicle.get("make") is None:
print(vehicle.get("_meta", {}).get("reason", "No match"))
else:
print(vehicle["year"], vehicle["make"], vehicle["model"])Example inputs are illustrative and do not guarantee a matching vehicle. Also consult the current endpoint reference in your RapidAPI subscription.
02 / MCP
Connect to https://api.csnb.net/mcp with a separately issued CSNB key. Tools are vehicle_lookup and coverage. Vehicle lookup accepts country, plate (or VIN) and state.
03 / x402 HTTP
Request /agent/check with country=AU, plate and state. The unpaid response provides x402 v2 terms. After authorization is verified and the lookup succeeds, payment is settled for 0.25 USDC on Base.
RapidAPI keys, CSNB MCP keys and x402 authorizations are separate credentials. Paying for one HTTP lookup does not issue an MCP key or increase its quota.
Response contract
RapidAPI returns the vehicle object directly. x402 wraps it in {vehicle, payment}; MCP returns it inside tool content.
| Field | Type | Meaning |
|---|---|---|
search, state | string | Your lookup input and state value. Use an uppercase state code for a consistent request. |
year, make, model | string | null | Vehicle identity supplied by the lookup provider or parsed from its description. |
vin | string | null | Vehicle identification number when available. |
body, transmission | string | null | Body type and transmission when supplied or derived. |
description | string | null | The provider description. Additional specifications may appear in this text without dedicated fields. |
nvic | string | null | Catalogue identifier for a matched variant, when supplied. |
vehicleValueMin, vehicleValueMax, vehicleMinMarketValue | number | null | Reserved for future use. Currently null; no valuation is provided. |
_meta | object | Result source, provider confidence and, when applicable, an empty-result reason. Confidence is not a calibrated probability. |
Field completeness varies. This is a vehicle identity API, not an owner search, registration-status certificate, finance check or comprehensive history report. Data scope and freshness →
Errors & retries
| Route | Response | What your client should do |
|---|---|---|
| RapidAPI vehicle lookup | 200 with vehicle fields or an empty result | Inspect make and _meta.reason. Reasons include empty_rego, unsupported_state, no_vehicle_found, all_channels_failed and parse_error. |
| Gateway / infrastructure | 403, 429, 5xx and other gateway errors | Handle authorization, access restrictions, rate limits and temporary failures separately. The legacy data envelope does not override these statuses. |
| MCP | 401, JSON-RPC errors or a tool result with isError | Check the CSNB key and quota, then inspect the tool response. |
| x402 HTTP | 402 payment required; 200 settled result | Validate PAYMENT-REQUIRED, authorize with a compatible wallet, then send PAYMENT-SIGNATURE. Save the returned PAYMENT-RESPONSE. |
| x402 in progress | 202 settlement pending or 409 payment processing | Observe Retry-After and retry the same URL and signed payload. Do not authorize another payment while its outcome is uncertain. |
| x402 lookup unavailable | 503 before settlement | No settlement is initiated for that failed lookup. Follow the response and keep the original authorization until its outcome is known. |
Optional compatibility route
Adding payment=transfer to /agent/check selects the CSNB-specific prepaid invoice flow, not standard x402. Pay the exact amount within 15 minutes, including its identifying tail below 0.01 USDC. Poll /agent/poll?id=<invoice-id>, then repeat the lookup with X-CSNB-Invoice.
Only confirmed, timely, exact transfer events can credit an invoice. One event pays one invoice. A timely payment can be reconciled even if polling resumes after the invoice shows expired. An unavailable lookup retains its paid credit, and a completed lookup replays its saved result.
Direct transfers are prepaid and are not automatically refunded. Do not send another transfer to retry a paid invoice. For new integrations, use standard x402.
Full headers, schemas and status codes in OpenAPI →