{"version":4,"name":"Agentic score","status":"in_force","published_at":"2026-11-09T00:00:00Z","effective_at":"2026-11-09T00:00:00Z","summary":"The agentic score says how far an AI agent can go with a business through the doors at its site, those it published itself and those its website platform gives every site it hosts (platform): message, book, order, sign up, cancel and negotiate, and the journey around them. It counts what applies to that kind of business, and what follows from what an agent can do there (where it can book, order or sign up, changing and cancelling that too, and the other steps after it), and nothing else, by the weights below, from what we read on the business's site and at its doors, each with its source and date. It is not a certification, it never changes the directory's search order, and nobody can pay for it.","vocabulary":"https://surfingdog.ai/v1/score-rules#capabilities","capabilities":[{"id":"find","journey":"before","label":"Find","question":"Can an agent read who the business is, its opening hours and where it is?","group":"find"},{"id":"catalogue","journey":"before","label":"Catalogue","question":"Can an agent read its services, products or menu, with prices?","group":"readable"},{"id":"availability","journey":"before","label":"Availability","question":"Can an agent check free slots or stock?","group":"state"},{"id":"message","journey":"before","label":"Message","question":"Can an agent send the business a message and get an answer?","group":"core"},{"id":"negotiate","journey":"before","label":"Negotiate","question":"Can an agent ask for a quote, make an offer or get a counter-offer?","group":"negotiate"},{"id":"book","journey":"doing","label":"Book","question":"Can an agent make a booking, with its details?","group":"core"},{"id":"order","journey":"doing","label":"Order","question":"Can an agent place an order, with its options?","group":"core"},{"id":"signup","journey":"doing","label":"Sign up","question":"Can an agent sign the person up: an account, a membership, a class, a course or a newsletter list for the business's own service?","group":"core"},{"id":"pay","journey":"doing","label":"Pay","question":"Can an agent pay, and is it clear how payment happens?","group":"core"},{"id":"change","journey":"after","label":"Change","question":"Can an agent change a booking or an order?","group":"after"},{"id":"cancel","journey":"after","label":"Cancel","question":"Can an agent cancel a booking or an order?","group":"after"},{"id":"track","journey":"after","label":"Track","question":"Can an agent see the status of a booking, an order or a delivery?","group":"state"},{"id":"return","journey":"after","label":"Return or refund","question":"Can an agent start a return, a refund or an exchange?","group":"after"},{"id":"receipt","journey":"after","label":"Receipt","question":"Can an agent get a receipt or an invoice?","group":"after"},{"id":"feedback","journey":"after","label":"Feedback","question":"Can an agent leave feedback or a review?","group":"unscored"},{"id":"subscription","journey":"ongoing","label":"Membership","question":"Can an agent pause, resume or end a membership or subscription?","group":"after"},{"id":"vouchers","journey":"ongoing","label":"Vouchers","question":"Can an agent use a gift card, a voucher or loyalty points?","group":"unscored"},{"id":"waitlist","journey":"ongoing","label":"Waitlist","question":"Can an agent join a waitlist?","group":"unscored"},{"id":"support","journey":"ongoing","label":"Support","question":"Can an agent raise a complaint or a problem with an order?","group":"unscored"},{"id":"policies","journey":"policies","label":"Policies","question":"Can an agent read the cancellation, return, deposit or no-show policy?","group":"readable"}],"groups":[{"id":"core","weight":40,"members":["message","book","order","signup","pay"]},{"id":"after","weight":30,"members":["change","cancel","return","subscription","receipt"]},{"id":"state","weight":10,"members":["availability","track"]},{"id":"negotiate","weight":5,"members":["negotiate"]},{"id":"readable","weight":10,"members":["catalogue","policies"]},{"id":"find","weight":5,"members":["find"]},{"id":"unscored","weight":0,"members":["feedback","vouchers","waitlist","support"]}],"profiles":[{"id":"appointments","label":"Appointments (salons, clinics, lawyers, advisers, tours)","noun":"a business taking appointments (a salon, a clinic, a dentist, a lawyer, an adviser or a tour)","applicable":["find","catalogue","availability","message","book","pay","change","cancel","feedback","policies"],"groups":["hair-beauty","wellness","photography","tours","auto","health","dental","therapy","legal","accounting","finance","property","recruitment"]},{"id":"classes","label":"Classes, lessons, tutoring and childcare","noun":"a school, a class, a tutor or childcare (lessons, courses, tutoring and day care)","applicable":["find","catalogue","availability","message","book","signup","pay","change","cancel","feedback","policies"],"either":[["book","signup"]],"groups":["education","childcare"]},{"id":"food","label":"Restaurants, bars and food","noun":"a restaurant, a bar or a food business","applicable":["find","catalogue","availability","message","book","order","pay","change","cancel"],"groups":["restaurant","cafe","bakery","bar"]},{"id":"trades","label":"Trades and quote-led services","noun":"a trade or quote-led service","applicable":["message","negotiate","book","pay","change","cancel","receipt"],"groups":["trades","cleaning","repair","consulting","it-services","events"]},{"id":"shop","label":"Shops","noun":"a shop","applicable":["find","catalogue","availability","message","order","pay","change","cancel","track","return","receipt"],"groups":["grocery","shop","florist","pets","crafts"]},{"id":"stay","label":"Places to stay and transport","noun":"a place to stay, or transport (an airline, a ferry, a coach or a taxi)","applicable":["availability","message","book","pay","change","cancel","policies"],"groups":["stay","transport"]},{"id":"memberships","label":"Gyms and memberships","noun":"a gym or membership business","applicable":["find","catalogue","message","book","order","signup","pay","cancel","subscription"],"either":[["order","signup"]],"groups":["fitness"]},{"id":"venues","label":"Venues and events (live music, clubs, theatre, cinema, museums)","noun":"a venue (live music, a club, a theatre, a cinema, a museum or an event space)","applicable":["find","catalogue","availability","message","book","order","signup","pay","change","cancel","policies"],"either":[["book","order","signup"]],"groups":["venues"]},{"id":"general","label":"Business (type unknown)","noun":"a business of a kind not known","applicable":["find","catalogue","message","book","order","signup","pay","policies"],"either":[["book","order","signup"]],"groups":["software-ai"]}],"follows":[{"if":"order","adds":["change","cancel","track","receipt"]},{"if":"order","adds":["return"],"goods":true},{"if":"book","adds":["change","cancel","availability"]},{"if":"signup","adds":["change","cancel","subscription"]}],"goods":{"summary":"A business sells goods when it is scored as a shop, or when it has a live UCP, ACP or Shopify checkout door (a UCP or ACP profile when the site shows it sells: commerce) or a catalogue of at least three products, unless it is a restaurant, a bar or a food business: a takeaway is not returned.","profiles":["shop"],"never":["food"]},"commerce":{"summary":"A UCP or ACP profile counts on a site that shows it sells, and nowhere else. A website platform may publish such a profile for every site it hosts, whether or not the business sells anything, so the profile alone says nothing about the business. It counts once our read finds Product markup with a price on the site's own pages, another door of the site that takes orders, or a product for sale in a UCP profile's own catalogue when our crawler asks it. Without any of them, the profile is shown as a door the site published, and nothing comes from it: not ordering, paying, a catalogue, availability, tracking or returns, and it raises the business no higher than readable.","markup":"Product markup with a price: the site's own pages carry schema.org Product or ProductGroup markup whose offer has a price, or an Offer whose item is a product. A priced menu, a list of services, an event's tickets and an offer with a currency and no price are not; nor are prices a visitor sees on a page without the markup.","cart":"Another door that takes orders: a door of the site other than the profile, which our own read reached, lists a way to order (a cart, checkout or order tool, skill or operation, a Shopify storefront's door, the shop's UCP server on the shop's domain, or an agent inbox that takes orders). A cart page a visitor uses is not one, and neither is a door whose kinds are what someone declared and nothing our read listed, a booking page, a text file or a hook.","catalogue":"Its own catalogue: our crawler asks the catalogue search a UCP profile names over its REST service (dev.ucp.shopping.catalog.search, where the profile says it is, a website platform's address included); a profile whose catalogue is reachable over MCP alone, and an ACP product feed, are not asked. It names itself by a UCP profile of its own, https://network.surfingdog.ai/bot/ucp, which can search and look up a catalogue and do nothing else: one search a site, for three products, after that host's robots.txt, with no cart, no checkout, no booking and nothing about a person. It counts when the catalogue is the site's own (on the site's domain, on the website platform the site is built on, or listing products whose own pages are on the site) and lists at least one product with a price above zero that it says can be bought now (a variant whose availability says available). A catalogue that refuses our crawler, lists nothing, lists products with no price or none that can be bought, or lists nothing but a website template's sample products or services and events, which cannot be bought without a time, does not count; neither does another business's catalogue that a profile names, nor the profile's word that it has a catalogue. A site raised this way is orderable, not payable, unless its profile names a payment handler of the business's own (pay). A UCP or ACP profile never books: the protocol lists products for a checkout, and no times.","awaiting":"A site whose last read came before our reads looked for this evidence, and that shows signs of a shop (payment handlers in its UCP or ACP profile, product links, a basket or add-to-basket buttons on its pages), keeps what its doors gave until we read it again, which we do at once. That read looks at one of its product pages and the profile's own server before anything else.","never":"What a language model read never counts as either. A door that names its tools (an MCP server's create_order) says what that door does, and counts as before.","documentation":"A tool, skill or operation whose name reads documentation gives no capability: one of the words doc, docs, documentation or readme with a verb that reads (read, browse, search, get, list, find, fetch, view, query, open), or those words with a website platform's name and nothing else (WixREADME). A path parameter such as {doc_id} is no word of the name. Reading a platform's developer documentation is not something an agent does for a customer; a business's own tools that create, change or delete its documents count as before.","documentation_words":["doc","docs","documentation","readme"],"documentation_verbs":["read","browse","search","get","list","find","fetch","view","query","open"],"documentation_platforms":["wix","shopify","squarespace","wordpress","woocommerce","webflow","godaddy"]},"pay":{"summary":"Paying counts only for a way to pay the business declared itself or that our own read tested. The capability pay comes from payment handlers in a UCP profile other than the standard ones a website platform's profile gives the stores it hosts, ACP delegated payment, AP2 or x402 declared in the structure of a door's own document (agent_pay), an agent inbox that says it is paid, or a tool, skill or operation, as our read listed it, whose name takes a payment (pay, pay_invoice, create_payment, createPayment) and that its server does not mark read-only. The level payable needs a door that takes orders or bookings and pays: such handlers or ACP delegated payment in its profile, AP2 or x402 declared in its own document, an agent inbox that says it is paid, or a tool our read listed on an MCP server, a WebMCP page or another door that lists tools, whose name takes a payment and that its server does not mark read-only; an A2A skill or an API operation that takes a payment gives the capability, not the level. A name whose only payment word is checkout (checkout, create_checkout, complete_checkout, completeCheckout) orders, and never pays: a checkout may end in a page where a person pays, and nothing says an agent can. A website platform's standard handlers are the platform's word, not the business's: Shopify's dev.shopify.card, dev.shopify.shop_pay and com.google.pay, in a profile that names a dev.shopify handler (nearly every Shopify store's); Wix's com.stripe.payments, in a profile that names Wix's dev.usp-protocol services; Salla's Apple Pay and BigCommerce's com.google.pay, in the profile each serves for a store built on it (platform). A profile with only those lets an agent order, never pay. A door document that names x402 or AP2 in passing is not a way to pay, and an A2A card pays only once its endpoint answered our test call (a2a).","words":["pay","payment","payments"],"platform_handlers":[{"platform":"shopify","marker":"dev.shopify.","handlers":["dev.shopify.card","dev.shopify.shop_pay","com.google.pay"]},{"platform":"wix","marker":"dev.usp-protocol.","handlers":["com.stripe.payments"]},{"platform":"salla","handlers":["Apple Pay"]},{"platform":"bigcommerce","handlers":["com.google.pay"]}]},"a2a":"An A2A agent card counts as a door that takes requests (askable, and bookable or orderable when its skills book or order) only once our read made a harmless test call to the endpoint the card names for its JSON-RPC binding, a tasks/get (GetTask from A2A 1.0) for a task id we made up, with the A2A-Version header, and got back an A2A JSON-RPC answer: a result, or one of A2A's own errors (the task not found). A card whose endpoint is the site's homepage, the card itself, on a site other than the business's own and the host where the business declared the card (at its registration, in a registry or in its manifest), missing, a page for people, another door of the site (an MCP server is never an A2A door), or that gives no such answer is a document an agent can read, not a door it can ask: readable, and nothing comes from its skills. A test call reads and changes nothing: it sends no message, starts no task and needs no account. A card stored before our reads tested one is readable until a read tests it, which we do at once.","platform":{"summary":"Some doors are a website platform's, not the business's: the platform gives the same door to every site it hosts, whether or not the business set it up. They count for what an agent can do there, and every count of the directory and the census says how many sites get there only through one (platform) and how many through a door the business published itself (own). A door is a platform's when it is one listed here: by its address on the site and the tools its server lists, the same on every site the platform hosts, or, for a UCP profile and for the UCP server several platforms serve at one address (/api/ucp/mcp), on a site built on that platform: another door of the site is one only that platform serves, the site's homepage says so, or for Shopify the marks only a Shopify storefront leaves. A UCP profile is a platform's too when it names a payment handler or a capability under that platform's own namespace (Shopify's dev.shopify., Wix's dev.usp-protocol.), and Wix's MCP server is Wix's by its tools, or at /_api/mcp on any site built on Wix. A door at such an address on a site no read ties to the platform is the business's own. Shopify's storefront MCP server and Wix's MCP server (/_api/mcp: the same documentation and site API tools on every Wix site) count as no door of their protocol: neither is counted as an MCP door. Salla's UCP server (/_app/ucp/mcp) and MCP server (/mcp), Jumpseller's and WebForger's MCP servers (/api/mcp), the UCP server Shopify, BigCommerce and Jumpseller serve at /api/ucp/mcp, and the UCP profiles Shopify, Wix, Salla, BigCommerce and Jumpseller serve for their stores are counted as MCP and UCP doors, as the platform's. A question-answering tool a platform puts on every store's door, Shopify's ask_business, answers from the store's knowledge base and policies, one question at a time, and sends nothing to anyone at the business: on a platform's door it is not message, as a request or as a capability, and a tool of that name on a door the business published itself counts as before. Where the directory's own rules (https://surfingdog.ai/v1/ranking: its filters and its order's sources) say a business's own door, they mean a live door at the business's own site, whoever runs it, its platform's included; own, in these counts, is a door the business published itself.","doors":[{"platform":"shopify","type":"shopify_mcp","counts_as":"platform"},{"platform":"wix","type":"mcp","path":"/_api/mcp","tools":["WixREADME"],"counts_as":"platform"},{"platform":"wix","type":"mcp","path":"/_api/mcp","site_platform":"wix","counts_as":"platform"},{"platform":"salla","type":"mcp","path":"/_app/ucp/mcp","counts_as":"mcp"},{"platform":"salla","type":"mcp","path":"/mcp","tools":["checkout-generate"],"counts_as":"mcp"},{"platform":"jumpseller","type":"mcp","path":"/api/mcp","tools":["search_policies"],"counts_as":"mcp"},{"platform":"webforger","type":"mcp","path":"/api/mcp","tools":["search_site","get_page","submit_inquiry"],"counts_as":"mcp"},{"platform":"shopify","type":"mcp","path":"/api/ucp/mcp","site_platform":"shopify","counts_as":"mcp"},{"platform":"bigcommerce","type":"mcp","path":"/api/ucp/mcp","site_platform":"bigcommerce","counts_as":"mcp"},{"platform":"jumpseller","type":"mcp","path":"/api/ucp/mcp","site_platform":"jumpseller","counts_as":"mcp"},{"platform":"shopify","type":"ucp","site_platform":"shopify","marker":"dev.shopify.","counts_as":"ucp"},{"platform":"wix","type":"ucp","site_platform":"wix","marker":"dev.usp-protocol.","counts_as":"ucp"},{"platform":"salla","type":"ucp","site_platform":"salla","counts_as":"ucp"},{"platform":"bigcommerce","type":"ucp","site_platform":"bigcommerce","counts_as":"ucp"},{"platform":"jumpseller","type":"ucp","site_platform":"jumpseller","counts_as":"ucp"}],"answer_tools":["ask_business"]},"credit":{"yes":1,"partial":0.5,"no":0},"evidence":{"declared":1,"tested":1,"proven":1,"produced":["declared","tested"],"means":{"declared":"The business's site, or a door at it, says so: its structured data, its pages, its manifest or its registration, or a door that meets it by what its protocol implies. We have not carried it out.","tested":"Our own read of the door, signed as our crawler, saw the door answer and list it (a tool, a skill or an operation it names, or a kind of item an inbox takes) within the 7 days before the capability was read (checked_at). A read lists what a door offers and does nothing else: we have not carried it out.","proven":"Not given yet: agents' signed outcomes of carrying it out, from platforms this network recognises."}},"requests":"A request counts as doing it. Where an agent can file a request to change, cancel or return something (a change to a booking or an order, a cancellation, a return or a refund) and gets back a reference it can follow to the answer, it counts as yes, the same as a door that carries the request out at once. A person at the business may approve each change, cancellation or refund before it happens: that is a safe design, and it never scores lower.","formula":"For profile P: A_g = members(g) ∩ applicable(P), for each group g with weight \u003e 0, where applicable(P) is P's applicable capabilities and what each of the rules' follows adds when its if is applicable to P and yes or partial (one marked goods when the business sells goods), and the capabilities of one of P's either sets count as one member of A_g, whose halves are the most any of them has. A group with A_g = ∅ is dropped.\npossible = Σ_{g: A_g≠∅} W_g\nN        = Σ_{g: A_g≠∅} W_g × s_g × (60 / |A_g|)      where s_g = Σ_{c∈A_g} halves(c)   (|A_g| ≤ 5; 60 = lcm(1..5))\nD        = 120 × possible\nscore    = (100 × N + D/2) div D                       (round half up; 0..100)\ngrade    = A ≥ 80, B ≥ 60, C ≥ 40, D ≥ 20, E \u003c 20","grades":[{"grade":"A","min":80},{"grade":"B","min":60},{"grade":"C","min":40},{"grade":"D","min":20},{"grade":"E","min":0}],"rank":"whether an agent can book, order or sign up there (yes, then partly, then no or not applicable), then score, then the most recent check, then domain; every board's Websites view (?by=score) orders by score alone, then the most recent check, then domain; over businesses not hidden by their owner and of kinds the directory lists, software, API and AI companies among themselves. Real businesses (listing: a member, a business that registered or whose owner proved the site is theirs, or one whose site our crawler matched to its entry on public maps or in a business register) are labelled and have a list of their own (?real=1); since 21 October 2026 they are not ordered above the rest. A leaderboard numbers the businesses it names 1, 2, 3 and so on; a result page's rank counts every business checked, named or not, in the same order.","named":"A business is named on leaderboards, and its result page may be indexed, once it is agent-ready (askable or above). A local business we found is named once we match its site to its entry on public maps or registers, or its owner proves the site is theirs. Parked, empty or taken-over sites never are. Others are counted, not named. If your site tells AI systems not to use or train on its content, we don't name you or list you publicly.","listing":"Who the directory lists, as amended on 19 October 2026: nothing fake. Members are listed. Businesses that registered, and businesses whose owner proved the site is theirs (a claim), are listed unless our crawler found the site parked (for sale), empty (a host's default page or a coming-soon page) or taken over (gambling or adult pages, or another market's language and nothing of the business): control of a domain is not the business behind it. A business our crawler found on its own website is listed when an AI agent can already ask, book or buy there (askable or above), never when our crawler found its site parked, empty or taken over, and, when it is a local business (any kind but an online shop, the group shop, or a software, API or AI company, the group software-ai; a business of a known kind in no group is a local business unless every group its kinds name is one of those two), once it is a real business: a member, registered or claimed, or a site our crawler read and matched to its entry in open map data or a public business register: the entry's name with its town, postcode or phone on the site's own pages, or, under another name, its phone with its town or postcode. Online shops and software, API and AI companies are listed on their doors, in their own groups, as since 7 October 2026: they have no shop front to match, and a chain's online shop names its brand, not the branch a map shows. A local business not matched yet is counted, not named, and is listed once its site is matched or its owner proves the site is theirs (free, at https://surfingdog.ai/b/\u003cdomain\u003e/owner). Leaderboards name the same businesses (rank). Map data and registers: Overture Maps (© Overture Maps Foundation), OpenStreetMap (© OpenStreetMap contributors), Brønnøysundregistrene (NLOD 2.0) and PRH (CC BY 4.0, https://creativecommons.org/licenses/by/4.0/).","directory":"The agentic score never changes a business's place in the directory's search order (https://surfingdog.ai/v1/ranking).","not_certification":"This is not a certification: it is what was read on the business's site and at its doors on the date shown.","fixes":{"find":{"title":"Publish who you are, when you are open and where","how":"Add schema.org LocalBusiness markup (its most specific type) with name, address, geo and openingHoursSpecification."},"catalogue":{"title":"Publish your services and prices for machines","how":"Add schema.org Service, Product or Menu items with Offer prices to your pages, or add a tool such as list_services\u003cdoor\u003e. A UCP or ACP catalogue counts once our read finds Product markup with prices on your pages, another door of yours that takes orders, or a product for sale with a price in the catalogue your UCP profile names over its REST service.","protocol":"Publish your catalogue with its prices\u003cdoor\u003e."},"availability":{"title":"Let agents check availability","how":"Add a tool or operation such as check_availability\u003cdoor\u003e, or publish stock with your catalogue.","protocol":"Publish stock with your catalogue\u003cdoor\u003e.","by_profile":{"venues":{"how":"Add a tool or operation such as check_availability\u003cdoor\u003e that says which dates, seats or tables are free."}}},"message":{"title":"Let agents send you a message","how":"Publish a door that takes messages: an agent inbox, an A2A agent whose endpoint answers, or a tool such as send_message\u003cdoor\u003e.","by_profile":{"shop":{"how":"Publish a door where an agent can ask a question before buying or raise a problem after it: a tool such as send_message or create_support_ticket\u003cdoor\u003e, a support service with an MCP server declared in your UCP profile, or an agent inbox."}}},"negotiate":{"title":"Let agents ask for a quote","how":"Add a tool such as request_quote or make_offer\u003cdoor\u003e, or take quote requests in an agent inbox."},"book":{"title":"Let agents book","how":"Add a tool or operation that creates a booking, such as create_booking or POST /bookings\u003cdoor\u003e; if you use a booking platform, ask it whether it offers an agent door and declare it.","by_profile":{"venues":{"title":"Let agents book or buy tickets","how":"Add a tool or operation that books tickets, a table or an entry, such as create_booking or POST /bookings\u003cdoor\u003e, or sell tickets through UCP or ACP checkout; signing a person up as a member counts too. If you sell through a ticketing or booking platform, ask it whether it offers an agent door and declare it."},"general":{"title":"Let agents book, order or sign up","how":"Add a tool or operation that creates a booking, an order or a sign-up, such as create_booking, create_order or sign_up\u003cdoor\u003e, or publish UCP or ACP checkout; any one of them counts. If you use a booking platform, ask it whether it offers an agent door and declare it."},"classes":{"title":"Let agents book or enrol","how":"Add a tool or operation that books a lesson or enrols a person in a class or a course, such as create_booking, enrol or POST /enrolments\u003cdoor\u003e; either one counts. If you use a booking platform, ask it whether it offers an agent door and declare it."}}},"order":{"title":"Let agents order","how":"Publish UCP or ACP checkout and mark up your products with their prices (schema.org Product) on your pages, or add a tool or operation that creates an order, such as create_order\u003cdoor\u003e. A checkout profile counts once our read finds that markup, or another door of yours that takes orders, such as your shop's MCP server; a cart page alone doesn't count.","by_profile":{"memberships":{"title":"Let agents sign people up","how":"Add a tool or operation that signs a person up or sells a membership, such as sign_up, create_membership or POST /members\u003cdoor\u003e, or publish UCP or ACP checkout for memberships; either one counts."}},"protocol":"Publish checkout\u003cdoor\u003e."},"signup":{"title":"Let agents sign people up","how":"Add a tool or operation that signs a person up for an account, a membership, a class or a newsletter list, such as sign_up, create_account or POST /members\u003cdoor\u003e. Logging in is not signing up."},"pay":{"title":"Let agents pay","how":"Accept payment through the agent with a way to pay of your own (payment handlers in your own UCP profile, ACP delegated payment, AP2 or x402 declared in your door's document, or a tool that takes a payment, such as pay_invoice or create_payment\u003cdoor\u003e), and state in your structured data how payment happens. A checkout tool alone lets an agent order, and a website platform's standard payment handlers are the platform's, not yours.","protocol":"Publish payment handlers of your own (UCP) or delegated payment (ACP)\u003cdoor\u003e: a website platform's standard handlers are the platform's, not yours."},"change":{"title":"Let agents change a booking or an order","how":"Add a tool or operation such as reschedule_booking or PATCH /orders/{id}\u003cdoor\u003e.","by_profile":{"shop":{"how":"Add a tool or operation such as update_order or PATCH /orders/{id}\u003cdoor\u003e."},"appointments":{"how":"Add a tool or operation such as reschedule_booking or PATCH /bookings/{id}\u003cdoor\u003e."},"stay":{"how":"Add a tool or operation such as change_reservation or PATCH /reservations/{id}\u003cdoor\u003e."},"venues":{"how":"Add a tool or operation such as change_booking or PATCH /bookings/{id}\u003cdoor\u003e, for a date, a seat or the number of tickets."},"general":{"title":"Let agents change a booking, an order or a membership","how":"Add a tool or operation that changes what an agent booked, ordered or signed up for, such as reschedule_booking, update_order or update_membership\u003cdoor\u003e."}},"protocol":"Publish order management with changes to an order\u003cdoor\u003e, or add a tool or operation such as update_order."},"cancel":{"title":"Let agents cancel","how":"Add a tool or operation such as cancel_booking or DELETE /bookings/{id}\u003cdoor\u003e, and publish your cancellation policy.","by_profile":{"shop":{"how":"Add a tool or operation such as cancel_order or DELETE /orders/{id}\u003cdoor\u003e, and publish your cancellation policy."},"venues":{"how":"Add a tool or operation such as cancel_booking or DELETE /bookings/{id}\u003cdoor\u003e, and publish your refund and exchange policy for tickets."},"general":{"how":"Add a tool or operation that cancels a booking or an order, or ends a membership or an account, such as cancel_booking, cancel_order or end_membership\u003cdoor\u003e, and publish your cancellation policy."}},"protocol":"Publish order management with cancelling an order\u003cdoor\u003e, and publish your cancellation policy."},"track":{"title":"Let agents see the status","how":"Add a tool or operation such as get_order_status or GET /orders/{id}\u003cdoor\u003e.","protocol":"Publish order management with an order's status\u003cdoor\u003e."},"return":{"title":"Let agents start a return or refund","how":"Add a tool such as request_return\u003cdoor\u003e, and mark up your returns policy (schema.org MerchantReturnPolicy).","protocol":"Publish returns\u003cdoor\u003e, and mark up your returns policy (schema.org MerchantReturnPolicy)."},"receipt":{"title":"Let agents get a receipt or invoice","how":"Add a tool or operation such as get_invoice\u003cdoor\u003e."},"subscription":{"title":"Let agents manage a membership","how":"Add tools to pause, resume or end a membership\u003cdoor\u003e."},"policies":{"title":"Publish your policies for machines","how":"Mark up your returns policy (schema.org MerchantReturnPolicy), link your cancellation, deposit and no-show policies from your pages, or add a tool that returns them\u003cdoor\u003e.","by_profile":{"appointments":{"how":"Link your cancellation, deposit and no-show policies from your pages and state their terms in words (such as \"free cancellation up to 24 hours before\"), or add a tool that returns them\u003cdoor\u003e."},"food":{"how":"Link your cancellation, deposit and no-show policies from your pages and state their terms in words (such as \"free cancellation up to 24 hours before\"), or add a tool that returns them\u003cdoor\u003e."},"stay":{"how":"Link your cancellation, deposit and no-show policies from your pages and state their terms in words (such as \"free cancellation up to 24 hours before\"), or add a tool that returns them\u003cdoor\u003e."},"memberships":{"how":"Link your cancellation, deposit and no-show policies from your pages and state their terms in words (such as \"free cancellation up to 24 hours before\"), or add a tool that returns them\u003cdoor\u003e."},"venues":{"how":"Link your cancellation, deposit and no-show policies from your pages and state their terms in words (such as \"free cancellation up to 24 hours before\"), or add a tool that returns them\u003cdoor\u003e."},"general":{"how":"Link your cancellation, deposit and no-show policies from your pages and state their terms in words (such as \"free cancellation up to 24 hours before\"), or add a tool that returns them\u003cdoor\u003e."}}}},"changelog":[{"version":1,"summary":"The agentic score: capabilities by kind of business, published weights, declared evidence."},{"version":1,"amended":"2026-10-07","summary":"The category group software-ai (software, API and AI companies), new on this day, is scored under the general profile. Before it, such a business had no group and took its profile from its signals (a shop's door or catalogue, a door that books), else general. No other rule changed."},{"version":2,"published":"2026-10-07","summary":"Version 2. The general profile (a business whose kind is not known, and software, API and AI companies) is now scored on whether an agent can book, order or sign up there: book and order count together as one capability of the core group, and sign up with them (yes when any of them is yes, partly when any is partly), so its core group is message, book or order or sign up, and pay, still weighing 40. Under version 1 none applied to it, so a site where an agent could send a message and do nothing else scored as high as one where it could also book or buy; a clinic, a dentist, a therapist, a lawyer, a bar or a software company that takes no booking, order or sign-up through an agent now scores lower than before. Venues and events (live music, jazz clubs and nightclubs, theatres, cinemas, concert halls, comedy clubs, museums and galleries, event spaces) are now a kind of business of their own, the profile venues, where booking tickets, a table or an entry, ordering them, or signing up, counts the same way. Sign up is a capability of its own (can an agent sign the person up: an account, a membership, a class, a course or a newsletter list for the business's own service?), in the core group, met by a tool, skill or operation that signs a person up (sign_up, register, create_account, joining a club, a class or a membership, enrol, a schema.org RegisterAction or JoinAction), never by one that logs a person in and nothing more, nor by one that registers a tool, a model, a webhook or a passkey, joins tables, or adds staff or team members. It applies where it is natural: for a business of a kind not known and for venues it counts with book and order as one; for gyms and memberships it counts with order as one (joining is buying the membership); and classes, lessons and tutoring are now a kind of business of their own, the profile classes (before, scored as appointments, with the same weights), where booking a lesson or enrolling counts as one. No group's weight changed, and a business that signs nobody up scores as it did. A fix for book, order or sign up is one fix. Every stored score is worked out again under version 2; version 1 stays published at /v1/score-rules?version=1. With version 2 every leaderboard puts the businesses where an agent can book, order or sign up above the rest (yes, then partly, then no or not applicable), then orders them by score (rank); the score itself is not changed by that order. Clinics, dentists, therapists and lawyers are scored as appointment businesses (booking counts, ordering does not apply), and bars with food and drink (booking a table or ordering both count); under version 1 they fell under the general profile. The directory now lists every kind of business but adult services, gambling, weapons, tobacco, cannabis and vaping, payday loans and bail bonds, and each kind it now lists is scored where its own actions apply: banks, insurance, financial advice and loans (the group finance), estate agents (property) and recruitment agencies (recruitment) as appointment businesses, and accountants too (scored as trades under version 1); childcare as classes, where booking or enrolling counts as one; passenger transport (airlines, ferries, coaches, taxis and drivers, the group transport) with places to stay, where checking availability, booking, changing and cancelling apply; wineries and distilleries with bars; pharmacies, drugstores and hearing aids as shops; and licensed trades (electricians, plumbers, locksmiths and the like) as trades."},{"version":2,"amended":"2026-10-08","summary":"Version 2, amended: what counts now follows what a business lets an agent do, on top of its kind (the rules' follows). Where an agent can order (yes or partly), changing, cancelling and tracking the order and getting a receipt count too, and a return or refund when the business sells goods (a shop, a UCP, ACP or Shopify checkout, or a catalogue of products; never a restaurant's takeaway). Where it can book, changing and cancelling the booking and checking availability count. Where it can sign a person up, changing and ending the membership or account, and managing the membership, count. Why: what a kind of business counted was fixed in advance, so a business of a kind not known where an agent could order and pay, and do nothing after it (no change, no cancel, no tracking, no receipt), scored 100, as high as one where an agent can see the whole thing through; a full score now needs the steps after it. What a kind of business already counted stays as it was, no group's weight and no grade changed, book, order and sign up still count as one where they did, and a business where an agent can do none of them scores as before. A fix that lets an agent book, order or sign up now counts the steps it brings with it, done as well, and says so. Every stored score is worked out again under the amended rules."},{"version":2,"amended":"2026-10-12","summary":"Version 2, amended: a request counts as doing it (requests). Where an agent can file a request to change, cancel or return something and gets back a reference it can follow to the answer, that counts the same as a door that carries the request out at once, whether or not a person at the business approves it. Why: a business where a person approves each refund, or each change to an order already paid for, has chosen a safe design, and must not score lower than one that refunds the moment an agent asks. On the same day, how a door is read was corrected in the door registry the checker reads doors by: a tool, skill or operation that acts on an order that exists, to change it (update_order, modify_order, submit_order_change, PATCH /orders/{id}), cancel it, return or refund it, or get its receipt, is read as that step and not as placing an order, so a shop where an agent can fill a basket for a person to pay, and change an order afterwards, now reads as taking orders partly, not in full; and an order taken in an agent inbox (Surfing Dog Inbox) now counts changing the order and getting its receipt too, since the inbox takes an agent's request to change an accepted order and gives the agent the order's signed receipts. No group's weight, no kind of business and no grade changed. Every stored score is worked out again under the amended rules."},{"version":2,"amended":"2026-10-12","summary":"Version 2, amended: message counts for every kind of business, shops included. Where an agent can send a business a message and get an answer, a question before buying or a problem after it, that now counts for a shop, and for a gym or membership business, as it already did for every other kind. It sits in the core group beside ordering and paying, as it does for the other kinds: for a shop, message, order and pay are now a third of the core group each, about 14 of 100 points, where order and pay were a half each, about 21; for a gym, message, book, order or sign up (one), and pay are a quarter of it each. A support or customer service channel an agent can use counts as message: a tool that sends a message or contacts the business, an agent inbox, and, as the door registry the checker reads doors by now says, a tool that opens a support ticket or files a complaint; and a support service a shop declares in its UCP profile, with an MCP server on its own domain, is now read as a door of the site, its tools with it. Why: a full interaction with a business includes being able to ask it something, and a shop an agent can buy from but never reach when something goes wrong does not offer one; before, such a shop could score 100. Sign up, book and negotiate still don't count for shops. Cancelling a cart, basket or checkout is not cancelling an order or a booking, so it no longer counts as cancel, nor as paying. No group's weight and no grade changed, and every other kind of business counts what it counted before. Every stored score is worked out again under the amended rules."},{"version":3,"published":"2026-10-13","summary":"Version 3: how we know a capability can say tested. Until now every capability was declared: the business's own site or door says so. Now a capability met by a door is tested when our own read of that door, signed as our crawler, saw it answer and list the capability (a tool, a skill or an operation it names, or a kind of item an inbox takes) in the 7 days before the capability was read; anything else stays declared. A read lists what a door offers and does nothing else; we never carry it out, so tested says the door was there and named it, not that a booking or an order went through. Why: a door we read ourselves that week is stronger evidence than a page that says a door exists, and an agent choosing where to go should see the difference. The evidence label is what changed, and nothing else: every weight is still 1, so no score, no group's weight and no grade changed. Version 2 stays published at /v1/score-rules?version=2."},{"version":3,"amended":"2026-10-15","summary":"Version 3, amended: a UCP or ACP profile counts on a site that shows it sells, and nowhere else (commerce). A website platform publishes the same shopping profile for every site it hosts, whether or not the business sells anything: we read restaurants, clinics and flooring firms, among others, as taking orders and having a catalogue because their platform serves one: about 11,600 sites on 15 October, three in four of those we counted as agent-ready. Now such a profile counts when the site shows Product or Offer markup with a price on its own pages, or a working cart: another door of the site, which our own read reached, that lists a way to order. Without either, it is shown as a door the site published and nothing comes from it: not ordering, paying, a catalogue, availability, tracking or returns, and the business is not counted as a shop for it. A tool, skill or operation whose name says it reads documentation (doc, docs, documentation, readme) gives no capability: a platform's developer-documentation tool had been read as a catalogue. The directory now calls the level of a business whose doors take orders and no bookings orderable, not bookable; the two share one rung, as they did. Why: the profile alone said nothing about the business, and the counts the site shows must hold up for any business a reader looks at. No group's weight, no kind of business and no grade changed, and a business whose site shows it sells, or that names its own tools, counts as before. In force at once, as decided on 15 October 2026: no business is a member yet but ours, and the rules lower no member. Every stored score and level is worked out again under the amended rules."},{"version":3,"amended":"2026-10-18","summary":"Version 3, amended again before the amendment of 15 October was published, the two in force together: what shows a site sells is narrower, and said as our read checks it. Product markup with a price is schema.org Product or ProductGroup markup whose offer has a price, or an Offer whose item is a product: a priced menu, a list of services, an event's tickets, an offer with a currency and no price and an AggregateOffer on its own no longer count. Another door that takes orders is as before, and the shop's own UCP server on its own domain is one when our read reached it. Our reads now look at one of a site's product pages and its profile's own server before anything else; earlier reads had often spent their budget on other documents and reached neither. So a site whose last read came before that, and that shows signs of a shop (payment handlers in its UCP or ACP profile, product links, a basket or add-to-basket buttons on its pages), keeps what its doors gave until we read it again, which we do at once: 299 sites on 18 October, real shops among them, which the amendment of 15 October would have marked down. The documentation rule now reads names that read documentation: doc, docs, documentation or readme with a verb that reads, or with a website platform's name and nothing else; a path parameter such as {doc_id} is no word of the name, and a business's own tools that create, change or delete its documents count as before. Measured on 18 October 2026 over production's 25,370 sites with a UCP or ACP profile: 16,978 levels lowered and 299 kept for a read, 53 of the lowered on markup the amendment of 15 October would have counted; agent-ready businesses in the directory 25,566 before the two amendments and about 8,600 after, taking orders 25,092 before and about 8,300 after. Outside those sites the documentation rule takes the catalogue from 140, which a platform's documentation tool had given it, and lowers no level. Why: a business that sells must not be shown as one that doesn't because our read stopped short, and a count is right for every business in it. No group's weight, no kind of business and no grade changed. In force at once with the amendment of 15 October; every stored score and level is worked out again."},{"version":3,"amended":"2026-10-18","summary":"Version 3, amended a third time on 18 October 2026, the three amendments in force together: a UCP profile also counts when its own catalogue shows the business sells (commerce, catalogue). Our crawler asks the catalogue search the profile names over its REST service, as an agent would, and names itself by a UCP profile of its own (https://network.surfingdog.ai/bot/ucp), which can search and look up a catalogue and do nothing else: one search a site, for three products, after that host's robots.txt, with no cart, no checkout, no booking and nothing about a person. A profile whose catalogue is reachable over MCP alone, and an ACP product feed, are not asked. The profile counts when that catalogue is the site's own and lists at least one product with a price above zero that it says can be bought now; a catalogue that refuses our crawler, lists nothing, lists products with no price or none that can be bought, or lists nothing but a website template's sample products or services and events, does not, and neither does another business's catalogue, nor the profile's word that it has a catalogue. A site raised this way is orderable, not payable, unless its profile names a payment handler. A UCP or ACP profile never books: the protocol lists products for a checkout, and no times. Our read also finds a product page in a site's product sitemap when its homepage ends, at our read's limit of 512 KB, before its product links, and a template's sample products are never that page; its Product markup with a price counts as any page's does (commerce, markup). Why: a website platform serves the same profile on every site it hosts, and names in it the platform's own catalogue for that site; under the amendment of 15 October the profile is set aside on some 17,400 sites, nearly all of them built on one website platform, shops among them whose product markup our read never reached, and the catalogue and the product pages are what tell a shop from a restaurant or a clinic on the same platform. Measured on 18 October 2026: of the some 17,400 sites set aside, 14,539 had a homepage longer than our read's limit; of 16 of those drawn at random, 2 list store products in their sitemap, 1 of them with a product page that carries Product markup with a price, the other a template's sample products alone, whose pages are gone. Asked without a profile of its own, the platform's catalogue refused our crawler on every site we tried, a shop's as well as a restaurant's, so whether it answers a crawler that names one is known once our reads ask it. Sites set aside are read again within seven days, each read looking at the product sitemap when the homepage is cut; the reads that ask a catalogue begin with a few sites, and the rest follow once those answers have been looked at. No group's weight, no kind of business and no grade changed, and no business is lowered. In force at once; every stored score and level is worked out again."},{"version":3,"amended":"2026-10-19","summary":"Version 3, amended on 19 October 2026: who the directory lists and a leaderboard names (listing), with real businesses above the rest. A local business our crawler found on its own website (any kind but an online shop or a software, API or AI company) is listed and named when it is a real business: a member, registered or claimed, or a site our crawler read and matched to its entry in open map data or a public business register, by the entry's name with its town, postcode or phone on the site's own pages, or, under another name, by its phone with its town or postcode. A site our crawler found parked, empty or taken over is never listed or named, found, registered or claimed alike, unless it is a member's. Online shops and software, API and AI companies are listed on their doors in their own groups, as before; every leaderboard and list puts real businesses above the rest, then orders them as before (rank). Why: our crawler now reads business websites that open map data names, and such a site can belong to a business that has moved on, be a domain for sale or a host's empty page, or have been taken over by a gambling site, and still answer at a door an agent can use; a local business's entry tells a person where to go, so it has to be the business it names, and control of a domain, which whoever buys an expired one has, is not the business behind it. A local business not matched yet is counted, not named, and listed once its site is matched, which a new check of the site can do, or its owner proves the site is theirs. Measured on 19 October 2026: of the 10,202 businesses the directory listed, about 350 leave it (246 local businesses whose site our crawler had not matched yet, which it reads again at once; 82 that the map data does not hold, 68 of them with a door an agent can order through; 12 whose pages our reader cannot read; 7 whose site does not match its entry or is not a business's; 3 empty or taken over), and about 5,711 held back since 18 October join it (5,501 online shops and software companies, and 210 local businesses matched to their entry), about 15,563 in all; leaderboards name about 15,587 of the 16,016 agent-ready businesses, where they named all of them, and about 4,628 of those are real businesses, which the home page now counts. No score, weight, kind of business or grade changed. In force at once; every listing and score is worked out again."},{"version":3,"amended":"2026-10-21","summary":"Version 3, amended on 21 October 2026: real businesses are no longer ordered above the rest on leaderboards. A local business is still listed and named only as a real business; an online shop or a software, API or AI company, which no map lists, is no longer ranked below them for that. Real businesses keep their label and their own list (?real=1), and every board gains a Websites view (?by=score) that orders by agentic score alone."},{"version":4,"published":"2026-11-09","summary":"Version 4: what counts as paying and as asking is what the business published itself or what our own read tested, and every count says how many sites get there through a door of the business's own and how many only through one its website platform gives every site it hosts (platform). Paying, the capability pay and the level payable, counts only for a way to pay the business declared itself or our read tested (pay): a website platform's standard payment handlers (Shopify's three, on nearly every Shopify store; Wix's com.stripe.payments; Salla's Apple Pay; BigCommerce's com.google.pay) and a tool whose only payment word is checkout let an agent order, not pay, and a door that names x402 or AP2 in passing is no way to pay. An A2A agent card counts as a door that takes requests only once a harmless test call to its endpoint got an A2A answer (a2a); a card that points at its homepage, itself, another site, an MCP server or nothing is readable. Wix's MCP server, the same on every Wix site, is a platform's door, as Shopify's storefront server is, and is not counted as an MCP door; Salla's, Jumpseller's, WebForger's and BigCommerce's doors, the same on every store, count on the platform's side; Shopify's ask_business, which answers from a store's own knowledge base and policies and sends the business nothing, is not message. Why: on 8 November 2026 about 75,000 of 97,500 agent-ready sites counted as payable through handlers and tools their platform gives every store, which no business chose; about 9,000 counted as taking messages through a tool that reaches no one at the business; and most A2A cards pointed at a homepage or answered nothing. No weight, group or grade changed. Every stored level and score is worked out again under version 4, and a site whose A2A card no read has tested, or that is still payable and whose platform no read has named, is read again at once."}]}