Surfing Dog Search
Server Details
Find businesses an AI agent can message, book or buy from, and check what an agent can do on a site.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Score is being calculated.
Available Tools
7 toolscheck_businessCheck a business's websiteIdempotentInspect
Checks what an AI agent can do with a business's website: message, book, order, sign up, pay, change or cancel. Waits up to 25 seconds; if the read isn't finished, returns what it found so far, and you call it again for the score. A result read in the last hour is answered as it is; after a business changes its site, set fresh to true to read it again (allowed a few minutes after the last read). Use it when a person asks how agent-ready a business is, or wants to improve their own. To find businesses, use search_businesses instead.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The business's website, as a URL or a bare domain like salon.example. | |
| fresh | No | Read the site again rather than answer the stored result: for a business that just changed its site. Allowed a few minutes after the last read; before that, the stored result is answered with when to ask again. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | Its result page. |
| rank | No | Only when done, not hidden and of a kind the directory ranks. |
| site | No | The business's own site. |
| badge | No | |
| fixes | No | |
| grade | No | |
| level | No | |
| owner | No | |
| queue | No | Only while queued, checking or scoring. |
| rules | No | The score rules applied (GET /v1/score-rules?version=N). |
| state | Yes | |
| domain | Yes | |
| answers | No | Message, book, order, sign up, cancel and negotiate, in that order. |
| profile | No | |
| excluded | No | |
| indexable | Yes | |
| scored_at | No | |
| checked_at | No | |
| capabilities | No | |
| track_record | No | A member's track record, from the same nightly count as its standing and shown under the same rules: the promises it kept and broke, and when. From rules version 8, one that rests on the business's own word is self_reported: its counts, with no score and no count of customers. Only what its state can say is present; a business that is not a member has none. |
| agentic_score | No | |
| not_certification | No | |
| web_person_message | No |
get_businessOne businessRead-onlyIdempotentInspect
One business's full listing, by its domain: its address (a town and country for one this network found), the week's opening hours and closures, its doors and what each takes, its services, its standing in words, a member's track record (promises kept, broken and still open, and when, once enough have closed; self_reported when it rests on the business's own word, with no score and no count of customers), and how many of its promises closed with each outcome; for one that is not a member, every fact with its source and date. This server takes no bookings or orders; the listing names the business's own doors. Its agentic score, if checked, is at https://surfingdog.ai/b/.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | The business's domain, like ana-salon.example, as search_businesses gave it. |
Output Schema
| Name | Required | Description |
|---|---|---|
| why | No | Why it is in this place of the list, in plain words. |
| city | No | |
| name | Yes | As the business wrote it. |
| tags | Yes | Other words the business gave for what it does. |
| doors | No | |
| facts | No | Every displayed value of an entry that is not a member, with its source and date. |
| found | No | |
| hours | No | The whole week, and the closures that have not ended. |
| inbox | No | The business's own inbox, where it takes bookings, orders and questions; this server takes no bookings or orders. Present whenever has_inbox is true or absent. |
| level | No | The highest level of its live doors (§4.9). |
| place | No | For entries that are not members; a member keeps city, country and address. |
| proof | No | |
| rules | No | |
| takes | Yes | What its inbox takes: booking, order, quote_request, message, refund. |
| domain | Yes | The business's own domain, where its inbox is. |
| source | No | member: through its inbox; registered: by the business, with a proof; found: by the network's crawler. |
| accepts | No | |
| address | No | The street only when the business published one. |
| claimed | No | |
| country | No | ISO 3166-1 alpha-2. |
| website | No | |
| category | No | |
| open_now | Yes | Open at the moment of the answer by the hours it published, in its own time zone; null when it published none. |
| outcomes | Yes | How many of the promises made at this business closed with each outcome (ADR-017 §3). |
| services | Yes | Names and how each is taken; prices, durations and free times are at its inbox. |
| standing | No | From the last nightly count of the promises it kept; absent while the directory's order is neutral. |
| answering | Yes | Its inbox answered this network within the last day. |
| has_inbox | No | It has an inbox door: ours or any compatible inbox. |
| languages | Yes | |
| attributes | No | Keys of GET /v1/attributes. |
| categories | Yes | Slugs of the categories list. |
| description | No | As the business wrote it. |
| distance_km | No | Searches near a point only. |
| hours_today | Yes | Today's hours in its own time zone, like "09:00–13:00, 14:00–19:00", or "closed today"; null when it published none. |
| listing_url | Yes | Its full listing on this network (GET /v1/businesses/{domain}). |
| requestable | No | The kinds a live door declared it answers; never from what the crawler saw alone. |
| track_record | No | A member's track record, from the same nightly count as its standing and shown under the same rules: the promises it kept and broke, and when. From rules version 8, one that rests on the business's own word is self_reported: its counts, with no score and no count of customers. Only what its state can say is present; a business that is not a member has none. |
| human_contact_only | No | It publishes only human channels; never served while nothing below askable is listed. |
list_attributesAttributesRead-onlyIdempotentInspect
The attributes a search may ask for (delivery, walk_ins, wifi…), each with its labels, and the payments accepts takes. Pass keys as attributes to search_businesses, and payments as accepts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| keys | Yes | |
| version | Yes | |
| payments | Yes |
list_categoriesCategoriesRead-onlyIdempotentInspect
The categories list: every slug with its English and Portuguese labels and its kind (local_and_retail, or software_and_ai for software, API and AI companies, kept apart). Pass a slug as category to search_businesses.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| version | Yes | |
| taxonomy | No | |
| categories | Yes | |
| place_categories | No | With ?group: every place category of that group; parent is null at the taxonomy's top. |
register_businessPut a business in the directoryInspect
For a business's own AI: put the business in this directory with its doors (MCP, A2A, OpenAPI, an API, UCP, ACP, a platform's door) and its facts: name, what it is (a category of list_categories or a place category, and one line), where (a storefront, a service area, or online with the countries it ships to), its languages, and agree. One call when its proof is already in place; otherwise the answer gives a challenge to put on its domain (a well-known file, its inbox manifest, a DNS record), a key's signature, or a code sent to an address at its domain, and the next call proves it. The answer names every part not taken and why, its readiness level, and what the next level takes. Doors count once this network's crawler has checked them; a door on another host counts only when the site leads to it or its own document names the business's domain. Mail, phone, messaging, forms and web pages are never doors. Every kind of business is listed except adult services, gambling, weapons, tobacco, cannabis and vaping, payday loans and bail bonds. agree accepts the listing terms (/bot#terms). Being listed is free, and nothing about the order can be bought.
| Name | Required | Description | Default |
|---|---|---|---|
| pay | No | Payment tokens of list_attributes. | |
| name | Yes | As the business writes it. | |
| agree | Yes | The business agrees to be listed by the network's published rules (GET /v1/ranking) and listing terms. | |
| doors | No | ||
| hours | No | As a profile's hours: {"timezone": "Europe/Paris", "weekly": {"tue": [["09:00", "19:00"]]}}. | |
| proof | No | ||
| where | Yes | A storefront needs an address or geo, a service area its radius or countries, online its ships_to. | |
| domain | Yes | The business's own website domain. A business without a website is not supported yet. | |
| locale | No | The language to answer in. | |
| category | Yes | What the business is: one category, and at most two more. | |
| languages | Yes | Language tags, like pt or fr-CA. | |
| attributes | No | Keys of list_attributes. | |
| currencies | No | ISO 4217. | |
| price_band | No | 1 (cheapest) to 4. | |
| want_inbox | No | ||
| claim_token | No | Given by a successful register_business: proof again for 90 days, for this listing only. | |
| description | Yes | One line on what it does; the first line is at most 160. | |
| alternate_names | No | Other names the business goes by; a name longer than the network keeps is dropped (the reference network keeps 60 characters and 4 words at most). |
Output Schema
| Name | Required | Description |
|---|---|---|
| card | No | The card search_businesses gives, as it stands now. |
| level | No | |
| notes | No | |
| proof | No | |
| detail | No | The answer in one plain sentence. |
| domain | Yes | |
| listed | No | Whether search shows it now. |
| status | Yes | listed: in search now; not_agent_ready: claimed, below askable; probe_pending: doors declared, not yet probed; proof_needed: see challenge; code_sent: call again with the code; member: it is listed through its inbox; refused: see detail. |
| claimed | No | |
| dropped | No | Each part not taken and why: refused_kind, category_not_listed, contact_detail, not_in_vocabulary, and the like. |
| challenge | No | Put the token in place one of these ways, then call again with proof.method and challenge_id. |
| next_level | No | What it takes to reach the next level, in plain words. |
| want_inbox | No | |
| claim_token | No | Given by a successful register_business: proof again for 90 days, for this listing only. |
| claim_token_expires_at | No |
search_businessesFind businessesRead-onlyIdempotentInspect
Find businesses in the directory by what they do (query, category: a group or a place category), where (near, country), the language they speak, whether they are open now, their attributes (list_attributes), price band, what their doors take and what they accept (accepts), whether a door answers asks or quotes (requestable), the type of door, their readiness level, whether they have an inbox, and whether they are members, registered or found. Results come in the directory's published order, which nobody can pay to change; every filter only leaves businesses out. This server takes no bookings or orders; each result lists the business's own doors. A business this network found on its own website is marked as found, with the date it was checked. Software, API and AI companies (category software-ai) are kept apart: they come only when category names that group or one of its categories, query names their kind, or every word of query is in one's name. Pages of up to 20; pass next_cursor as cursor for more.
| Name | Required | Description | Default |
|---|---|---|---|
| near | No | Only businesses within radius_km of this point, each with its distance. | |
| level | No | At this readiness level or above: askable (an AI can ask), bookable or orderable, payable. Nothing below askable is listed yet. This only leaves businesses out. | |
| limit | No | How many to return: 10 when left out. | |
| order | No | rank: the published order (the default); nearest: by distance, and it needs near. | |
| query | No | A few words about what the business does or where, like "florist" or "coffee singapore". Every word must match its name, town, description, categories, tags or services, ignoring capitals and accents. Words like "open" or "near me" belong in open_now and near instead. | |
| cursor | No | next_cursor from the previous answer, for the next page of the same search. | |
| source | No | member (through its inbox), registered (by the business), found (by this network on the business's own website); any of them. This only leaves businesses out. | |
| accepts | No | What its live doors take and what it accepts as payment, all of them: ask, quote, book, order, pay, or a payment from list_attributes like card or pix. This only leaves businesses out. | |
| country | No | A country code like PT or BR: a business located there, serving it or shipping there. This only leaves businesses out. | |
| category | No | A slug from list_categories, like hair-beauty, or a place category id like hair_salon, with every category below it. Its label or a synonym works too. Under rules before version 7 any other word matches the tags businesses gave themselves; from version 7 it is an error that names up to 5 categories to try. | |
| language | No | Only businesses that speak this language, as a tag like pt or en; pt also finds pt-br. | |
| open_now | No | true: only businesses open right now by the hours they published. One that published no hours is left out. | |
| door_type | No | A live door of any of these types: inbox, mcp, a2a, openapi, api, ucp, acp, nlweb, other, "platform" for any platform, or platform:<name>. This only leaves businesses out. | |
| has_inbox | No | true: with an inbox door; false: without one. This only leaves businesses out. | |
| item_type | No | Only businesses whose inbox takes this. | |
| attributes | No | Keys from list_attributes, like "delivery" or "walk_ins", or key=value for one with values; every one must hold. This only leaves businesses out. | |
| price_band | No | 1 (cheapest) to 4, as "2" or a range "1-2". This only leaves businesses out. | |
| requestable | No | A live door that declared it answers this kind. This only leaves businesses out. |
Output Schema
| Name | Required | Description |
|---|---|---|
| rules | Yes | The rules that ordered these businesses (GET /v1/ranking?version=N). |
| businesses | Yes | In the directory's published order: no one can pay to move in it. |
| next_cursor | Yes | Pass it as cursor for the next page; null on the last. |
update_businessChange a business's listingDestructiveInspect
For a business's own AI: correct its listing (set any field register_business takes), add or remove doors, turn the listing off or on, or hide its agentic score result (score_page), with its claim_token or a proof as register_business asks. opt_out stops this network listing the site (list), reading it (crawl), or both (all). With no proof it removes only a listing nobody claimed; a claimed or registered listing is taken out only with its claim_token or a proof as strong as its claim.
| Name | Required | Description | Default |
|---|---|---|---|
| set | No | Any field register_business takes, but domain. | |
| doors | No | ||
| proof | No | ||
| domain | Yes | ||
| listing | No | off hides it from search and keeps it in the index. | |
| opt_out | No | Stops the listing (list), the crawl (crawl) or both (all). Without a claim token or a proof it removes an entry the network found that nobody claimed, and never a claimed or registered listing, which needs its claim_token or a proof as strong as its claim. A business that opted out comes back with a domain or key proof. | |
| score_page | No | hidden takes the business's agentic score result page out of view, its ranks and leaderboards included; shown brings it back. It needs the claim token or a proof, as set does. | |
| claim_token | No | Given by a successful register_business: proof again for 90 days, for this listing only. |
Output Schema
| Name | Required | Description |
|---|---|---|
| card | No | The card search_businesses gives, as it stands now. |
| level | No | |
| notes | No | |
| proof | No | |
| detail | No | The answer in one plain sentence. |
| domain | Yes | |
| listed | No | Whether search shows it now. |
| status | Yes | As register_business's, and: off, hidden from search; removed, after an opt-out. |
| claimed | No | |
| dropped | No | Each part not taken and why: refused_kind, category_not_listed, contact_detail, not_in_vocabulary, and the like. |
| challenge | No | Put the token in place one of these ways, then call again with proof.method and challenge_id. |
| next_level | No | What it takes to reach the next level, in plain words. |
| score_page | No | Whether its agentic score result page is hidden or shown, when the call set it. |
| want_inbox | No | |
| claim_token | No | Given by a successful register_business: proof again for 90 days, for this listing only. |
| claim_token_expires_at | No |
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
- First observed
check_business - First observed
get_business - First observed
list_attributes - First observed
list_categories - First observed
register_business - First observed
search_businesses - First observed
update_business
Related MCP Connectors
Read any website's pages and action map, and find businesses an agent can act on.
91Discover and book businesses via AI agents.
Verified local businesses, bookable by AI agents: services, prices, availability and appointments.
Directory of APIs, merchants, and tools AI agents can actually use.
Related MCP Servers
- AlicenseAqualityDmaintenanceProvides AI agents with access to real, verifiable businesses with provenance and source URLs, enabling natural-language business search and profile retrieval.2MIT

nod-mcp-serverofficial
AlicenseAqualityFmaintenanceEnables AI agents to discover and interact with businesses by reading structured NOD manifests. Provides tools to look up business capabilities and check if specific actions like ordering food or booking appointments are supported.2MIT- AlicenseAqualityBmaintenanceCountry-agnostic MCP-callable directory for AI agents to find local SMBs — realtors, insurance agents, medical practitioners — by category, location, or natural-language query. Returns business catalog data and UTM-tagged booking URLs (zero PII).5MIT
- AlicenseNot gradedqualityBmaintenanceLets AI agents search merchant product catalogs, obtain signed offers with agent pricing, and run checkout sessions that always settle on the merchant's own payment page. It also scores any website's agent-readiness and exposes the published rubric checks.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.