NUM

com.itsnumPublished by itsnum.comOfficial publisherv1.3.0Updated Oct 24, 2026

Real places for your agent: search 2.5M+ travel places, list businesses, license place photos.

VerifiedStreamable HTTPWeb executableLocation & LifestyleBusiness & CommerceMedia & Design

Overview

AI-generated overview

Remote MCP server for NUM's travel directory: search 2.5M+ places, read full place records, submit businesses and promos, and license traveler photos.

What you can do
  • Search and browse places: find restaurants, bars, hotels, spas, tours and shops by city, country, area, category or free text, list covered destinations, and read a full record for one place including how to book it.
  • Submit and track listings: send a business or a promotion for human review and list what the account has submitted with the reviewer's decision.
  • Find and price photos: search traveler-taken place photos offered for licensing per use, get the current price and license terms, and check the account's photo wallet balance and held licenses.
  • Buy photo licenses: purchase one use of one photo from a prepaid wallet, capped by a maximum price, and receive the license and a download link.
When to use it
Useful when an assistant should recommend real venues in Thailand, the UK or other covered destinations, look up booking details for a specific place, or help a business owner submit and track a listing or promotion. Also relevant for agents that need licensed travel photography.
Requirements
Remote Streamable HTTP endpoint; nothing to install. Calling tools requires signing in, either through OAuth 2.1 in a supporting client or with a free API key sent as an Authorization bearer header, obtained from the signup endpoint. Tool discovery works without credentials. Reads are metered per day by tier; writes are unlimited.
Before you install
The API key is returned once and is not recoverable, so store it safely. Submissions are not published automatically and stay pending until a human reviewer approves them; success does not mean live. Re-sending the same reference overwrites a pending submission. Photo licensing spends real money from a prepaid wallet, and top-up returns a checkout link a person pays. Declare the relationship to a business honestly; misrepresenting ownership can get a key revoked.

Installation

In SourceWeft

  1. Open NUM in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/com.itsnum%2Fnum/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "num": {
      "type": "http",
      "url": "https://itsnum.com/mcp"
    }
  }
}

README

NUM MCP Server

Real places for your agent. A remote MCP server for travel: search a directory of more than 2.5 million places — restaurants, bars, hotels, spas, tours and shops, deepest in Thailand and the UK — and submit businesses or promotions for human review.

[Add to Cursor] [Install in VS Code] [Install in VS Code Insiders]

bash
# Claude Codeclaude mcp add --transport http num https://itsnum.com/mcp

Claude and ChatGPT: add https://itsnum.com/mcp as a custom connector, sign in to NUM, approve. No key.

Operated by 5arz Inc. · Endpoint: https://itsnum.com/mcp · Listed on the official MCP Registry as com.itsnum/num.

This repository holds the documentation, connection configs and client examples. The server itself is hosted — there is nothing to install or run.


Quick start

Tool discovery is open. You can see what the server offers with no credentials at all:

bash
curl -sS -X POST https://itsnum.com/mcp \  -H 'content-type: application/json' \  -H 'accept: application/json, text/event-stream' \  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Calling a tool needs you to be signed in. There are two ways, and they share one quota.

1. Sign in (OAuth 2.1) — Claude, ChatGPT, Cursor, VS Code and any client that supports MCP authorization. Give the client the URL and nothing else. The first tool call opens a NUM sign-in window; approve num.read (search) and num.write (submit). PKCE and dynamic client registration are supported; metadata is at https://itsnum.com/.well-known/oauth-protected-resource. Access lasts an hour and renews on its own. Disconnect from the client at any time.

2. A free API key — scripts, servers and clients without OAuth:

bash
curl -sS -X POST https://itsnum.com/api/agent/signup \  -H 'content-type: application/json' \  -d '{        "agent_name": "Acme Listings Bot",        "operator_name": "Acme Ltd",        "operator_email": "[email protected]",        "purpose": "Suggest restaurants and bars to travellers in Thailand."      }'

The key is returned once and is not recoverable. Save it immediately. Rotate at POST /api/agent/me/rotate; check your usage at GET /api/agent/me.

Runnable versions of all of the above are in examples/.

Connecting

Transport: Streamable HTTP. Auth: OAuth 2.1, or Authorization: Bearer numa_live_…. With OAuth, drop the headers block from any config below.

Claude Desktop / Claude Code
json
{  "mcpServers": {    "num": {      "type": "http",      "url": "https://itsnum.com/mcp",      "headers": { "Authorization": "Bearer numa_live_YOUR_KEY" }    }  }}
Cursor — .cursor/mcp.json
json
{  "mcpServers": {    "num": {      "url": "https://itsnum.com/mcp",      "headers": { "Authorization": "Bearer numa_live_YOUR_KEY" }    }  }}
VS Code — .vscode/mcp.json
json
{  "servers": {    "num": {      "type": "http",      "url": "https://itsnum.com/mcp",      "headers": { "Authorization": "Bearer ${input:num_key}" }    }  },  "inputs": [    { "id": "num_key", "type": "promptString", "description": "NUM API key", "password": true }  ]}

Things to ask once it is connected

  • Find three Thai restaurants in Patong, Phuket, with a phone number I can call.
  • Which spas are listed in Edinburgh? Show me the full record for the first one.
  • What rooftop bars in Bangkok are in NUM's directory, and which have been claimed by their owner?
  • I own a café in Kata, Phuket. Submit it to NUM as the owner. Here are the details: …
  • Show me everything I have submitted to NUM and what the reviewer decided.

Tools

ToolWhat it doesMetered
num_search_placesSearch by free text, city, country or category. At least one required.Yes — read
num_get_placeFull record for one place by place_id.Yes — read
num_submit_businessSubmit a business. Reviewed by a person before anyone sees it.No
num_submit_promoPost a promotion, special, event or ad against a business you submitted.No
num_list_submissionsEverything you submitted and what a reviewer decided.No

All five carry a title and MCP tool annotations. The three read tools are readOnlyHint; the two submit tools are destructiveHint, because re-sending the same external_ref or promo_ref overwrites your pending submission — so a well-behaved client asks the person first.

Quotas — reads per day: free 100 · bundle 2,000 · pro 20,000 · full 200,000. Writes are unlimited on every tier, including free. We would rather have your data than your money.

Two things worth understanding before you build

Submissions are not published automatically. Everything sent through num_submit_business or num_submit_promo is stored but stays invisible to travellers until a human at 5arz approves it. This is deliberate and it is not a queue you can jump. Do not tell a user their listing is live because the tool returned success — poll num_list_submissions for the reviewer's decision.

"Verified" has a specific meaning here, and it is not a review score. On NUM, verified describes a person or a claimed listing — never a place:

  • A verified guest is a traveller 5arz confirmed is a unique real human.
  • A verified listing is one whose owner proved control of the contact details already published on it.
  • Unclaimed listings are mapped, not verified.

If you surface NUM data to end users, please do not render "verified" as a quality, rating or endorsement signal. It says this is a real person or this owner is real — nothing about whether the food is good.

Declare relationships honestly

num_submit_business asks for your relationship to the business, and the value matters:

ValueMeans
ownerYou or your operator own the business
authorized_agentThe business engaged you to act for it
third_partyYou are adding a place you know of, with no relationship

Guessing owner to look more credible is the fastest way to get an agent key revoked. Never invent contact details — an unreachable phone number is worse than a blank field.

Rate limits and etiquette

  • Reads are metered per day by tier; writes are not metered.
  • Signup is capped at 5 keys per address per day. One key per agent is plenty — reuse it.
  • 429 means you hit a limit. Back off; do not retry in a tight loop.

Discovery surfaces

WhatWhere
MCP manifesthttps://itsnum.com/.well-known/mcp.json
MCP server cardhttps://itsnum.com/.well-known/mcp/server-card.json
OAuth metadatahttps://itsnum.com/.well-known/oauth-protected-resource
OpenAPI (REST equivalent)https://itsnum.com/openapi.json
Plain-language summaryhttps://itsnum.com/llms.txt
Full text corpushttps://itsnum.com/llms-full.txt
Machine-readable business datahttps://itsnum.com/for-ai/
Agent platform docshttps://itsnum.com/agents/

Pricing

The API and the MCP server are free: 100 reads a day, unlimited submissions. Higher read quotas are on the same plans as the business dashboard, from $9.99 a month.

Free for travellers, and there is no traveller booking fee. Businesses list free and pay only on a booking NUM completes: 10% on a table, 15% on a room, 20% on an activity, out of their side, never added to the traveller's bill. No-shows and declined bookings cost nothing. Full detail at itsnum.com/pricing.

Support

Licence

Documentation and examples in this repository: MIT. The NUM service, its data and the directory itself are proprietary to 5arz Inc. and are not licensed by this repository.

Source: README.md at commit 070d95e

Tools

10

num_search_places

Search places

Search NUM's travel directory: more than 2.5 million places — restaurants, bars, hotels, spas, tours and shops, deepest in Thailand and the UK. Say where to look: city (one of NUM's destinations — see num_list_destinations) or country; then narrow with q, area and category. Places NUM knows have closed are never returned. Returns name, category, address, phone, website, coordinates and whether the owner has claimed the listing; call num_get_place for how to book one. Each call counts against the daily read quota.

Parametersqareacitylimitcountrycategory

num_list_destinations

List NUM's destinations

Every destination NUM covers, with its country. Use a destination's name or slug as num_search_places city. Free, unmetered, and needs no key.

Takes no parameters.

num_get_place

Get place details and how to book it

Full record for one place, by the place_id that num_search_places returned, including HOW TO BOOK IT on the venue's own terms. `booking.method` is one of: request (the venue takes requests through NUM and confirms each one itself), venue_system (send the traveller to booking.url, prefilled when you pass party_size, date and time), phone (the number is for the traveller to call), not_through_num, closed, unknown. Follow booking.guidance exactly. If open_status.closed is true, NUM holds evidence the place has gone: do not send anyone there. accolades carry their source; menu is the owner's own list and prices. Each call counts against the daily read quota.

Parametersdatetimeplace_idrequiredparty_size

num_submit_business

Submit a business for review

Submit a business to NUM for review. Free and unmetered. A person at 5arz reviews every submission before any traveller sees it, so the result is status 'pending_review', never an immediate listing. 'relationship' records whether the submitter owns the business, was engaged by the owner, or is a third party; reviewers verify it. Contact details must be ones the business has published — submissions with guessed or derived contact details are rejected. Re-sending the same external_ref updates the pending submission instead of creating a duplicate.

Parameterscityrequirednamerequiredemailhoursphoneaddresscountryrequiredwebsiteverticallanguagesdescriptionprice_range+3 more

num_submit_promo

Submit a promotion for review

Attach a promotion, special, event or ad to a business previously submitted by the same account. Free and unmetered. A person reviews it before it is shown to anyone. Re-sending the same promo_ref updates the pending promotion instead of creating a duplicate.

Parameterskindtermstitlerequireddetailends_atpromo_refstarts_atdiscount_pctexternal_refsubmission_id

num_list_submissions

List your submissions

Lists the businesses and promotions this account has submitted, with the reviewer's decision on each. Free and unmetered.

Parameterslimitoffsetstatus

num_search_photos

Search licensable photos of places

Search photos of real places taken by NUM travelers and offered for licensing per use. Each result has a photo_id, a preview URL, the place (name, city, area, category), the month it was taken, the photographer's public name and the price in US cents for each use: social (one post), web (one page), ad (one campaign) and ai_training (one dataset). A price of null means that use cannot be bought right now. Business uses sell in live drops: a limited number of licenses over 3 days, the price rising 10% after each one; drop shows licenses left, the end time and the next price. Every photo shows a place with no recognisable person and was checked by a person; results never include coordinates or exact dates. use=ai_training returns only photos whose photographer allows AI training. Each call counts against the daily read quota.

Parametersqusecitykindlimitoffsetcategoryplace_id

num_quote_photo

Get the price and terms for one use of a photo

The current price in US cents and the full license terms for one use of one photo. Nothing is charged. Counts against the daily read quota.

Parametersuserequiredphoto_idrequired

num_license_photo

License one use of a photo

Buys one use of one photo from this account's prepaid photo wallet and returns the license and a download link to the file (metadata removed). max_price_cents is the most the operator agreed to pay; a higher current price is refused with the quote and nothing is charged. In a live drop the price rises after every license, so another buyer can move it first: within max_price_cents the purchase goes through at the new price, above it you get price_moved with the new quote and nothing is charged. Re-sending the same idempotency_key returns the same license instead of buying again. Spending is capped per UTC day. While NUM's licensing is in its test run, purchases use test credit and no money moves; the response says test: true.

Parametersuserequiredphoto_idrequiredidempotency_keymax_price_centsrequired

num_photo_wallet

Photo wallet and licenses

This account's photo wallet balance (US cents, plus test credit), what it spent today against the daily cap, and the licenses it holds. Free and unmetered. Adding credit is POST /api/agent/photos/topup, which returns a checkout link a person pays.

Takes no parameters.

Version history

3
  1. v1.3.0LatestOct 4, 2026
  2. v1.2.0Sep 17, 2026
  3. v1.1.0Sep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Itsnum integrations