{"id":1474825,"recorded_at":"2026-10-31T01:28:53.840581Z","observed_at":"2026-10-31T01:28:53.840325Z","subject_kind":"endpoint","subject":"244cf130-b3a7-4074-8961-d32760ce7f2f","kind":"mcp.tools","method":"probe.mcp/1","body":{"count":11,"tools":[{"description":"Generate LocalBusiness JSON-LD (schema.org) from business details and validate it against Google's rich result rules. Returns the JSON-LD, a ready-to-paste <script> tag and issues to fix. No API key needed.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"acceptsReservations":{"type":"boolean"},"address":{"additionalProperties":false,"properties":{"addressCountry":{"description":"ISO 3166-1 alpha-2, e.g. NL or US","maxLength":60,"type":"string"},"addressLocality":{"maxLength":120,"type":"string"},"addressRegion":{"maxLength":120,"type":"string"},"postalCode":{"maxLength":20,"type":"string"},"streetAddress":{"maxLength":200,"type":"string"}},"type":"object"},"alternateName":{"maxLength":200,"type":"string"},"areaServed":{"items":{"maxLength":120,"type":"string"},"maxItems":50,"type":"array"},"businessType":{"default":"LocalBusiness","description":"schema.org type, e.g. Dentist, Plumber, Restaurant. See /business-types.","maxLength":60,"type":"string"},"currenciesAccepted":{"items":{"maxLength":3,"minLength":3,"type":"string"},"maxItems":10,"type":"array"},"description":{"maxLength":2000,"type":"string"},"email":{"maxLength":200,"type":"string"},"foundingDate":{"pattern":"^\\d{4}(-\\d{2}-\\d{2})?$","type":"string"},"geo":{"additionalProperties":false,"properties":{"latitude":{"maximum":90,"minimum":-90,"type":"number"},"longitude":{"maximum":180,"minimum":-180,"type":"number"}},"required":["latitude","longitude"],"type":"object"},"hasMap":{"$ref":"#/properties/url"},"images":{"items":{"$ref":"#/properties/url"},"maxItems":20,"type":"array"},"isAcceptingNewPatients":{"type":"boolean"},"knowsLanguage":{"items":{"maxLength":40,"type":"string"},"maxItems":20,"type":"array"},"legalName":{"maxLength":200,"type":"string"},"logo":{"$ref":"#/properties/url"},"medicalSpecialty":{"maxLength":80,"type":"string"},"menu":{"$ref":"#/properties/url"},"name":{"description":"Public business name","maxLength":200,"minLength":1,"type":"string"},"openingHours":{"description":"Regular hours. Days not listed are closed. Use two entries for split hours.","items":{"additionalProperties":false,"properties":{"allDay":{"description":"Open 24 hours on these days","type":"boolean"},"closes":{"$ref":"#/properties/openingHours/items/properties/opens"},"days":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"}],"description":"Day names or ranges: \"Mo-Fr\", [\"Saturday\"]"},"opens":{"pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","type":"string"}},"required":["days"],"type":"object"},"maxItems":21,"type":"array"},"paymentAccepted":{"items":{"maxLength":60,"type":"string"},"maxItems":20,"type":"array"},"priceRange":{"description":"e.g. €€ or €20-€80","maxLength":30,"type":"string"},"rating":{"additionalProperties":false,"description":"LocalSchema Pro — omitted from free output","properties":{"bestRating":{"exclusiveMinimum":0,"type":"number"},"ratingValue":{"maximum":100,"minimum":0,"type":"number"},"reviewCount":{"minimum":0,"type":"integer"}},"required":["ratingValue","reviewCount"],"type":"object"},"reviews":{"description":"LocalSchema Pro — omitted from free output","items":{"additionalProperties":false,"properties":{"author":{"maxLength":120,"minLength":1,"type":"string"},"body":{"maxLength":2000,"type":"string"},"datePublished":{"pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"rating":{"maximum":100,"minimum":0,"type":"number"}},"required":["author","rating"],"type":"object"},"maxItems":20,"type":"array"},"sameAs":{"description":"Google Business Profile, Yelp, Facebook, LinkedIn… profile URLs","items":{"$ref":"#/properties/url"},"maxItems":30,"type":"array"},"servesCuisine":{"items":{"maxLength":60,"type":"string"},"maxItems":20,"type":"array"},"serviceAreaOnly":{"description":"True for service-area businesses without a storefront (address is hidden)","type":"boolean"},"services":{"items":{"additionalProperties":false,"properties":{"description":{"maxLength":500,"type":"string"},"name":{"maxLength":120,"minLength":1,"type":"string"},"price":{"minimum":0,"type":"number"},"priceMax":{"minimum":0,"type":"number"},"priceType":{"enum":["fixed","from","range"],"type":"string"},"unitText":{"maxLength":40,"type":"string"},"url":{"$ref":"#/properties/url"}},"required":["name"],"type":"object"},"maxItems":50,"type":"array"},"slogan":{"maxLength":200,"type":"string"},"specialHours":{"description":"Holiday exceptions (LocalSchema Pro — omitted from free output)","items":{"additionalProperties":false,"properties":{"closed":{"type":"boolean"},"closes":{"$ref":"#/properties/openingHours/items/properties/opens"},"label":{"maxLength":80,"type":"string"},"opens":{"$ref":"#/properties/openingHours/items/properties/opens"},"validFrom":{"pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"validThrough":{"pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"}},"required":["validFrom"],"type":"object"},"maxItems":30,"type":"array"},"telephone":{"description":"International format, e.g. +31 50 123 4567","maxLength":40,"type":"string"},"url":{"description":"Website URL (https://…)","maxLength":2000,"type":"string"}},"required":["name"],"type":"object"},"name":"generate_schema"},{"description":"Get the install snippet and live status for a LocalSchema hosted embed key (loc_… for one location, org_… for a client with several). Paste the script tag once; published updates reach the site automatically.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"key":{"description":"Hosted embed key","pattern":"^(?:loc|org)_[a-z0-9]{6,32}$","type":"string"}},"required":["key"],"type":"object"},"name":"get_embed_snippet"},{"description":"Get one saved location: its business fields (in the same shape save_location accepts), the current JSON-LD, the published JSON-LD, validation issues and embed details. Needs a LocalSchema Pro API key in the request headers.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"location_id":{"description":"Location id from list_locations","format":"uuid","type":"string"}},"required":["location_id"],"type":"object"},"name":"get_location"},{"description":"List the schema.org LocalBusiness subtypes LocalSchema supports (Dentist, Plumber, Restaurant, …). Use the most specific one as businessType.","inputSchema":{"properties":{},"type":"object"},"name":"list_business_types"},{"description":"List the agency's clients (brands) with their location counts, client-wide embed script and white-label report link. Needs a LocalSchema Pro API key in the request headers.","inputSchema":{"properties":{},"type":"object"},"name":"list_clients"},{"description":"List the business locations saved in the LocalSchema account: publish state, hosted embed script, website and latest health check score. Needs a LocalSchema Pro API key in the request headers.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"client_id":{"description":"Only this client's locations","format":"uuid","type":"string"}},"type":"object"},"name":"list_locations"},{"description":"Run a schema health check for a saved location: validates its markup, scans its website for the embed and conflicting hard-coded schema, detects unpublished changes and records the result in the dashboard and client reports. Needs a LocalSchema Pro API key in the request headers.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"location_id":{"description":"Location id from list_locations","format":"uuid","type":"string"}},"required":["location_id"],"type":"object"},"name":"run_health_check"},{"description":"Create a client (brand) or update one by client_id, and optionally turn its white-label health report link on or off. Needs a LocalSchema Pro API key in the request headers.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"client_id":{"description":"Update this client. Omit to create one.","format":"uuid","type":"string"},"contact_email":{"description":"Contact email. When updating, omit to keep it or send \"\" to clear it.","maxLength":255,"type":"string"},"contact_name":{"description":"Contact person. When updating, omit to keep it or send \"\" to clear it.","maxLength":160,"type":"string"},"name":{"description":"Client (brand) name. Required when creating; omit to keep it when updating.","maxLength":160,"minLength":1,"type":"string"},"report":{"description":"true turns the client's white-label health report link on, false turns it off. Omit to leave it.","type":"boolean"},"website":{"description":"Brand website; links every branch to one Organization in the client embed. When updating, omit to keep it or send \"\" to clear it.","maxLength":500,"type":"string"}},"type":"object"},"name":"save_client"},{"description":"Save a business location to the LocalSchema account — create one, or update one by location_id (only the business fields you send change) — and optionally publish it to its hosted embed so the client's site updates without code changes. Needs a LocalSchema Pro API key in the request headers.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"business":{"additionalProperties":{},"description":"Business fields in the same shape as generate_schema (name, businessType, address, openingHours, services, …). When updating, only the fields you send change; address merges field by field, lists are replaced.","type":"object"},"client_id":{"anyOf":[{"$ref":"#/properties/location_id"},{"type":"null"}],"description":"Assign to a client (see list_clients); null removes the assignment. Omit to keep the current client."},"location_id":{"description":"Update this location. Omit to create a new one (counts toward the plan's location limit).","format":"uuid","type":"string"},"publish":{"description":"Publish to the hosted embed now. Default false (saved as a draft).","type":"boolean"},"website_url":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"description":"Page where the hosted embed is installed; health checks scan it. Defaults to business.url."}},"required":["business"],"type":"object"},"name":"save_location"},{"description":"Fetch a public web page and audit its structured data: every JSON-LD block and type, the LocalBusiness markup's errors and warnings, LocalSchema embeds on the page and concrete recommendations. No API key needed.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"url":{"description":"Public http(s) address, e.g. https://example.com/contact","maxLength":2000,"minLength":4,"type":"string"}},"required":["url"],"type":"object"},"name":"validate_page"},{"description":"Validate existing LocalBusiness structured data: paste JSON-LD, a <script type=\"application/ld+json\"> tag or a whole HTML page. Reports errors, missing recommended fields and best-practice warnings. No API key needed.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"code":{"description":"JSON-LD text, a script tag, or full page HTML","maxLength":600000,"minLength":1,"type":"string"}},"required":["code"],"type":"object"},"name":"validate_schema"}]},"body_sha256":"1ebed06e0c08ecaf3cf23c66fd125b7e432dc340356f661d728267c1a0ddd635","prev_id":null,"leaf":"0xf933a4aa120e25de6ef93a3d571029a2b98907bb480b780308a0941c1aacd530","leaf_text":"{\"body\":\"1ebed06e0c08ecaf3cf23c66fd125b7e432dc340356f661d728267c1a0ddd635\",\"id\":1474825,\"kind\":\"mcp.tools\",\"method\":\"probe.mcp/1\",\"observed_us\":1793410133840325,\"prev\":null,\"subject\":\"244cf130-b3a7-4074-8961-d32760ce7f2f\",\"subject_kind\":\"endpoint\"}","day":{"day":"2026-10-31","leaves":246033,"root":"0x24463725d1c0d9894bd6123691d532547aaa79f0762c0e45aa6a68acf1fd71ab","chained":"0x7d4824ff313dee7252a46f9d5c37b452851deb6c9f24a40c2f74ee0e53c82980","anchor_chain":"eip155:5042002","anchor_tx":"0xedb7b832f4ebf6781b5ecd2ed241c435b862f4d3761541fa31adc1831b8c44a0","anchor_block":70093156},"proof":["0xf9346469b46924cf5b5543a1a7f9f861561505f39db1afef5a5b4797f506b1a0","0xe669c56deab6759aba3ea271ba5f1b85712cfd9e14ec64180e973444ffbf4ccc","0xc5dfd99882c03fcd5db385f73f216166bdabdc8248b2d40bc7d61b323c6a5823","0xe1c15783dc94865def3ac1c12887bbc02f8920768c59cfe6a1a585c6f1031e5e","0xf1593ee8dee7ad30584855370ca9e876532665615526de46c6e747ca5660d88e","0x0176e6989dadb9ab645dcfa3f8dcd7b37071896b07faf3c588b32a3de6c5531f","0xb7ac04e2b353d15b0074b71a6ab4d258f3f04216734826765850de0069fd3c44","0xf09cefa7ba011693fc134c7e2636883ff51dd323ff8614708c62ff562be632f2","0x619e63d8b306ed5d2eaed442a16cca26c6b7b11958ebb6cea64be76aac7c58ac","0x29b4fe41ce5e9ef76617bd4342a86931181e437581d3407a408ac573b69d1e61","0x57d04e8c0dfbc48ed42709d97edd65eaa6f019b6e775d93d626d53b8f8c8fb39","0xe88490f2b8597b4ba31fe5cd2844c81e5da21890cc3a4b4c1dadbb6a939407e7","0x6c4324d3edf63f1c5818a600ecde74e6316cc337c4218b73b366a817b8e059b6","0xe2a6611300abdb7312e664a37fe7f1b470ff8ebe48733a7b7064c0db1f012dd5","0xe9e97d8cdaf19b6da06606a22b4eea548063df6bacb661abea4c37aa637b5c3b","0x4befbbd74452b2a3a89b7e1e809ba011f1be78aeb8153059503fda47c454d086","0xa1146af524f673843507e7427a575964580eef01bc0e0eae466a7920df017ab2","0x0504a25438f3c7932125463198ca74c5064f23f71a5c92763b3fc96a98cc8b57"]}