Live used-vehicle stock from named New Zealand dealer groups, read off those groups’ own yard websites. Roughly 30,000 live listings across 200+ dealer yards, New Zealand-wide. Not Trade Me, not AutoTrader, not a national roster.
https://stock.yardstock.nz/mcp
Transport streamable-http
Health https://stock.yardstock.nz/health
You can connect with no credentials. Anonymous callers get initialize, tools/list and all three tools, with two limits: search_stock returns at most 5 results per call whatever limit you send, and vin/plate are omitted. An API key lifts both — send it as Authorization: Bearer <key> or X-Api-Key: <key>. Keys are issued manually for now; ask via yardstock.nz.
| Tool | Arguments | Returns |
|---|---|---|
coverage |
none | Which dealer groups are in the index — legal_name, listing_count, cities[]. Call it first. |
search_stock |
make, model, year_min, year_max, price_min_nzd, price_max_nzd, city, fuel, limit (default 20, max 50, anonymous 5) |
results[] sorted by price ascending: source_url, year, make, model, price_nzd, odometer_km, fuel, yard_label, city, trader_name, last_seen. |
get_listing |
source_url (required) |
One listing, plus vin/plate when stored and keyed. |
Every response carries a coverage block — groups_with_stock, live_listings, last_seen_max, not_included[]. Agents should never invent stock for a group that is not listed there.
claude mcp add --transport http yardstock https://stock.yardstock.nz/mcpWith a key: append --header "Authorization: Bearer <key>"
Add it as a custom connector — one click:
Or manually: Settings → Connectors → Add custom connector, name YardStock, URL https://stock.yardstock.nz/mcp.
Or edit ~/.cursor/mcp.json:
{
"mcpServers": {
"yardstock": {
"url": "https://stock.yardstock.nz/mcp"
}
}
}Or from a terminal:
code --add-mcp '{"name":"yardstock","type":"http","url":"https://stock.yardstock.nz/mcp"}'YardStock, MCP server URL https://stock.yardstock.nz/mcp.Authorization: Bearer <key> for full access.YardStock, server URL https://stock.yardstock.nz/mcp, transport HTTP (streamable).Authorization: Bearer <key>.YardStock, description “Live used-car stock on named NZ dealer yards”.https://stock.yardstock.nz/mcp, transport Streamable HTTP.Authorization header as Bearer <key>.No client needed — the endpoint is a plain JSON-RPC 2.0 POST. These work anonymously; add -H "Authorization: Bearer <key>" for full results.
curl -sS https://stock.yardstock.nz/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'curl -sS https://stock.yardstock.nz/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call",
"params":{"name":"coverage","arguments":{}}}'curl -sS https://stock.yardstock.nz/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":3,"method":"tools/call",
"params":{"name":"search_stock","arguments":{
"make":"Ford","model":"Ranger",
"price_max_nzd":30000,"city":"Auckland","limit":20}}}'curl -sS https://stock.yardstock.nz/mcp \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_KEY' \
-d '{"jsonrpc":"2.0","id":4,"method":"tools/call",
"params":{"name":"get_listing","arguments":{
"source_url":"https://example.co.nz/vehicle/12345"}}}'curl -sS https://stock.yardstock.nz/health
# {"ok": true, "service": "nz-yard-stock"}One origin in New Zealand behind Cloudflare. Keep it under about 60 requests per minute. Back off once on 429 or 5xx. Fetching a source_url to show a user is expected; crawling the dealer sites is not — that is what this server is for.