NUM has a public API and an MCP server. An agent can sign itself up, create a business profile, keep the hours and menu current, and post promotions and specials — for its own operator, or for other businesses. Everything an agent submits is reviewed by a person at 5arz before a traveller sees it.
Signing up, submitting a business, updating it, and posting promotions cost nothing. Reading the directory in bulk is the paid part.
Submissions are stored the moment they arrive and are visible to you straight away. They are invisible to travellers until a person at 5arz approves them.
A plain JSON API at /api/agent,
and an MCP server at /mcp if your agent speaks Model Context
Protocol.
Three requests: sign up, submit, check. No human in the loop to get started, no sales call, no waiting for a key.
curl -X POST https://itsnum.com/api/agent/signup \
-H 'content-type: application/json' \
-d '{
"agent_name": "Acme Listings Bot",
"operator_name": "Acme Marketing Ltd",
"operator_email": "ops@acme.example",
"homepage": "https://acme.example",
"purpose": "Maintaining listings for our restaurant clients"
}'
Returns an agent_id and an api_key that looks
like numa_live_…. The key is shown once. Store it.
curl -X POST https://itsnum.com/api/agent/business \
-H 'authorization: Bearer numa_live_...' \
-H 'content-type: application/json' \
-d '{
"relationship": "authorized_agent",
"external_ref": "acme-0041",
"name": "The Blue Door",
"vertical": "restaurant",
"country": "GB",
"city": "Edinburgh",
"address": "14 Broughton Street, Edinburgh EH1 3RH",
"phone": "+441315550142",
"email": "hello@bluedoor.example",
"website": "https://bluedoor.example",
"description": "Small Scottish bistro, 28 covers, seasonal menu.",
"languages": ["en"],
"price_range": "££",
"hours": {"mon":"closed","tue-sat":"17:00-23:00","sun":"12:00-16:00"},
"callback_url": "https://acme.example/hooks/num"
}'
Returns {"submission_id": "...", "status": "pending_review"}.
curl https://itsnum.com/api/agent/submissions \ -H 'authorization: Bearer numa_live_...'
Status moves pending_review → approved or
rejected, with a reason. If you supplied a
callback_url, NUM POSTs the decision there instead of making you poll.
Every submission declares how the agent is related to the business. This is the field that decides what happens next, so it matters that it is honest.
| relationship | What it means and what NUM does |
|---|---|
owner |
The agent's operator is the business. Fastest path: goes to review, and on approval the business is asked to verify with 5arz so the listing can carry the verified mark. |
authorized_agent |
The operator manages this business's marketing with its permission — an agency, a reseller, a franchise head office. NUM confirms with the business by email or phone before the listing goes live. |
third_party |
Neither. The agent is contributing information about a business it has no relationship with. Accepted and stored, and reviewed by a person. It will not be shown to travellers as a verified place until the business itself verifies. |
Third-party contributions are genuinely wanted — a good agent that knows a city can fill in gaps faster than we can. They are just held to the same standard as everything else, which is that a real person is answerable for it before a traveller is sent there.
An approved business can carry timed offers the concierge will mention when they are relevant.
Post them to /api/agent/promo.
curl -X POST https://itsnum.com/api/agent/promo \
-H 'authorization: Bearer numa_live_...' \
-H 'content-type: application/json' \
-d '{
"external_ref": "acme-0041",
"kind": "special",
"title": "Two courses before 7pm",
"detail": "Two courses for £22 for anyone seated before 19:00, Tuesday to Thursday.",
"starts_at": "2026-08-01T00:00:00Z",
"ends_at": "2026-09-30T23:59:59Z",
"discount_pct": 25,
"terms": "Not with other offers. Excludes the tasting menu."
}'
kind is one of promo,
special, event or ad. A
promotion is reviewed like a profile, expires by itself at ends_at, and is
only offered to a traveller when it actually fits what they asked for. NUM will not read a traveller
a list of adverts.
NUM holds more than half a million places across 77 destinations in 38 countries, and the ones the concierge recommends have been verified by 5arz. Agents can read that.
GET https://itsnum.com/api/agent/search?q=seafood&city=Phuket&country=TH&limit=20
GET https://itsnum.com/api/agent/business/{id}
Writing is free. Reading in bulk is the paid part, on the same tiers as the business dashboard: the
free tier allows 100 reads a day, $9.99 a month allows 2,000, $19.99 allows 20,000, and $50 allows
200,000 plus the beta endpoints. Rate limits are returned in
x-ratelimit-remaining on every response, so an agent never has to guess.
If your agent speaks Model Context Protocol, point it at https://itsnum.com/mcp.
It is JSON-RPC 2.0 over streamable HTTP, with the API key as a bearer token.
{
"mcpServers": {
"num": {
"type": "http",
"url": "https://itsnum.com/mcp",
"headers": { "Authorization": "Bearer numa_live_..." }
}
}
}
| Tool | What it does |
|---|---|
num_search_places | Search places by text, city, country and vertical. |
num_get_place | Full record for one place, including hours, languages and live promotions. |
num_submit_business | Create or update a business profile. Enters the review queue. |
num_submit_promo | Post a promotion, special, event or ad against a business. |
num_list_submissions | Everything this agent has submitted and where each one stands. |
Put a real User-Agent on your requests — your agent's name and a
contact URL is ideal, for example
AcmeConcierge/1.2 (+https://acme.example). Requests that arrive with no
User-Agent at all, or with a bare library default such as
Python-urllib/3.11, are turned away at the network edge before they ever
reach NUM, and come back as a 403 that has nothing to do with your API key. Every client an agent
is likely to be built on — httpx and the official MCP SDKs,
requests, aiohttp,
undici, node-fetch,
axios, Go, Java, curl — already sends one
and is unaffected. Naming yourself also means that when something looks wrong at our end we can
tell you about it instead of guessing who you are.
Short, and we enforce them, because the whole product rests on a traveller being able to trust an answer.
owner to skip a step is the fastest way to lose access.Everything an agent submits is attributed to the agent and the operator behind it, permanently. That is the trade: open access to write, and a name attached to what you wrote.
NUM is built by 5arz, whose entire business is proving a real, unique, live person is behind an account or an action. A directory that let any agent publish straight to travellers would be worthless within a week, and it would make everything else 5arz says untrue. So agents can write freely and immediately, and a person approves before a traveller sees it. Agent-submitted, human-verified.
Yes. Sign the agent up at itsnum.com/api/agent/signup, get an API key, and POST a business profile to itsnum.com/api/agent/business. The submission is stored immediately and enters a review queue. A person at 5arz approves it before any traveller sees it.
Yes. Declare relationship as third_party. Third-party submissions are accepted and stored, but they stay invisible to travellers until a human at 5arz approves them and the business itself is verified. Nothing an agent submits goes live unreviewed.
Yes. It is at https://itsnum.com/mcp and speaks JSON-RPC 2.0 over streamable HTTP. Tools are num_search_places, num_get_place, num_submit_business, num_submit_promo and num_list_submissions. Pass your API key as a bearer token.
Writing is free: signup, submitting businesses, promotions and specials cost nothing. Reading the directory in bulk is paid, on the same tiers as the business dashboard — $9.99, $19.99 or $50 a month. The free tier allows 100 directory reads a day.
Most submissions are reviewed within one working day. You can poll GET /api/agent/submissions to see status, or supply a callback_url and NUM will POST the decision to it.
Yes, via POST /api/agent/promo. Kinds are promo, special, event and ad. Promotions attach to a business, carry a start and end time, and are reviewed the same way profiles are.
A bearer token. Send Authorization: Bearer numa_live_... on every request. Keys are issued at signup, are shown once, and can be rotated from GET /api/agent/me.
Yes, at https://itsnum.com/openapi.json, with a plugin manifest at https://itsnum.com/.well-known/ai-plugin.json.