Local Data Node Base
Live data

Real-Time Local Ground Truth for Autonomous AI Agents.

Clean, structured JSON on building permits, public safety and more across the Research Triangle, NC, served straight to AI agents. No API keys. No subscriptions. Just $0.003 USDC per request, paid on Base.

Explore Live Catalog
Live feeds–
Records available–
Last updated–
Live feeds · Research Triangle, NCView catalog
  • Loading…

What the data shows

Every record is classified into the same categories in every city, and history builds with each refresh. Agents can filter by category with ?kind=solar.

Locations rounded to ~100 m. Exact addresses are in the paid feeds.

How it works

1Agent asks for data

GET /v1/data/rdu/raleigh-permits
→ HTTP/1.1 402 Payment Required

2Agent pays $0.003 USDC

await pay(url)
// @x402/fetch signs a USDC
// transfer on Base and retries

3Agent gets clean JSON

HTTP/1.1 200 OK
{ "records": [ … ] }
Try step 1 live
$ 

Live Data Catalog

Auto-refreshes every 60s

Why Local Data Node

Always fresh

Feeds refresh on a schedule from official sources. Every response shows exactly when the data was last updated.

Fast, every time

Responses come from a global cache in milliseconds, so your agent never waits on the original source.

No keys, no signup

Any agent with a Base wallet can call it. Pay $0.003 USDC per request and nothing else.

Never charged for errors

If a feed is unavailable or a request is invalid, no payment is taken.

Built for agents

MCP manifest and OpenAPI spec included, so Claude, LangChain and AutoGPT can discover and call feeds on their own.

Growing coverage

New feeds and regions are added regularly, starting with the Research Triangle, NC.

Integrate

Point Claude, LangChain or AutoGPT at the MCP manifest for automatic discovery, or call the API directly from any agent with a Base wallet.

const pay = wrapFetchWithPaymentFromConfig(fetch, {
  schemes: [{ network: 'eip155:*', client: new ExactEvmScheme(wallet) }]
});
const res = await pay('/v1/data/rdu/raleigh-permits?q=capital');
const { records } = await res.json();