Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,536Letters: 14Defects: 1,322counted 4 min ago
teppi

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 yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:20ec8f0b2d1dcff6e02f3551be8f19eefb3343a75bd0e0069aa2b47ae392f75c | sha256sum