protogrid

Search / com.itsnum/num

NUM

R0· no sign-in

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

v1.3.0 · active · repository · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality75good
Trust95of 100
Uptime, 30 days95%
Latency p50195 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "num": {
      "type": "http",
      "url": "https://itsnum.com/mcp",
      "headers": {
        "Authorization": "Bearer ${NUM_TOKEN}"
      }
    }
  }
}
claude mcp add --transport http num https://itsnum.com/mcp --header "Authorization: Bearer ${NUM_TOKEN}"
[mcp_servers.num]
url = "https://itsnum.com/mcp"
bearer_token_env_var = "NUM_TOKEN"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "num": {
      "type": "remote",
      "url": "https://itsnum.com/mcp",
      "enabled": true,
      "headers": {
        "Authorization": "Bearer {env:NUM_TOKEN}"
      }
    }
  }
}
{
  "mcpServers": {
    "num": {
      "type": "http",
      "url": "https://itsnum.com/mcp",
      "headers": {
        "Authorization": "Bearer ${NUM_TOKEN}"
      }
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=num&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vaXRzbnVtLmNvbS9tY3AiLCJoZWFkZXJzIjp7IkF1dGhvcml6YXRpb24iOiJCZWFyZXIgJHtOVU1fVE9LRU59In19"
}
{
  "servers": {
    "num": {
      "type": "http",
      "url": "https://itsnum.com/mcp",
      "headers": {
        "Authorization": "Bearer ${NUM_TOKEN}"
      }
    }
  }
}
{
  "mcpServers": {
    "num": {
      "httpUrl": "https://itsnum.com/mcp",
      "headers": {
        "Authorization": "Bearer ${NUM_TOKEN}"
      }
    }
  }
}
extensions:
  "num":
    enabled: true
    name: "num"
    type: streamable_http
    uri: "https://itsnum.com/mcp"
    headers:
      "Authorization": "Bearer ${NUM_TOKEN}"
    timeout: 300

Placeholders to fill from your own secret store: ${NUM_TOKEN}. The registry never accepts secret values.

Quality 75 / 100good

protocol75 · weight 25
  • warn
    protocol.modernnewest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
  • n/a
    protocol.statelessonly applies to 2026-07-28 servers
  • pass
    protocol.transportstreamable HTTP
  • n/a
    protocol.list_ttlonly applies to 2026-07-28 servers
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene100 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations10 of 10 tools declare readOnlyHint or destructiveHint
  • pass
    tools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
  • pass
    tools.token_costabout 2,498 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability25 · weight 15
  • warn
    stability.changes9 tool changes in 30 days
  • fail
    stability.rug_pull1 tools kept their name but changed most of their description in 30 days; review before trusting them
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

10 tools, about 2,498 tokens to load them all · tool set 36f5049306b0 · tools last changed 2026-10-10 · checked 2026-10-19 10:20 UTC

Tool changes

  • num_license_photochangeddescription
    before

    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. 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.

    after · 75% of words in common

    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.

  • num_search_photoschangeddescription
    before

    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 is not offered. 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.

    after · 75% of words in common

    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.

  • num_photo_walletadded

    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.

  • num_license_photoadded

    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. 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.

  • num_quote_photoadded

    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.

  • num_search_photosadded

    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 is not offered. 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.

  • num_get_placechangedtitle, description, input schemameaning changed
    before

    Full record for one place, by the place_id that num_search_places returned. Each call counts against the daily read quota.

    after · 25% of words in common

    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.

  • num_list_destinationsadded

    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.

  • num_search_placeschangeddescription, input schema
    before

    Search NUM's travel directory: more than 2.5 million places — restaurants, bars, hotels, spas, tours and shops, deepest in Thailand and the UK. Requires at least one of q, city, country or category. Returns name, category, address, phone, website, coordinates and whether the owner has claimed the listing. Each call counts against the daily read quota.

    after · 66% of words in common

    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.

Full history: list_changes · trend: quality JSON.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 95 / 100

provenance85
liveness98
freshness100
hygiene100

+repository +dns-namespace +website +reachable +uptime-95% +updated-15d-ago

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://itsnum.com/mcp streamable-httpnoneyes95%195 ms2025-11-252026-10-19

Tools (10)

num_get_placeread-onlyFull 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.
num_license_photodestructiveBuys 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.
num_list_destinationsread-onlyEvery destination NUM covers, with its country. Use a destination's name or slug as num_search_places city. Free, unmetered, and needs no key.
num_list_submissionsread-onlyLists the businesses and promotions this account has submitted, with the reviewer's decision on each. Free and unmetered.
num_photo_walletread-onlyThis 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.
num_quote_photoread-onlyThe 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.
num_search_photosread-onlySearch 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.
num_search_placesread-onlySearch 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.
num_submit_businessdestructiveSubmit 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.
num_submit_promodestructiveAttach 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.

Schemas: list_tools.

More from com.itsnum

Official server.json
{
  "name": "com.itsnum/num",
  "icons": [
    {
      "src": "https://itsnum.com/icon-512.png",
      "sizes": [
        "512x512"
      ],
      "mimeType": "image/png"
    }
  ],
  "title": "NUM",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://itsnum.com/mcp",
      "type": "streamable-http",
      "headers": [
        {
          "name": "Authorization",
          "isSecret": true,
          "description": "Optional. Bearer numa_live_… key from POST https://itsnum.com/api/agent/signup. Leave empty to sign in with OAuth instead."
        }
      ]
    }
  ],
  "version": "1.3.0",
  "repository": {
    "url": "https://github.com/LumiRx/num-mcp",
    "source": "github"
  },
  "websiteUrl": "https://itsnum.com/agents/",
  "description": "Real places for your agent: search 2.5M+ travel places, list businesses, license place photos."
}