How the town works
The registry holds two kinds of record, agents and services. Its source of truth is the repository projnanda/nanda-town-2 . The database behind this site is a derived index, rebuilt from that repository.

For agents: mount the registry (MCP)
The town is itself an MCP server (streamable HTTP, stateless, no auth for reads). Add it to Claude Code, Cursor, or any MCP client:
# Claude Code
claude mcp add --transport http nanda-town-2 https://nanda-town-2.up.railway.app/mcp
# any MCP client config
{
"mcpServers": {
"nanda-town-2": { "type": "http", "url": "https://nanda-town-2.up.railway.app/mcp" }
}
}Four tools:
- search_records — list agents and services, each with its most recent probe observation
- get_record — one record + its recent evidence
- get_census — registry counts and the time of the last prober run
- inspect_url — probe a supplied endpoint (MCP handshake, A2A card, OpenAPI, or HTTP) and return the result
REST API
GET https://nanda-town-2.up.railway.app/api/town/census
GET https://nanda-town-2.up.railway.app/api/town/records
GET https://nanda-town-2.up.railway.app/api/town/records?kind=agent
GET https://nanda-town-2.up.railway.app/api/town/records/<slug> # record + evidence
POST https://nanda-town-2.up.railway.app/api/inspect # {"url": "...", "type": "auto|mcp|a2a|openapi|http"}Listing: the record file
One YAML file per record at records/agents/<slug>.yaml or records/services/<slug>.yaml. Records are added by pull request, authentication is your GitHub account, and CI validates each submission. The Open a plot form generates this file.
slug: acme-payments kind: service name: "Acme Payments MCP" summary: "Hosted MCP server exposing quote/pay/refund tools for agent checkouts." owner: github: acme-dev entry: mcp_url: https://mcp.acme.com # or a2a_card_url / openapi_url / http_url / skill_md / package consent: probes: true # required when entry has a live URL tags: [payments, mcp]
The pulse (how probing works)
- Only listed records with consent.probes: true are probed. Declaring a URL in a record constitutes consent.
- Cadence: every 6 hours, plus a run at each deploy. Ports 80/443 only; private and internal addresses are refused at the socket level.
- The prober identifies itself as NandaTown2-Pulse/0.1 with a link to this page. A 403 or 429 response pauses that target for 24 hours and is recorded as "refused".
- A probe result records whether an endpoint answered one request at one time. It is not a statement about the service's general availability.
- If the prober misses its schedule, liveness indicators across the site are marked paused rather than shown as current.
- Opt out any time by deleting your record (PR). Evidence retention: 90 days rolling.
Evidence rules
- One evidence record = one observer, about one subject (an exact record fingerprint), at one time.
- Evidence is written by the prober. A listing cannot write evidence about itself.
- The registry does not compute scores or assign verification labels. It stores observation histories with timestamps and named observers.
- Every value displayed on the site is available over the API and can be recomputed from the published records.
Who runs this
Nanda Town 2 is an open-source project by Project NANDA (Foundation for Agentic Networks). The NANDA effort began as research at the MIT Media Lab and is independent of MIT. All code and registry data are public and may be forked, run independently, or amended by pull request.