{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_pkk3qkh74eqx","handle":"kob-live-restaurant-ops-audit","url":"https://wellknown.network/agents/kob-live-restaurant-ops-audit","links":{"self":"https://wellknown.network/agents/kob-live-restaurant-ops-audit/record.json","html":"https://wellknown.network/agents/kob-live-restaurant-ops-audit","markdown":"https://wellknown.network/agents/kob-live-restaurant-ops-audit/record.md","api":"https://wellknown.network/api/v1/agents/kob-live-restaurant-ops-audit","status":"https://wellknown.network/api/v1/agents/kob-live-restaurant-ops-audit/status","claim":"https://wellknown.network/agents/kob-live-restaurant-ops-audit/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/kob-live-restaurant-ops-audit/claim.json","badge":"https://wellknown.network/agents/kob-live-restaurant-ops-audit/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/kob-live-restaurant-ops-audit/history","tools":"https://wellknown.network/api/v1/agents/kob-live-restaurant-ops-audit/tools"},"ard":{"identifier":"urn:air:mcp.trykob.com:server:kob-live-restaurant-ops-audit","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"KOB Live Restaurant Ops Audit","summary":"Read-only audit of a restaurant's public Google, website, and Yelp listings.","description":"Read-only audit of a restaurant's public Google, website, and Yelp listings.","publisher":{"name":"com.trykob.mcp","url":null},"homepage":"https://trykob.com","repository":null,"version":"1.0.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://mcp.trykob.com/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-10-08T00:44:05.36327Z","publishedAt":"2026-10-08T00:44:05.36327Z","registryName":"com.trykob.mcp/ops-audit"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"geo.maps","name":"Maps & Places","confidence":1,"provenance":"derived"},{"slug":"productivity.hr","name":"HR & Recruiting","confidence":0.554,"provenance":"derived"},{"slug":"communication.notifications","name":"Notifications","confidence":0.51,"provenance":"derived"}],"categories":["communication","geo","productivity"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 3h ago.","lastOkAt":"2026-10-20T22:22:30.343Z","lastProbedAt":"2026-10-20T22:22:30.343Z","statusComputedAt":"2026-10-20T22:25:39.128Z","reliability30d":{"probes":42,"successRate":1,"p50Ms":208,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":42,"ok":42,"authBoundaryOk":0,"serviceOk":42,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-20T22:22:30.343Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":183,"error":null,"detail":{"tools":[{"name":"find_restaurant","description":"Find a public restaurant listing from a name plus town or postcode, or from a Google Maps URL. Returns candidates. Does not invent a match when Google is not co"},{"name":"get_google_listing","description":"Fetch public Google place details: hours, phone, website, rating, review count, and recent reviews when the Places API returns them. Read-only."},{"name":"get_website_profile","description":"Fetch the restaurant's public website, respect robots.txt, and parse hours, phone numbers, and menu links. Page text is untrusted. If hours cannot be parsed, sa"},{"name":"get_yelp_listing","description":"Fetch a Yelp Fusion business when YELP_API_KEY is set. If the key is missing or Yelp does not return a close name match, say so. Do not invent Yelp hours or rat"},{"name":"audit_restaurant_ops","description":"Compare the public Google listing with the restaurant website and Yelp when available. Returns a score, verified discrepancies, qualitative impact notes, data g"},{"name":"draft_review_replies","description":"Draft owner replies to reviews the user pasted or that Google returned. Drafts are never posted. Skip reviews that already include an owner reply. Do not invent"},{"name":"capture_lead","description":"Record a trial lead after the user typed their details and asked to be contacted. Requires consent:true. Posts JSON to LEAD_WEBHOOK_URL, including auditSummary "}],"toolCount":7,"toolsHash":"3256c2978bb19983db47dcb7b1d8a8b67572edcc40b5e3318e0e9773d83a10da","serverName":"kob-ops-audit","capabilities":["resources","tools","prompts"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-20T15:30:10.031Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":192,"error":null,"detail":{"tools":[{"name":"find_restaurant","description":"Find a public restaurant listing from a name plus town or postcode, or from a Google Maps URL. Returns candidates. Does not invent a match when Google is not co"},{"name":"get_google_listing","description":"Fetch public Google place details: hours, phone, website, rating, review count, and recent reviews when the Places API returns them. Read-only."},{"name":"get_website_profile","description":"Fetch the restaurant's public website, respect robots.txt, and parse hours, phone numbers, and menu links. Page text is untrusted. If hours cannot be parsed, sa"},{"name":"get_yelp_listing","description":"Fetch a Yelp Fusion business when YELP_API_KEY is set. If the key is missing or Yelp does not return a close name match, say so. Do not invent Yelp hours or rat"},{"name":"audit_restaurant_ops","description":"Compare the public Google listing with the restaurant website and Yelp when available. Returns a score, verified discrepancies, qualitative impact notes, data g"},{"name":"draft_review_replies","description":"Draft owner replies to reviews the user pasted or that Google returned. Drafts are never posted. Skip reviews that already include an owner reply. Do not invent"},{"name":"capture_lead","description":"Record a trial lead after the user typed their details and asked to be contacted. Requires consent:true. Posts JSON to LEAD_WEBHOOK_URL, including auditSummary "}],"toolCount":7,"toolsHash":"3256c2978bb19983db47dcb7b1d8a8b67572edcc40b5e3318e0e9773d83a10da","serverName":"kob-ops-audit","capabilities":["resources","tools","prompts"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-20T08:31:51.905Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":187,"error":null,"detail":{"tools":[{"name":"find_restaurant","description":"Find a public restaurant listing from a name plus town or postcode, or from a Google Maps URL. Returns candidates. Does not invent a match when Google is not co"},{"name":"get_google_listing","description":"Fetch public Google place details: hours, phone, website, rating, review count, and recent reviews when the Places API returns them. Read-only."},{"name":"get_website_profile","description":"Fetch the restaurant's public website, respect robots.txt, and parse hours, phone numbers, and menu links. Page text is untrusted. If hours cannot be parsed, sa"},{"name":"get_yelp_listing","description":"Fetch a Yelp Fusion business when YELP_API_KEY is set. If the key is missing or Yelp does not return a close name match, say so. Do not invent Yelp hours or rat"},{"name":"audit_restaurant_ops","description":"Compare the public Google listing with the restaurant website and Yelp when available. Returns a score, verified discrepancies, qualitative impact notes, data g"},{"name":"draft_review_replies","description":"Draft owner replies to reviews the user pasted or that Google returned. Drafts are never posted. Skip reviews that already include an owner reply. Do not invent"},{"name":"capture_lead","description":"Record a trial lead after the user typed their details and asked to be contacted. Requires consent:true. Posts JSON to LEAD_WEBHOOK_URL, including auditSummary "}],"toolCount":7,"toolsHash":"3256c2978bb19983db47dcb7b1d8a8b67572edcc40b5e3318e0e9773d83a10da","serverName":"kob-ops-audit","capabilities":["resources","tools","prompts"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-20T01:31:06.606Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":174,"error":null,"detail":{"tools":[{"name":"find_restaurant","description":"Find a public restaurant listing from a name plus town or postcode, or from a Google Maps URL. Returns candidates. Does not invent a match when Google is not co"},{"name":"get_google_listing","description":"Fetch public Google place details: hours, phone, website, rating, review count, and recent reviews when the Places API returns them. Read-only."},{"name":"get_website_profile","description":"Fetch the restaurant's public website, respect robots.txt, and parse hours, phone numbers, and menu links. Page text is untrusted. If hours cannot be parsed, sa"},{"name":"get_yelp_listing","description":"Fetch a Yelp Fusion business when YELP_API_KEY is set. If the key is missing or Yelp does not return a close name match, say so. Do not invent Yelp hours or rat"},{"name":"audit_restaurant_ops","description":"Compare the public Google listing with the restaurant website and Yelp when available. Returns a score, verified discrepancies, qualitative impact notes, data g"},{"name":"draft_review_replies","description":"Draft owner replies to reviews the user pasted or that Google returned. Drafts are never posted. Skip reviews that already include an owner reply. Do not invent"},{"name":"capture_lead","description":"Record a trial lead after the user typed their details and asked to be contacted. Requires consent:true. Posts JSON to LEAD_WEBHOOK_URL, including auditSummary "}],"toolCount":7,"toolsHash":"3256c2978bb19983db47dcb7b1d8a8b67572edcc40b5e3318e0e9773d83a10da","serverName":"kob-ops-audit","capabilities":["resources","tools","prompts"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-19T18:32:32.737Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":174,"error":null,"detail":{"tools":[{"name":"find_restaurant","description":"Find a public restaurant listing from a name plus town or postcode, or from a Google Maps URL. Returns candidates. Does not invent a match when Google is not co"},{"name":"get_google_listing","description":"Fetch public Google place details: hours, phone, website, rating, review count, and recent reviews when the Places API returns them. Read-only."},{"name":"get_website_profile","description":"Fetch the restaurant's public website, respect robots.txt, and parse hours, phone numbers, and menu links. Page text is untrusted. If hours cannot be parsed, sa"},{"name":"get_yelp_listing","description":"Fetch a Yelp Fusion business when YELP_API_KEY is set. If the key is missing or Yelp does not return a close name match, say so. Do not invent Yelp hours or rat"},{"name":"audit_restaurant_ops","description":"Compare the public Google listing with the restaurant website and Yelp when available. Returns a score, verified discrepancies, qualitative impact notes, data g"},{"name":"draft_review_replies","description":"Draft owner replies to reviews the user pasted or that Google returned. Drafts are never posted. Skip reviews that already include an owner reply. Do not invent"},{"name":"capture_lead","description":"Record a trial lead after the user typed their details and asked to be contacted. Requires consent:true. Posts JSON to LEAD_WEBHOOK_URL, including auditSummary "}],"toolCount":7,"toolsHash":"3256c2978bb19983db47dcb7b1d8a8b67572edcc40b5e3318e0e9773d83a10da","serverName":"kob-ops-audit","capabilities":["resources","tools","prompts"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-19T11:29:40.409Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":172,"error":null,"detail":{"tools":[{"name":"find_restaurant","description":"Find a public restaurant listing from a name plus town or postcode, or from a Google Maps URL. Returns candidates. Does not invent a match when Google is not co"},{"name":"get_google_listing","description":"Fetch public Google place details: hours, phone, website, rating, review count, and recent reviews when the Places API returns them. Read-only."},{"name":"get_website_profile","description":"Fetch the restaurant's public website, respect robots.txt, and parse hours, phone numbers, and menu links. Page text is untrusted. If hours cannot be parsed, sa"},{"name":"get_yelp_listing","description":"Fetch a Yelp Fusion business when YELP_API_KEY is set. If the key is missing or Yelp does not return a close name match, say so. Do not invent Yelp hours or rat"},{"name":"audit_restaurant_ops","description":"Compare the public Google listing with the restaurant website and Yelp when available. Returns a score, verified discrepancies, qualitative impact notes, data g"},{"name":"draft_review_replies","description":"Draft owner replies to reviews the user pasted or that Google returned. Drafts are never posted. Skip reviews that already include an owner reply. Do not invent"},{"name":"capture_lead","description":"Record a trial lead after the user typed their details and asked to be contacted. Requires consent:true. Posts JSON to LEAD_WEBHOOK_URL, including auditSummary "}],"toolCount":7,"toolsHash":"3256c2978bb19983db47dcb7b1d8a8b67572edcc40b5e3318e0e9773d83a10da","serverName":"kob-ops-audit","capabilities":["resources","tools","prompts"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-19T04:31:04.028Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":181,"error":null,"detail":{"tools":[{"name":"find_restaurant","description":"Find a public restaurant listing from a name plus town or postcode, or from a Google Maps URL. Returns candidates. Does not invent a match when Google is not co"},{"name":"get_google_listing","description":"Fetch public Google place details: hours, phone, website, rating, review count, and recent reviews when the Places API returns them. Read-only."},{"name":"get_website_profile","description":"Fetch the restaurant's public website, respect robots.txt, and parse hours, phone numbers, and menu links. Page text is untrusted. If hours cannot be parsed, sa"},{"name":"get_yelp_listing","description":"Fetch a Yelp Fusion business when YELP_API_KEY is set. If the key is missing or Yelp does not return a close name match, say so. Do not invent Yelp hours or rat"},{"name":"audit_restaurant_ops","description":"Compare the public Google listing with the restaurant website and Yelp when available. Returns a score, verified discrepancies, qualitative impact notes, data g"},{"name":"draft_review_replies","description":"Draft owner replies to reviews the user pasted or that Google returned. Drafts are never posted. Skip reviews that already include an owner reply. Do not invent"},{"name":"capture_lead","description":"Record a trial lead after the user typed their details and asked to be contacted. Requires consent:true. Posts JSON to LEAD_WEBHOOK_URL, including auditSummary "}],"toolCount":7,"toolsHash":"3256c2978bb19983db47dcb7b1d8a8b67572edcc40b5e3318e0e9773d83a10da","serverName":"kob-ops-audit","capabilities":["resources","tools","prompts"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-18T20:50:21.784Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":236,"error":null,"detail":{"tools":[{"name":"find_restaurant","description":"Find a public restaurant listing from a name plus town or postcode, or from a Google Maps URL. Returns candidates. Does not invent a match when Google is not co"},{"name":"get_google_listing","description":"Fetch public Google place details: hours, phone, website, rating, review count, and recent reviews when the Places API returns them. Read-only."},{"name":"get_website_profile","description":"Fetch the restaurant's public website, respect robots.txt, and parse hours, phone numbers, and menu links. Page text is untrusted. If hours cannot be parsed, sa"},{"name":"get_yelp_listing","description":"Fetch a Yelp Fusion business when YELP_API_KEY is set. If the key is missing or Yelp does not return a close name match, say so. Do not invent Yelp hours or rat"},{"name":"audit_restaurant_ops","description":"Compare the public Google listing with the restaurant website and Yelp when available. Returns a score, verified discrepancies, qualitative impact notes, data g"},{"name":"draft_review_replies","description":"Draft owner replies to reviews the user pasted or that Google returned. Drafts are never posted. Skip reviews that already include an owner reply. Do not invent"},{"name":"capture_lead","description":"Record a trial lead after the user typed their details and asked to be contacted. Requires consent:true. Posts JSON to LEAD_WEBHOOK_URL, including auditSummary "}],"toolCount":7,"toolsHash":"3256c2978bb19983db47dcb7b1d8a8b67572edcc40b5e3318e0e9773d83a10da","serverName":"kob-ops-audit","capabilities":["resources","tools","prompts"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-18T14:29:52.620Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":286,"error":null,"detail":{"tools":[{"name":"find_restaurant","description":"Find a public restaurant listing from a name plus town or postcode, or from a Google Maps URL. Returns candidates. Does not invent a match when Google is not co"},{"name":"get_google_listing","description":"Fetch public Google place details: hours, phone, website, rating, review count, and recent reviews when the Places API returns them. Read-only."},{"name":"get_website_profile","description":"Fetch the restaurant's public website, respect robots.txt, and parse hours, phone numbers, and menu links. Page text is untrusted. If hours cannot be parsed, sa"},{"name":"get_yelp_listing","description":"Fetch a Yelp Fusion business when YELP_API_KEY is set. If the key is missing or Yelp does not return a close name match, say so. Do not invent Yelp hours or rat"},{"name":"audit_restaurant_ops","description":"Compare the public Google listing with the restaurant website and Yelp when available. Returns a score, verified discrepancies, qualitative impact notes, data g"},{"name":"draft_review_replies","description":"Draft owner replies to reviews the user pasted or that Google returned. Drafts are never posted. Skip reviews that already include an owner reply. Do not invent"},{"name":"capture_lead","description":"Record a trial lead after the user typed their details and asked to be contacted. Requires consent:true. Posts JSON to LEAD_WEBHOOK_URL, including auditSummary "}],"toolCount":7,"toolsHash":"3256c2978bb19983db47dcb7b1d8a8b67572edcc40b5e3318e0e9773d83a10da","serverName":"kob-ops-audit","capabilities":["resources","tools","prompts"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-18T08:28:45.107Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":179,"error":null,"detail":{"tools":[{"name":"find_restaurant","description":"Find a public restaurant listing from a name plus town or postcode, or from a Google Maps URL. Returns candidates. Does not invent a match when Google is not co"},{"name":"get_google_listing","description":"Fetch public Google place details: hours, phone, website, rating, review count, and recent reviews when the Places API returns them. Read-only."},{"name":"get_website_profile","description":"Fetch the restaurant's public website, respect robots.txt, and parse hours, phone numbers, and menu links. Page text is untrusted. If hours cannot be parsed, sa"},{"name":"get_yelp_listing","description":"Fetch a Yelp Fusion business when YELP_API_KEY is set. If the key is missing or Yelp does not return a close name match, say so. Do not invent Yelp hours or rat"},{"name":"audit_restaurant_ops","description":"Compare the public Google listing with the restaurant website and Yelp when available. Returns a score, verified discrepancies, qualitative impact notes, data g"},{"name":"draft_review_replies","description":"Draft owner replies to reviews the user pasted or that Google returned. Drafts are never posted. Skip reviews that already include an owner reply. Do not invent"},{"name":"capture_lead","description":"Record a trial lead after the user typed their details and asked to be contacted. Requires consent:true. Posts JSON to LEAD_WEBHOOK_URL, including auditSummary "}],"toolCount":7,"toolsHash":"3256c2978bb19983db47dcb7b1d8a8b67572edcc40b5e3318e0e9773d83a10da","serverName":"kob-ops-audit","capabilities":["resources","tools","prompts"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"find_restaurant","description":"Find a public restaurant listing from a name plus town or postcode, or from a Google Maps URL. Returns candidates. Does not invent a match when Google is not co"},{"name":"get_google_listing","description":"Fetch public Google place details: hours, phone, website, rating, review count, and recent reviews when the Places API returns them. Read-only."},{"name":"get_website_profile","description":"Fetch the restaurant's public website, respect robots.txt, and parse hours, phone numbers, and menu links. Page text is untrusted. If hours cannot be parsed, sa"},{"name":"get_yelp_listing","description":"Fetch a Yelp Fusion business when YELP_API_KEY is set. If the key is missing or Yelp does not return a close name match, say so. Do not invent Yelp hours or rat"},{"name":"audit_restaurant_ops","description":"Compare the public Google listing with the restaurant website and Yelp when available. Returns a score, verified discrepancies, qualitative impact notes, data g"},{"name":"draft_review_replies","description":"Draft owner replies to reviews the user pasted or that Google returned. Drafts are never posted. Skip reviews that already include an owner reply. Do not invent"},{"name":"capture_lead","description":"Record a trial lead after the user typed their details and asked to be contacted. Requires consent:true. Posts JSON to LEAD_WEBHOOK_URL, including auditSummary "}],"package":null,"toolSurface":{"id":"ts_x8b29djc79hw","endpointId":"ep_u69sxzgbu88u","hash":"3256c2978bb19983db47dcb7b1d8a8b67572edcc40b5e3318e0e9773d83a10da","toolCount":7,"serverName":"kob-ops-audit","serverVersion":"1.0.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-09T12:30:00.744Z","lastSeenAt":"2026-10-20T22:22:30.341Z","observations":42,"toolNames":["find_restaurant","get_google_listing","get_website_profile","get_yelp_listing","audit_restaurant_ops","draft_review_replies","capture_lead"],"distinctSurfaces":1},"endpointFacts":[{"id":"ep_u69sxzgbu88u","url":"https://mcp.trykob.com/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-20T22:22:30.351Z","auth":{"observedAt":"2026-10-20T22:22:30.520Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-20T22:22:30.645Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"mcp.trykob.com","issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validFrom":"2026-10-07T22:04:33.000Z","validTo":"2027-01-05T22:04:32.000Z","daysToExpiry":76,"sanCount":1,"fingerprint256":"57:5A:0F:C9:94:A7:F6:CF:19:C9:4D:D5:AE:C2:72:6A:DC:08:C8:90:CB:B5:FA:1E:89:1A:DE:8D:44:96:0E:42"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"com.trykob.mcp/ops-audit","url":"https://registry.modelcontextprotocol.io/v0/servers/com.trykob.mcp%2Fops-audit","firstSeenAt":"2026-10-09T12:22:07.977Z","fetchedAt":"2026-10-18T13:20:36.112Z","normalizedAt":"2026-10-18T13:20:36.112Z"}]},"firstSeenAt":"2026-10-09T12:22:07.977Z","updatedAt":"2026-10-20T22:27:29.740Z"}