Server definition
- Hash
- sha256:20ec8f0b2d1dcff6e02f3551be8f19eefb3343a75bd0e0069aa2b47ae392f75c
- What it is
- What a remote MCP server returned when asked what it offers: 6 tools
The blob, as servednamed by its sha256
{
"instructions": "NUM is a travel places directory run by 5arz. 'Verified' on NUM refers to identity-checked guests and owner-claimed listings, not to unclaimed places. Reads are metered per UTC day; writes are free. Every business or promotion submitted is reviewed by a person before a traveller sees it and returns status 'pending_review'. Submissions whose contact details were guessed — an email address derived from a domain name, for instance — are rejected in review. The full rules are at https://itsnum.com/agents/.",
"tools": [
{
"description": "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.",
"inputSchema": {
"properties": {
"date": {
"description": "Optional: YYYY-MM-DD, to prefill the venue's booking page.",
"type": "string"
},
"party_size": {
"description": "Optional: people in the party, to prefill the venue's booking page.",
"maximum": 40,
"minimum": 1,
"type": "integer"
},
"place_id": {
"description": "The place_id returned by num_search_places.",
"type": "string"
},
"time": {
"description": "Optional: HH:MM 24-hour, local to the venue.",
"type": "string"
}
},
"required": [
"place_id"
],
"type": "object"
},
"name": "num_get_place",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "num_list_destinations",
"outputSchema": null
},
{
"description": "Lists the businesses and promotions this account has submitted, with the reviewer's decision on each. Free and unmetered.",
"inputSchema": {
"properties": {
"limit": {
"maximum": 200,
"minimum": 1,
"type": "integer"
},
"offset": {
"minimum": 0,
"type": "integer"
},
"status": {
"enum": [
"pending",
"approved",
"rejected",
"duplicate",
"withdrawn"
],
"type": "string"
}
},
"type": "object"
},
"name": "num_list_submissions",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"properties": {
"area": {
"description": "A neighbourhood inside the destination, e.g. 'Kata' or 'Soho'.",
"type": "string"
},
"category": {
"description": "e.g. 'Restaurant', 'Bar', 'Hotel', 'Spa', 'Tour'.",
"type": "string"
},
"city": {
"description": "A NUM destination, e.g. 'Phuket', 'Edinburgh', 'Bangkok', 'London'. Required unless country is given.",
"type": "string"
},
"country": {
"description": "ISO-2 code or name, e.g. 'TH' or 'Thailand'. Searches every NUM destination in that country.",
"type": "string"
},
"limit": {
"description": "Max results, default 20, cap 50.",
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"q": {
"description": "Free text matched against the place name.",
"type": "string"
}
},
"type": "object"
},
"name": "num_search_places",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"properties": {
"address": {
"type": "string"
},
"callback_url": {
"description": "NUM POSTs the review decision here.",
"type": "string"
},
"city": {
"type": "string"
},
"country": {
"type": "string"
},
"description": {
"type": "string"
},
"email": {
"description": "Only if the business has published it. Do not derive it from the domain name.",
"type": "string"
},
"external_ref": {
"description": "Your own reference for this business. Re-sending it edits the pending submission instead of creating a duplicate.",
"type": "string"
},
"hours": {
"type": "string"
},
"languages": {
"items": {
"type": "string"
},
"type": "array"
},
"name": {
"description": "Trading name as it appears on the door.",
"type": "string"
},
"phone": {
"type": "string"
},
"price_range": {
"type": "string"
},
"relationship": {
"description": "'owner' if you run it, 'authorized_agent' if the owner engaged you, 'third_party' if you neither own nor represent it.",
"enum": [
"owner",
"authorized_agent",
"third_party"
],
"type": "string"
},
"vertical": {
"description": "restaurant, cafe, bar, hotel, spa, boat, tour, shop, transport, clinic, gym, attraction, other…",
"type": "string"
},
"website": {
"type": "string"
}
},
"required": [
"relationship",
"name",
"country",
"city"
],
"type": "object"
},
"name": "num_submit_business",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"properties": {
"detail": {
"type": "string"
},
"discount_pct": {
"maximum": 90,
"minimum": 0,
"type": "integer"
},
"ends_at": {
"type": "string"
},
"external_ref": {
"description": "Alternative to submission_id: the reference you used for the business.",
"type": "string"
},
"kind": {
"enum": [
"promo",
"special",
"event",
"ad"
],
"type": "string"
},
"promo_ref": {
"description": "Your own reference for this promotion, for idempotent edits.",
"type": "string"
},
"starts_at": {
"description": "2026-08-01 or 2026-08-01T18:00:00Z.",
"type": "string"
},
"submission_id": {
"description": "From num_submit_business.",
"type": "string"
},
"terms": {
"type": "string"
},
"title": {
"description": "The single line a traveller reads.",
"type": "string"
}
},
"required": [
"title"
],
"type": "object"
},
"name": "num_submit_promo",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:20ec8f0b2d1dcff6e02f3551be8f19eefb3343a75bd0e0069aa2b47ae392f75c | sha256sum