{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_uzyrv73p3rxj","handle":"seaweb","url":"https://wellknown.network/agents/seaweb","links":{"self":"https://wellknown.network/agents/seaweb/record.json","html":"https://wellknown.network/agents/seaweb","markdown":"https://wellknown.network/agents/seaweb/record.md","api":"https://wellknown.network/api/v1/agents/seaweb","status":"https://wellknown.network/api/v1/agents/seaweb/status","claim":"https://wellknown.network/agents/seaweb/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/seaweb/claim.json","badge":"https://wellknown.network/agents/seaweb/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/seaweb/history","tools":"https://wellknown.network/api/v1/agents/seaweb/tools"},"ard":{"identifier":"urn:air:api.seaweb.tech:server:seaweb","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"SeaWeb","summary":"Read-only web search for AI agents; does not book, reserve or take payment. Stores your preferences.","description":"Read-only web search for AI agents; does not book, reserve or take payment. Stores your preferences.","publisher":{"name":"tech.seaweb","url":null},"homepage":"https://seaweb.tech","repository":null,"version":"0.14.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://api.seaweb.tech/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-09-03T23:46:12.296134Z","publishedAt":"2026-09-03T23:46:12.296134Z","registryName":"tech.seaweb/seaweb"},"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":"data.database","name":"Databases","confidence":1,"provenance":"derived"},{"slug":"communication.notifications","name":"Notifications","confidence":1,"provenance":"derived"},{"slug":"knowledge.memory","name":"Agent Memory","confidence":0.992,"provenance":"derived"},{"slug":"data.web-search","name":"Web Search","confidence":0.99,"provenance":"derived"},{"slug":"documents.extraction","name":"Data Extraction","confidence":0.554,"provenance":"derived"},{"slug":"dev.monitoring","name":"Monitoring & Observability","confidence":0.554,"provenance":"derived"},{"slug":"knowledge.knowledge-graph","name":"Knowledge Graphs","confidence":0.525,"provenance":"derived"},{"slug":"data.weather","name":"Weather","confidence":0.51,"provenance":"derived"}],"categories":["communication","data","dev","documents","knowledge"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 6h ago.","lastOkAt":"2026-10-09T23:29:02.386Z","lastProbedAt":"2026-10-09T23:29:02.386Z","statusComputedAt":"2026-10-09T23:31:05.480Z","reliability30d":{"probes":109,"successRate":1,"p50Ms":919,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":108,"ok":108,"authBoundaryOk":0,"serviceOk":108,"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-09T23:29:02.386Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":943,"error":null,"detail":{"tools":[{"name":"compare_search","description":"A/B ranking comparison, run AFTER a normal search session when the\n    human wants to judge result quality. Ranks the same query under the\n    served ranker (si"},{"name":"vote_comparison","description":"Record an A/B verdict after compare_search. winner: \"A\", \"B\", or\n    \"tie\". judged_by: \"agent\" for your own judgment, \"human\" when relaying\n    the human's answ"},{"name":"search_restaurants","description":"Search restaurants by natural-language intent. location: neighborhood\n    filter (e.g. \"Mission\", \"Marina\"); empty (default) = no filter, all SF.\n    goal: disc"},{"name":"search_salons","description":"Search hair salons, barbershops and beauty salons by natural-language\n    intent (e.g. \"balayage in the Mission\", \"walk-in barber near SoMa\",\n    \"gender-neutra"},{"name":"filter_restaurants","description":"Structured /grep filter on registry or subset of prior search hits."},{"name":"filter_salons","description":"Structured /grep filter over salons (registry or a subset of prior\n    search_salons hits via salon_ids). Salon-only vertical."},{"name":"list_sources","description":"List indexed publishers with entity counts and coverage."},{"name":"get_disruptions","description":"Disruption Watch: active disruption alerts (weather, safety, travel\n    advisories) for a region.\n\n    LIVE since 2026-07-30: the alert poller runs on the crawl"},{"name":"get_camera_visibility","description":"Landmark camera visibility: vision-model readings of public webcams\n    (currently the Golden Gate Bridge Caltrans set), with per-camera history\n    and trip-pl"},{"name":"get_spot_conditions","description":"Trip-condition board for tracked tourist spots (SF Bay Area, Napa,\n    Monterey/Big Sur): one verdict per spot with per-factor readings.\n\n    Factors per spot ("},{"name":"search_web","description":"Full-text search over SeaWeb's own crawled corpus -- the Destination\n    Pulse feature. Prefer this over generic web search for travel and\n    hospitality quest"},{"name":"research","description":"Blocking-best-effort research over SeaWeb's live crawl queue or STORM agent.\n\n    method selects the backend execution engine:\n      - 'standard': executes over"},{"name":"research_status","description":"Poll surface for a research job.\n\n    Caller-scoped: the same SELECT that checks existence also checks\n    ownership (job_id AND requester_key_hash == caller ke"},{"name":"build_dataset","description":"Build a grounded structured dataset grid from web extraction.\n\n    Accepts a task/topic query and requested column names. Creates an isolated\n    Postgres agent"},{"name":"agent_job_status","description":"Check status of an asynchronous STORM or Dataset agent job.\n\n    Authenticated, caller-owned lookup. Missing and wrong-owner job IDs\n    return identical indist"},{"name":"cancel_agent_job","description":"Cancel a queued or running STORM or Dataset agent job.\n\n    Authenticated, owner-scoped, idempotent.\n    "},{"name":"extract_url","description":"One URL in, that page's clean readable content out: `title`, `text`,\n    and `passages` (paragraph blocks), with `source` naming where it came\n    from. search_"},{"name":"get_restaurant","description":"Return full schema.org Restaurant page (E2-A /get slice).\n    restaurant_id and entity_id are aliases; pass either."},{"name":"get_menu","description":"Return structured menu for a restaurant (schema.org Menu shape).\n    restaurant_id and entity_id are aliases; pass either."},{"name":"submit_feedback","description":"Rate a search result you actually used. Call at the end of a task for\n    the result(s) that mattered: vote \"up\" if the entity answered the need,\n    \"down\" if "},{"name":"remember","description":"Save a durable preference on YOUR agent profile (account-level memory\n    that survives new sessions and API-key rotation). Use for defaults worth\n    reusing: "},{"name":"recall","description":"Read YOUR agent profile: remembered preferences, recent searches,\n    recent per-entity actions, and top entities. Call at task start to reuse\n    what past ses"},{"name":"log_outcome","description":"Record what actually happened with an entity so future sessions know:\n    outcome one of booked | visited | called | failed | abandoned | other,\n    with an opt"},{"name":"get_site_skill","description":"Compact action pack for ONE entity, everything an agent needs to act\n    there without re-reading full pages: allowlisted facts, closure status,\n    server-gene"},{"name":"get_salon","description":"Return the full schema.org page for a salon (profile + meta).\n    salon_id and entity_id are aliases; pass either."},{"name":"get_services","description":"Return a salon's service menu (schema.org Menu shape: sections of\n    priced services). Salon counterpart to get_menu.\n    salon_id and entity_id are aliases; p"},{"name":"get_hours","description":"Return opening hours for a restaurant.\n    restaurant_id and entity_id are aliases; pass either."},{"name":"teamwork_preview","description":"Decomposes a request into planned specialist roles and returns a preview; it runs no agents.\n\n    Decomposes natural language requests into planned subtasks and"},{"name":"search","description":"Search any SeaWeb vertical by natural-language intent.\n\n        vertical: one of list_verticals() (e.g. \"restaurants\"). intent: free\n        text. location: nei"},{"name":"get_entity","description":"Full schema.org page for one entity by canonical id\n        (seaweb://{vertical}/{slug}), legacy id, or unique bare slug."},{"name":"get_details","description":"Detail slice (menu / service list) for one entity, the\n        vertical-agnostic counterpart of get_menu/get_services."},{"name":"list_verticals","description":"List configured verticals with entity counts and searchability."},{"name":"search_destination_sentiment","description":"Travel Product A — destination sentiment/trend AGGREGATES (use for\n        \"how do travelers feel about X over time\", never for real-time\n        alerts — that "},{"name":"register_standing_query","description":"Travel Product B — register a standing disruption query:\n        continuous real-time monitoring of geo_ids for disruption_types\n        (subset of: strike, wea"},{"name":"list_standing_queries","description":"Travel Product B — list YOUR registered standing disruption\n        queries. Scoped to the calling account: tenant_id is an optional\n        sub-label within yo"},{"name":"delete_standing_query","description":"Travel Product B — delete one of YOUR standing disruption queries\n        by query_id. Only queries registered by the calling account can be\n        deleted. Pa"},{"name":"list_disruption_events","description":"Travel Product B — list emitted disruption events. Every event is\n        a STRUCTURED record: rule-computed severity 1-5 and confidence 0-1,\n        sources sp"},{"name":"get_disruption_event","description":"Travel Product B — fetch one disruption event by event_id, with\n        its frozen span-grounded source set (the evidence as it stood at\n        emission; later"},{"name":"register_disruption_webhook","description":"Travel Product B — register a webhook: emitted disruption events\n        are POSTed to url as the same structured JSON list_disruption_events\n        returns, H"},{"name":"list_disruption_webhooks","description":"Travel Product B — list YOUR registered webhook subscriptions\n        (subscription_id, url; secrets are NEVER echoed). Scoped to the\n        calling account: t"},{"name":"delete_disruption_webhook","description":"Travel Product B — delete ONE webhook subscription you registered.\n        Pass the SAME tenant_id you registered it under — ownership is proven\n        against"},{"name":"resolve_geo","description":"Travel gazetteer lookup: free-text place name -> candidate\n        geo_ids for the other travel-vertical tools (43k-entity gazetteer:\n        admin divisions, c"},{"name":"travel_health","description":"Dependency health of the travel vertical service: reachability of\n        its elasticsearch/postgres/redis plus whether the embedding model is\n        loaded (i"}],"toolCount":43,"toolsHash":"54f99e9c02203952674ea46353cf95432ff5628748722e2a149a9f184daa2d46","serverName":"SeaWeb","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"1.28.1","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T16:33:59.369Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":1185,"error":null,"detail":{"tools":[{"name":"compare_search","description":"A/B ranking comparison, run AFTER a normal search session when the\n    human wants to judge result quality. Ranks the same query under the\n    served ranker (si"},{"name":"vote_comparison","description":"Record an A/B verdict after compare_search. winner: \"A\", \"B\", or\n    \"tie\". judged_by: \"agent\" for your own judgment, \"human\" when relaying\n    the human's answ"},{"name":"search_restaurants","description":"Search restaurants by natural-language intent. location: neighborhood\n    filter (e.g. \"Mission\", \"Marina\"); empty (default) = no filter, all SF.\n    goal: disc"},{"name":"search_salons","description":"Search hair salons, barbershops and beauty salons by natural-language\n    intent (e.g. \"balayage in the Mission\", \"walk-in barber near SoMa\",\n    \"gender-neutra"},{"name":"filter_restaurants","description":"Structured /grep filter on registry or subset of prior search hits."},{"name":"filter_salons","description":"Structured /grep filter over salons (registry or a subset of prior\n    search_salons hits via salon_ids). Salon-only vertical."},{"name":"list_sources","description":"List indexed publishers with entity counts and coverage."},{"name":"get_disruptions","description":"Disruption Watch: active disruption alerts (weather, safety, travel\n    advisories) for a region.\n\n    LIVE since 2026-07-30: the alert poller runs on the crawl"},{"name":"get_camera_visibility","description":"Landmark camera visibility: vision-model readings of public webcams\n    (currently the Golden Gate Bridge Caltrans set), with per-camera history\n    and trip-pl"},{"name":"get_spot_conditions","description":"Trip-condition board for tracked tourist spots (SF Bay Area, Napa,\n    Monterey/Big Sur): one verdict per spot with per-factor readings.\n\n    Factors per spot ("},{"name":"search_web","description":"Full-text search over SeaWeb's own crawled corpus -- the Destination\n    Pulse feature. Prefer this over generic web search for travel and\n    hospitality quest"},{"name":"research","description":"Blocking-best-effort research over SeaWeb's live crawl queue or STORM agent.\n\n    method selects the backend execution engine:\n      - 'standard': executes over"},{"name":"research_status","description":"Poll surface for a research job.\n\n    Caller-scoped: the same SELECT that checks existence also checks\n    ownership (job_id AND requester_key_hash == caller ke"},{"name":"build_dataset","description":"Build a grounded structured dataset grid from web extraction.\n\n    Accepts a task/topic query and requested column names. Creates an isolated\n    Postgres agent"},{"name":"agent_job_status","description":"Check status of an asynchronous STORM or Dataset agent job.\n\n    Authenticated, caller-owned lookup. Missing and wrong-owner job IDs\n    return identical indist"},{"name":"cancel_agent_job","description":"Cancel a queued or running STORM or Dataset agent job.\n\n    Authenticated, owner-scoped, idempotent.\n    "},{"name":"extract_url","description":"One URL in, that page's clean readable content out: `title`, `text`,\n    and `passages` (paragraph blocks), with `source` naming where it came\n    from. search_"},{"name":"get_restaurant","description":"Return full schema.org Restaurant page (E2-A /get slice).\n    restaurant_id and entity_id are aliases; pass either."},{"name":"get_menu","description":"Return structured menu for a restaurant (schema.org Menu shape).\n    restaurant_id and entity_id are aliases; pass either."},{"name":"submit_feedback","description":"Rate a search result you actually used. Call at the end of a task for\n    the result(s) that mattered: vote \"up\" if the entity answered the need,\n    \"down\" if "},{"name":"remember","description":"Save a durable preference on YOUR agent profile (account-level memory\n    that survives new sessions and API-key rotation). Use for defaults worth\n    reusing: "},{"name":"recall","description":"Read YOUR agent profile: remembered preferences, recent searches,\n    recent per-entity actions, and top entities. Call at task start to reuse\n    what past ses"},{"name":"log_outcome","description":"Record what actually happened with an entity so future sessions know:\n    outcome one of booked | visited | called | failed | abandoned | other,\n    with an opt"},{"name":"get_site_skill","description":"Compact action pack for ONE entity, everything an agent needs to act\n    there without re-reading full pages: allowlisted facts, closure status,\n    server-gene"},{"name":"get_salon","description":"Return the full schema.org page for a salon (profile + meta).\n    salon_id and entity_id are aliases; pass either."},{"name":"get_services","description":"Return a salon's service menu (schema.org Menu shape: sections of\n    priced services). Salon counterpart to get_menu.\n    salon_id and entity_id are aliases; p"},{"name":"get_hours","description":"Return opening hours for a restaurant.\n    restaurant_id and entity_id are aliases; pass either."},{"name":"teamwork_preview","description":"Decomposes a request into planned specialist roles and returns a preview; it runs no agents.\n\n    Decomposes natural language requests into planned subtasks and"},{"name":"search","description":"Search any SeaWeb vertical by natural-language intent.\n\n        vertical: one of list_verticals() (e.g. \"restaurants\"). intent: free\n        text. location: nei"},{"name":"get_entity","description":"Full schema.org page for one entity by canonical id\n        (seaweb://{vertical}/{slug}), legacy id, or unique bare slug."},{"name":"get_details","description":"Detail slice (menu / service list) for one entity, the\n        vertical-agnostic counterpart of get_menu/get_services."},{"name":"list_verticals","description":"List configured verticals with entity counts and searchability."},{"name":"search_destination_sentiment","description":"Travel Product A — destination sentiment/trend AGGREGATES (use for\n        \"how do travelers feel about X over time\", never for real-time\n        alerts — that "},{"name":"register_standing_query","description":"Travel Product B — register a standing disruption query:\n        continuous real-time monitoring of geo_ids for disruption_types\n        (subset of: strike, wea"},{"name":"list_standing_queries","description":"Travel Product B — list YOUR registered standing disruption\n        queries. Scoped to the calling account: tenant_id is an optional\n        sub-label within yo"},{"name":"delete_standing_query","description":"Travel Product B — delete one of YOUR standing disruption queries\n        by query_id. Only queries registered by the calling account can be\n        deleted. Pa"},{"name":"list_disruption_events","description":"Travel Product B — list emitted disruption events. Every event is\n        a STRUCTURED record: rule-computed severity 1-5 and confidence 0-1,\n        sources sp"},{"name":"get_disruption_event","description":"Travel Product B — fetch one disruption event by event_id, with\n        its frozen span-grounded source set (the evidence as it stood at\n        emission; later"},{"name":"register_disruption_webhook","description":"Travel Product B — register a webhook: emitted disruption events\n        are POSTed to url as the same structured JSON list_disruption_events\n        returns, H"},{"name":"list_disruption_webhooks","description":"Travel Product B — list YOUR registered webhook subscriptions\n        (subscription_id, url; secrets are NEVER echoed). Scoped to the\n        calling account: t"},{"name":"delete_disruption_webhook","description":"Travel Product B — delete ONE webhook subscription you registered.\n        Pass the SAME tenant_id you registered it under — ownership is proven\n        against"},{"name":"resolve_geo","description":"Travel gazetteer lookup: free-text place name -> candidate\n        geo_ids for the other travel-vertical tools (43k-entity gazetteer:\n        admin divisions, c"},{"name":"travel_health","description":"Dependency health of the travel vertical service: reachability of\n        its elasticsearch/postgres/redis plus whether the embedding model is\n        loaded (i"}],"toolCount":43,"toolsHash":"54f99e9c02203952674ea46353cf95432ff5628748722e2a149a9f184daa2d46","serverName":"SeaWeb","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"1.28.1","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T10:21:53.233Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":1274,"error":null,"detail":{"tools":[{"name":"compare_search","description":"A/B ranking comparison, run AFTER a normal search session when the\n    human wants to judge result quality. Ranks the same query under the\n    served ranker (si"},{"name":"vote_comparison","description":"Record an A/B verdict after compare_search. winner: \"A\", \"B\", or\n    \"tie\". judged_by: \"agent\" for your own judgment, \"human\" when relaying\n    the human's answ"},{"name":"search_restaurants","description":"Search restaurants by natural-language intent. location: neighborhood\n    filter (e.g. \"Mission\", \"Marina\"); empty (default) = no filter, all SF.\n    goal: disc"},{"name":"search_salons","description":"Search hair salons, barbershops and beauty salons by natural-language\n    intent (e.g. \"balayage in the Mission\", \"walk-in barber near SoMa\",\n    \"gender-neutra"},{"name":"filter_restaurants","description":"Structured /grep filter on registry or subset of prior search hits."},{"name":"filter_salons","description":"Structured /grep filter over salons (registry or a subset of prior\n    search_salons hits via salon_ids). Salon-only vertical."},{"name":"list_sources","description":"List indexed publishers with entity counts and coverage."},{"name":"get_disruptions","description":"Disruption Watch: active disruption alerts (weather, safety, travel\n    advisories) for a region.\n\n    LIVE since 2026-07-30: the alert poller runs on the crawl"},{"name":"get_camera_visibility","description":"Landmark camera visibility: vision-model readings of public webcams\n    (currently the Golden Gate Bridge Caltrans set), with per-camera history\n    and trip-pl"},{"name":"get_spot_conditions","description":"Trip-condition board for tracked tourist spots (SF Bay Area, Napa,\n    Monterey/Big Sur): one verdict per spot with per-factor readings.\n\n    Factors per spot ("},{"name":"search_web","description":"Full-text search over SeaWeb's own crawled corpus -- the Destination\n    Pulse feature. Prefer this over generic web search for travel and\n    hospitality quest"},{"name":"research","description":"Blocking-best-effort research over SeaWeb's live crawl queue or STORM agent.\n\n    method selects the backend execution engine:\n      - 'standard': executes over"},{"name":"research_status","description":"Poll surface for a research job.\n\n    Caller-scoped: the same SELECT that checks existence also checks\n    ownership (job_id AND requester_key_hash == caller ke"},{"name":"build_dataset","description":"Build a grounded structured dataset grid from web extraction.\n\n    Accepts a task/topic query and requested column names. Creates an isolated\n    Postgres agent"},{"name":"agent_job_status","description":"Check status of an asynchronous STORM or Dataset agent job.\n\n    Authenticated, caller-owned lookup. Missing and wrong-owner job IDs\n    return identical indist"},{"name":"cancel_agent_job","description":"Cancel a queued or running STORM or Dataset agent job.\n\n    Authenticated, owner-scoped, idempotent.\n    "},{"name":"extract_url","description":"One URL in, that page's clean readable content out: `title`, `text`,\n    and `passages` (paragraph blocks), with `source` naming where it came\n    from. search_"},{"name":"get_restaurant","description":"Return full schema.org Restaurant page (E2-A /get slice).\n    restaurant_id and entity_id are aliases; pass either."},{"name":"get_menu","description":"Return structured menu for a restaurant (schema.org Menu shape).\n    restaurant_id and entity_id are aliases; pass either."},{"name":"submit_feedback","description":"Rate a search result you actually used. Call at the end of a task for\n    the result(s) that mattered: vote \"up\" if the entity answered the need,\n    \"down\" if "},{"name":"remember","description":"Save a durable preference on YOUR agent profile (account-level memory\n    that survives new sessions and API-key rotation). Use for defaults worth\n    reusing: "},{"name":"recall","description":"Read YOUR agent profile: remembered preferences, recent searches,\n    recent per-entity actions, and top entities. Call at task start to reuse\n    what past ses"},{"name":"log_outcome","description":"Record what actually happened with an entity so future sessions know:\n    outcome one of booked | visited | called | failed | abandoned | other,\n    with an opt"},{"name":"get_site_skill","description":"Compact action pack for ONE entity, everything an agent needs to act\n    there without re-reading full pages: allowlisted facts, closure status,\n    server-gene"},{"name":"get_salon","description":"Return the full schema.org page for a salon (profile + meta).\n    salon_id and entity_id are aliases; pass either."},{"name":"get_services","description":"Return a salon's service menu (schema.org Menu shape: sections of\n    priced services). Salon counterpart to get_menu.\n    salon_id and entity_id are aliases; p"},{"name":"get_hours","description":"Return opening hours for a restaurant.\n    restaurant_id and entity_id are aliases; pass either."},{"name":"teamwork_preview","description":"Decomposes a request into planned specialist roles and returns a preview; it runs no agents.\n\n    Decomposes natural language requests into planned subtasks and"},{"name":"search","description":"Search any SeaWeb vertical by natural-language intent.\n\n        vertical: one of list_verticals() (e.g. \"restaurants\"). intent: free\n        text. location: nei"},{"name":"get_entity","description":"Full schema.org page for one entity by canonical id\n        (seaweb://{vertical}/{slug}), legacy id, or unique bare slug."},{"name":"get_details","description":"Detail slice (menu / service list) for one entity, the\n        vertical-agnostic counterpart of get_menu/get_services."},{"name":"list_verticals","description":"List configured verticals with entity counts and searchability."},{"name":"search_destination_sentiment","description":"Travel Product A — destination sentiment/trend AGGREGATES (use for\n        \"how do travelers feel about X over time\", never for real-time\n        alerts — that "},{"name":"register_standing_query","description":"Travel Product B — register a standing disruption query:\n        continuous real-time monitoring of geo_ids for disruption_types\n        (subset of: strike, wea"},{"name":"list_standing_queries","description":"Travel Product B — list YOUR registered standing disruption\n        queries. Scoped to the calling account: tenant_id is an optional\n        sub-label within yo"},{"name":"delete_standing_query","description":"Travel Product B — delete one of YOUR standing disruption queries\n        by query_id. Only queries registered by the calling account can be\n        deleted. Pa"},{"name":"list_disruption_events","description":"Travel Product B — list emitted disruption events. Every event is\n        a STRUCTURED record: rule-computed severity 1-5 and confidence 0-1,\n        sources sp"},{"name":"get_disruption_event","description":"Travel Product B — fetch one disruption event by event_id, with\n        its frozen span-grounded source set (the evidence as it stood at\n        emission; later"},{"name":"register_disruption_webhook","description":"Travel Product B — register a webhook: emitted disruption events\n        are POSTed to url as the same structured JSON list_disruption_events\n        returns, H"},{"name":"list_disruption_webhooks","description":"Travel Product B — list YOUR registered webhook subscriptions\n        (subscription_id, url; secrets are NEVER echoed). Scoped to the\n        calling account: t"},{"name":"delete_disruption_webhook","description":"Travel Product B — delete ONE webhook subscription you registered.\n        Pass the SAME tenant_id you registered it under — ownership is proven\n        against"},{"name":"resolve_geo","description":"Travel gazetteer lookup: free-text place name -> candidate\n        geo_ids for the other travel-vertical tools (43k-entity gazetteer:\n        admin divisions, c"},{"name":"travel_health","description":"Dependency health of the travel vertical service: reachability of\n        its elasticsearch/postgres/redis plus whether the embedding model is\n        loaded (i"}],"toolCount":43,"toolsHash":"54f99e9c02203952674ea46353cf95432ff5628748722e2a149a9f184daa2d46","serverName":"SeaWeb","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"1.28.1","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T03:22:35.585Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":995,"error":null,"detail":{"tools":[{"name":"compare_search","description":"A/B ranking comparison, run AFTER a normal search session when the\n    human wants to judge result quality. Ranks the same query under the\n    served ranker (si"},{"name":"vote_comparison","description":"Record an A/B verdict after compare_search. winner: \"A\", \"B\", or\n    \"tie\". judged_by: \"agent\" for your own judgment, \"human\" when relaying\n    the human's answ"},{"name":"search_restaurants","description":"Search restaurants by natural-language intent. location: neighborhood\n    filter (e.g. \"Mission\", \"Marina\"); empty (default) = no filter, all SF.\n    goal: disc"},{"name":"search_salons","description":"Search hair salons, barbershops and beauty salons by natural-language\n    intent (e.g. \"balayage in the Mission\", \"walk-in barber near SoMa\",\n    \"gender-neutra"},{"name":"filter_restaurants","description":"Structured /grep filter on registry or subset of prior search hits."},{"name":"filter_salons","description":"Structured /grep filter over salons (registry or a subset of prior\n    search_salons hits via salon_ids). Salon-only vertical."},{"name":"list_sources","description":"List indexed publishers with entity counts and coverage."},{"name":"get_disruptions","description":"Disruption Watch: active disruption alerts (weather, safety, travel\n    advisories) for a region.\n\n    LIVE since 2026-07-30: the alert poller runs on the crawl"},{"name":"get_camera_visibility","description":"Landmark camera visibility: vision-model readings of public webcams\n    (currently the Golden Gate Bridge Caltrans set), with per-camera history\n    and trip-pl"},{"name":"get_spot_conditions","description":"Trip-condition board for tracked tourist spots (SF Bay Area, Napa,\n    Monterey/Big Sur): one verdict per spot with per-factor readings.\n\n    Factors per spot ("},{"name":"search_web","description":"Full-text search over SeaWeb's own crawled corpus -- the Destination\n    Pulse feature. Prefer this over generic web search for travel and\n    hospitality quest"},{"name":"research","description":"Blocking-best-effort research over SeaWeb's live crawl queue or STORM agent.\n\n    method selects the backend execution engine:\n      - 'standard': executes over"},{"name":"research_status","description":"Poll surface for a research job.\n\n    Caller-scoped: the same SELECT that checks existence also checks\n    ownership (job_id AND requester_key_hash == caller ke"},{"name":"build_dataset","description":"Build a grounded structured dataset grid from web extraction.\n\n    Accepts a task/topic query and requested column names. Creates an isolated\n    Postgres agent"},{"name":"agent_job_status","description":"Check status of an asynchronous STORM or Dataset agent job.\n\n    Authenticated, caller-owned lookup. Missing and wrong-owner job IDs\n    return identical indist"},{"name":"cancel_agent_job","description":"Cancel a queued or running STORM or Dataset agent job.\n\n    Authenticated, owner-scoped, idempotent.\n    "},{"name":"extract_url","description":"One URL in, that page's clean readable content out: `title`, `text`,\n    and `passages` (paragraph blocks), with `source` naming where it came\n    from. search_"},{"name":"get_restaurant","description":"Return full schema.org Restaurant page (E2-A /get slice).\n    restaurant_id and entity_id are aliases; pass either."},{"name":"get_menu","description":"Return structured menu for a restaurant (schema.org Menu shape).\n    restaurant_id and entity_id are aliases; pass either."},{"name":"submit_feedback","description":"Rate a search result you actually used. Call at the end of a task for\n    the result(s) that mattered: vote \"up\" if the entity answered the need,\n    \"down\" if "},{"name":"remember","description":"Save a durable preference on YOUR agent profile (account-level memory\n    that survives new sessions and API-key rotation). Use for defaults worth\n    reusing: "},{"name":"recall","description":"Read YOUR agent profile: remembered preferences, recent searches,\n    recent per-entity actions, and top entities. Call at task start to reuse\n    what past ses"},{"name":"log_outcome","description":"Record what actually happened with an entity so future sessions know:\n    outcome one of booked | visited | called | failed | abandoned | other,\n    with an opt"},{"name":"get_site_skill","description":"Compact action pack for ONE entity, everything an agent needs to act\n    there without re-reading full pages: allowlisted facts, closure status,\n    server-gene"},{"name":"get_salon","description":"Return the full schema.org page for a salon (profile + meta).\n    salon_id and entity_id are aliases; pass either."},{"name":"get_services","description":"Return a salon's service menu (schema.org Menu shape: sections of\n    priced services). Salon counterpart to get_menu.\n    salon_id and entity_id are aliases; p"},{"name":"get_hours","description":"Return opening hours for a restaurant.\n    restaurant_id and entity_id are aliases; pass either."},{"name":"teamwork_preview","description":"Decomposes a request into planned specialist roles and returns a preview; it runs no agents.\n\n    Decomposes natural language requests into planned subtasks and"},{"name":"search","description":"Search any SeaWeb vertical by natural-language intent.\n\n        vertical: one of list_verticals() (e.g. \"restaurants\"). intent: free\n        text. location: nei"},{"name":"get_entity","description":"Full schema.org page for one entity by canonical id\n        (seaweb://{vertical}/{slug}), legacy id, or unique bare slug."},{"name":"get_details","description":"Detail slice (menu / service list) for one entity, the\n        vertical-agnostic counterpart of get_menu/get_services."},{"name":"list_verticals","description":"List configured verticals with entity counts and searchability."},{"name":"search_destination_sentiment","description":"Travel Product A — destination sentiment/trend AGGREGATES (use for\n        \"how do travelers feel about X over time\", never for real-time\n        alerts — that "},{"name":"register_standing_query","description":"Travel Product B — register a standing disruption query:\n        continuous real-time monitoring of geo_ids for disruption_types\n        (subset of: strike, wea"},{"name":"list_standing_queries","description":"Travel Product B — list YOUR registered standing disruption\n        queries. Scoped to the calling account: tenant_id is an optional\n        sub-label within yo"},{"name":"delete_standing_query","description":"Travel Product B — delete one of YOUR standing disruption queries\n        by query_id. Only queries registered by the calling account can be\n        deleted. Pa"},{"name":"list_disruption_events","description":"Travel Product B — list emitted disruption events. Every event is\n        a STRUCTURED record: rule-computed severity 1-5 and confidence 0-1,\n        sources sp"},{"name":"get_disruption_event","description":"Travel Product B — fetch one disruption event by event_id, with\n        its frozen span-grounded source set (the evidence as it stood at\n        emission; later"},{"name":"register_disruption_webhook","description":"Travel Product B — register a webhook: emitted disruption events\n        are POSTed to url as the same structured JSON list_disruption_events\n        returns, H"},{"name":"list_disruption_webhooks","description":"Travel Product B — list YOUR registered webhook subscriptions\n        (subscription_id, url; secrets are NEVER echoed). Scoped to the\n        calling account: t"},{"name":"delete_disruption_webhook","description":"Travel Product B — delete ONE webhook subscription you registered.\n        Pass the SAME tenant_id you registered it under — ownership is proven\n        against"},{"name":"resolve_geo","description":"Travel gazetteer lookup: free-text place name -> candidate\n        geo_ids for the other travel-vertical tools (43k-entity gazetteer:\n        admin divisions, c"},{"name":"travel_health","description":"Dependency health of the travel vertical service: reachability of\n        its elasticsearch/postgres/redis plus whether the embedding model is\n        loaded (i"}],"toolCount":43,"toolsHash":"54f99e9c02203952674ea46353cf95432ff5628748722e2a149a9f184daa2d46","serverName":"SeaWeb","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"1.28.1","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T20:24:52.036Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":1096,"error":null,"detail":{"tools":[{"name":"compare_search","description":"A/B ranking comparison, run AFTER a normal search session when the\n    human wants to judge result quality. Ranks the same query under the\n    served ranker (si"},{"name":"vote_comparison","description":"Record an A/B verdict after compare_search. winner: \"A\", \"B\", or\n    \"tie\". judged_by: \"agent\" for your own judgment, \"human\" when relaying\n    the human's answ"},{"name":"search_restaurants","description":"Search restaurants by natural-language intent. location: neighborhood\n    filter (e.g. \"Mission\", \"Marina\"); empty (default) = no filter, all SF.\n    goal: disc"},{"name":"search_salons","description":"Search hair salons, barbershops and beauty salons by natural-language\n    intent (e.g. \"balayage in the Mission\", \"walk-in barber near SoMa\",\n    \"gender-neutra"},{"name":"filter_restaurants","description":"Structured /grep filter on registry or subset of prior search hits."},{"name":"filter_salons","description":"Structured /grep filter over salons (registry or a subset of prior\n    search_salons hits via salon_ids). Salon-only vertical."},{"name":"list_sources","description":"List indexed publishers with entity counts and coverage."},{"name":"get_disruptions","description":"Disruption Watch: active disruption alerts (weather, safety, travel\n    advisories) for a region.\n\n    LIVE since 2026-07-30: the alert poller runs on the crawl"},{"name":"get_camera_visibility","description":"Landmark camera visibility: vision-model readings of public webcams\n    (currently the Golden Gate Bridge Caltrans set), with per-camera history\n    and trip-pl"},{"name":"get_spot_conditions","description":"Trip-condition board for tracked tourist spots (SF Bay Area, Napa,\n    Monterey/Big Sur): one verdict per spot with per-factor readings.\n\n    Factors per spot ("},{"name":"search_web","description":"Full-text search over SeaWeb's own crawled corpus -- the Destination\n    Pulse feature. Prefer this over generic web search for travel and\n    hospitality quest"},{"name":"research","description":"Blocking-best-effort research over SeaWeb's live crawl queue or STORM agent.\n\n    method selects the backend execution engine:\n      - 'standard': executes over"},{"name":"research_status","description":"Poll surface for a research job.\n\n    Caller-scoped: the same SELECT that checks existence also checks\n    ownership (job_id AND requester_key_hash == caller ke"},{"name":"build_dataset","description":"Build a grounded structured dataset grid from web extraction.\n\n    Accepts a task/topic query and requested column names. Creates an isolated\n    Postgres agent"},{"name":"agent_job_status","description":"Check status of an asynchronous STORM or Dataset agent job.\n\n    Authenticated, caller-owned lookup. Missing and wrong-owner job IDs\n    return identical indist"},{"name":"cancel_agent_job","description":"Cancel a queued or running STORM or Dataset agent job.\n\n    Authenticated, owner-scoped, idempotent.\n    "},{"name":"extract_url","description":"One URL in, that page's clean readable content out: `title`, `text`,\n    and `passages` (paragraph blocks), with `source` naming where it came\n    from. search_"},{"name":"get_restaurant","description":"Return full schema.org Restaurant page (E2-A /get slice).\n    restaurant_id and entity_id are aliases; pass either."},{"name":"get_menu","description":"Return structured menu for a restaurant (schema.org Menu shape).\n    restaurant_id and entity_id are aliases; pass either."},{"name":"submit_feedback","description":"Rate a search result you actually used. Call at the end of a task for\n    the result(s) that mattered: vote \"up\" if the entity answered the need,\n    \"down\" if "},{"name":"remember","description":"Save a durable preference on YOUR agent profile (account-level memory\n    that survives new sessions and API-key rotation). Use for defaults worth\n    reusing: "},{"name":"recall","description":"Read YOUR agent profile: remembered preferences, recent searches,\n    recent per-entity actions, and top entities. Call at task start to reuse\n    what past ses"},{"name":"log_outcome","description":"Record what actually happened with an entity so future sessions know:\n    outcome one of booked | visited | called | failed | abandoned | other,\n    with an opt"},{"name":"get_site_skill","description":"Compact action pack for ONE entity, everything an agent needs to act\n    there without re-reading full pages: allowlisted facts, closure status,\n    server-gene"},{"name":"get_salon","description":"Return the full schema.org page for a salon (profile + meta).\n    salon_id and entity_id are aliases; pass either."},{"name":"get_services","description":"Return a salon's service menu (schema.org Menu shape: sections of\n    priced services). Salon counterpart to get_menu.\n    salon_id and entity_id are aliases; p"},{"name":"get_hours","description":"Return opening hours for a restaurant.\n    restaurant_id and entity_id are aliases; pass either."},{"name":"teamwork_preview","description":"Decomposes a request into planned specialist roles and returns a preview; it runs no agents.\n\n    Decomposes natural language requests into planned subtasks and"},{"name":"search","description":"Search any SeaWeb vertical by natural-language intent.\n\n        vertical: one of list_verticals() (e.g. \"restaurants\"). intent: free\n        text. location: nei"},{"name":"get_entity","description":"Full schema.org page for one entity by canonical id\n        (seaweb://{vertical}/{slug}), legacy id, or unique bare slug."},{"name":"get_details","description":"Detail slice (menu / service list) for one entity, the\n        vertical-agnostic counterpart of get_menu/get_services."},{"name":"list_verticals","description":"List configured verticals with entity counts and searchability."},{"name":"search_destination_sentiment","description":"Travel Product A — destination sentiment/trend AGGREGATES (use for\n        \"how do travelers feel about X over time\", never for real-time\n        alerts — that "},{"name":"register_standing_query","description":"Travel Product B — register a standing disruption query:\n        continuous real-time monitoring of geo_ids for disruption_types\n        (subset of: strike, wea"},{"name":"list_standing_queries","description":"Travel Product B — list YOUR registered standing disruption\n        queries. Scoped to the calling account: tenant_id is an optional\n        sub-label within yo"},{"name":"delete_standing_query","description":"Travel Product B — delete one of YOUR standing disruption queries\n        by query_id. Only queries registered by the calling account can be\n        deleted. Pa"},{"name":"list_disruption_events","description":"Travel Product B — list emitted disruption events. Every event is\n        a STRUCTURED record: rule-computed severity 1-5 and confidence 0-1,\n        sources sp"},{"name":"get_disruption_event","description":"Travel Product B — fetch one disruption event by event_id, with\n        its frozen span-grounded source set (the evidence as it stood at\n        emission; later"},{"name":"register_disruption_webhook","description":"Travel Product B — register a webhook: emitted disruption events\n        are POSTed to url as the same structured JSON list_disruption_events\n        returns, H"},{"name":"list_disruption_webhooks","description":"Travel Product B — list YOUR registered webhook subscriptions\n        (subscription_id, url; secrets are NEVER echoed). Scoped to the\n        calling account: t"},{"name":"delete_disruption_webhook","description":"Travel Product B — delete ONE webhook subscription you registered.\n        Pass the SAME tenant_id you registered it under — ownership is proven\n        against"},{"name":"resolve_geo","description":"Travel gazetteer lookup: free-text place name -> candidate\n        geo_ids for the other travel-vertical tools (43k-entity gazetteer:\n        admin divisions, c"},{"name":"travel_health","description":"Dependency health of the travel vertical service: reachability of\n        its elasticsearch/postgres/redis plus whether the embedding model is\n        loaded (i"}],"toolCount":43,"toolsHash":"54f99e9c02203952674ea46353cf95432ff5628748722e2a149a9f184daa2d46","serverName":"SeaWeb","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"1.28.1","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T13:23:37.161Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":1146,"error":null,"detail":{"tools":[{"name":"compare_search","description":"A/B ranking comparison, run AFTER a normal search session when the\n    human wants to judge result quality. Ranks the same query under the\n    served ranker (si"},{"name":"vote_comparison","description":"Record an A/B verdict after compare_search. winner: \"A\", \"B\", or\n    \"tie\". judged_by: \"agent\" for your own judgment, \"human\" when relaying\n    the human's answ"},{"name":"search_restaurants","description":"Search restaurants by natural-language intent. location: neighborhood\n    filter (e.g. \"Mission\", \"Marina\"); empty (default) = no filter, all SF.\n    goal: disc"},{"name":"search_salons","description":"Search hair salons, barbershops and beauty salons by natural-language\n    intent (e.g. \"balayage in the Mission\", \"walk-in barber near SoMa\",\n    \"gender-neutra"},{"name":"filter_restaurants","description":"Structured /grep filter on registry or subset of prior search hits."},{"name":"filter_salons","description":"Structured /grep filter over salons (registry or a subset of prior\n    search_salons hits via salon_ids). Salon-only vertical."},{"name":"list_sources","description":"List indexed publishers with entity counts and coverage."},{"name":"get_disruptions","description":"Disruption Watch: active disruption alerts (weather, safety, travel\n    advisories) for a region.\n\n    LIVE since 2026-07-30: the alert poller runs on the crawl"},{"name":"get_camera_visibility","description":"Landmark camera visibility: vision-model readings of public webcams\n    (currently the Golden Gate Bridge Caltrans set), with per-camera history\n    and trip-pl"},{"name":"get_spot_conditions","description":"Trip-condition board for tracked tourist spots (SF Bay Area, Napa,\n    Monterey/Big Sur): one verdict per spot with per-factor readings.\n\n    Factors per spot ("},{"name":"search_web","description":"Full-text search over SeaWeb's own crawled corpus -- the Destination\n    Pulse feature. Prefer this over generic web search for travel and\n    hospitality quest"},{"name":"research","description":"Blocking-best-effort research over SeaWeb's live crawl queue or STORM agent.\n\n    method selects the backend execution engine:\n      - 'standard': executes over"},{"name":"research_status","description":"Poll surface for a research job.\n\n    Caller-scoped: the same SELECT that checks existence also checks\n    ownership (job_id AND requester_key_hash == caller ke"},{"name":"build_dataset","description":"Build a grounded structured dataset grid from web extraction.\n\n    Accepts a task/topic query and requested column names. Creates an isolated\n    Postgres agent"},{"name":"agent_job_status","description":"Check status of an asynchronous STORM or Dataset agent job.\n\n    Authenticated, caller-owned lookup. Missing and wrong-owner job IDs\n    return identical indist"},{"name":"cancel_agent_job","description":"Cancel a queued or running STORM or Dataset agent job.\n\n    Authenticated, owner-scoped, idempotent.\n    "},{"name":"extract_url","description":"One URL in, that page's clean readable content out: `title`, `text`,\n    and `passages` (paragraph blocks), with `source` naming where it came\n    from. search_"},{"name":"get_restaurant","description":"Return full schema.org Restaurant page (E2-A /get slice).\n    restaurant_id and entity_id are aliases; pass either."},{"name":"get_menu","description":"Return structured menu for a restaurant (schema.org Menu shape).\n    restaurant_id and entity_id are aliases; pass either."},{"name":"submit_feedback","description":"Rate a search result you actually used. Call at the end of a task for\n    the result(s) that mattered: vote \"up\" if the entity answered the need,\n    \"down\" if "},{"name":"remember","description":"Save a durable preference on YOUR agent profile (account-level memory\n    that survives new sessions and API-key rotation). Use for defaults worth\n    reusing: "},{"name":"recall","description":"Read YOUR agent profile: remembered preferences, recent searches,\n    recent per-entity actions, and top entities. Call at task start to reuse\n    what past ses"},{"name":"log_outcome","description":"Record what actually happened with an entity so future sessions know:\n    outcome one of booked | visited | called | failed | abandoned | other,\n    with an opt"},{"name":"get_site_skill","description":"Compact action pack for ONE entity, everything an agent needs to act\n    there without re-reading full pages: allowlisted facts, closure status,\n    server-gene"},{"name":"get_salon","description":"Return the full schema.org page for a salon (profile + meta).\n    salon_id and entity_id are aliases; pass either."},{"name":"get_services","description":"Return a salon's service menu (schema.org Menu shape: sections of\n    priced services). Salon counterpart to get_menu.\n    salon_id and entity_id are aliases; p"},{"name":"get_hours","description":"Return opening hours for a restaurant.\n    restaurant_id and entity_id are aliases; pass either."},{"name":"teamwork_preview","description":"Decomposes a request into planned specialist roles and returns a preview; it runs no agents.\n\n    Decomposes natural language requests into planned subtasks and"},{"name":"search","description":"Search any SeaWeb vertical by natural-language intent.\n\n        vertical: one of list_verticals() (e.g. \"restaurants\"). intent: free\n        text. location: nei"},{"name":"get_entity","description":"Full schema.org page for one entity by canonical id\n        (seaweb://{vertical}/{slug}), legacy id, or unique bare slug."},{"name":"get_details","description":"Detail slice (menu / service list) for one entity, the\n        vertical-agnostic counterpart of get_menu/get_services."},{"name":"list_verticals","description":"List configured verticals with entity counts and searchability."},{"name":"search_destination_sentiment","description":"Travel Product A — destination sentiment/trend AGGREGATES (use for\n        \"how do travelers feel about X over time\", never for real-time\n        alerts — that "},{"name":"register_standing_query","description":"Travel Product B — register a standing disruption query:\n        continuous real-time monitoring of geo_ids for disruption_types\n        (subset of: strike, wea"},{"name":"list_standing_queries","description":"Travel Product B — list YOUR registered standing disruption\n        queries. Scoped to the calling account: tenant_id is an optional\n        sub-label within yo"},{"name":"delete_standing_query","description":"Travel Product B — delete one of YOUR standing disruption queries\n        by query_id. Only queries registered by the calling account can be\n        deleted. Pa"},{"name":"list_disruption_events","description":"Travel Product B — list emitted disruption events. Every event is\n        a STRUCTURED record: rule-computed severity 1-5 and confidence 0-1,\n        sources sp"},{"name":"get_disruption_event","description":"Travel Product B — fetch one disruption event by event_id, with\n        its frozen span-grounded source set (the evidence as it stood at\n        emission; later"},{"name":"register_disruption_webhook","description":"Travel Product B — register a webhook: emitted disruption events\n        are POSTed to url as the same structured JSON list_disruption_events\n        returns, H"},{"name":"list_disruption_webhooks","description":"Travel Product B — list YOUR registered webhook subscriptions\n        (subscription_id, url; secrets are NEVER echoed). Scoped to the\n        calling account: t"},{"name":"delete_disruption_webhook","description":"Travel Product B — delete ONE webhook subscription you registered.\n        Pass the SAME tenant_id you registered it under — ownership is proven\n        against"},{"name":"resolve_geo","description":"Travel gazetteer lookup: free-text place name -> candidate\n        geo_ids for the other travel-vertical tools (43k-entity gazetteer:\n        admin divisions, c"},{"name":"travel_health","description":"Dependency health of the travel vertical service: reachability of\n        its elasticsearch/postgres/redis plus whether the embedding model is\n        loaded (i"}],"toolCount":43,"toolsHash":"54f99e9c02203952674ea46353cf95432ff5628748722e2a149a9f184daa2d46","serverName":"SeaWeb","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"1.28.1","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T07:25:02.996Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":1400,"error":null,"detail":{"tools":[{"name":"compare_search","description":"A/B ranking comparison, run AFTER a normal search session when the\n    human wants to judge result quality. Ranks the same query under the\n    served ranker (si"},{"name":"vote_comparison","description":"Record an A/B verdict after compare_search. winner: \"A\", \"B\", or\n    \"tie\". judged_by: \"agent\" for your own judgment, \"human\" when relaying\n    the human's answ"},{"name":"search_restaurants","description":"Search restaurants by natural-language intent. location: neighborhood\n    filter (e.g. \"Mission\", \"Marina\"); empty (default) = no filter, all SF.\n    goal: disc"},{"name":"search_salons","description":"Search hair salons, barbershops and beauty salons by natural-language\n    intent (e.g. \"balayage in the Mission\", \"walk-in barber near SoMa\",\n    \"gender-neutra"},{"name":"filter_restaurants","description":"Structured /grep filter on registry or subset of prior search hits."},{"name":"filter_salons","description":"Structured /grep filter over salons (registry or a subset of prior\n    search_salons hits via salon_ids). Salon-only vertical."},{"name":"list_sources","description":"List indexed publishers with entity counts and coverage."},{"name":"get_disruptions","description":"Disruption Watch: active disruption alerts (weather, safety, travel\n    advisories) for a region.\n\n    LIVE since 2026-07-30: the alert poller runs on the crawl"},{"name":"get_camera_visibility","description":"Landmark camera visibility: vision-model readings of public webcams\n    (currently the Golden Gate Bridge Caltrans set), with per-camera history\n    and trip-pl"},{"name":"get_spot_conditions","description":"Trip-condition board for tracked tourist spots (SF Bay Area, Napa,\n    Monterey/Big Sur): one verdict per spot with per-factor readings.\n\n    Factors per spot ("},{"name":"search_web","description":"Full-text search over SeaWeb's own crawled corpus -- the Destination\n    Pulse feature. Prefer this over generic web search for travel and\n    hospitality quest"},{"name":"research","description":"Blocking-best-effort research over SeaWeb's live crawl queue or STORM agent.\n\n    method selects the backend execution engine:\n      - 'standard': executes over"},{"name":"research_status","description":"Poll surface for a research job.\n\n    Caller-scoped: the same SELECT that checks existence also checks\n    ownership (job_id AND requester_key_hash == caller ke"},{"name":"build_dataset","description":"Build a grounded structured dataset grid from web extraction.\n\n    Accepts a task/topic query and requested column names. Creates an isolated\n    Postgres agent"},{"name":"agent_job_status","description":"Check status of an asynchronous STORM or Dataset agent job.\n\n    Authenticated, caller-owned lookup. Missing and wrong-owner job IDs\n    return identical indist"},{"name":"cancel_agent_job","description":"Cancel a queued or running STORM or Dataset agent job.\n\n    Authenticated, owner-scoped, idempotent.\n    "},{"name":"extract_url","description":"One URL in, that page's clean readable content out: `title`, `text`,\n    and `passages` (paragraph blocks), with `source` naming where it came\n    from. search_"},{"name":"get_restaurant","description":"Return full schema.org Restaurant page (E2-A /get slice).\n    restaurant_id and entity_id are aliases; pass either."},{"name":"get_menu","description":"Return structured menu for a restaurant (schema.org Menu shape).\n    restaurant_id and entity_id are aliases; pass either."},{"name":"submit_feedback","description":"Rate a search result you actually used. Call at the end of a task for\n    the result(s) that mattered: vote \"up\" if the entity answered the need,\n    \"down\" if "},{"name":"remember","description":"Save a durable preference on YOUR agent profile (account-level memory\n    that survives new sessions and API-key rotation). Use for defaults worth\n    reusing: "},{"name":"recall","description":"Read YOUR agent profile: remembered preferences, recent searches,\n    recent per-entity actions, and top entities. Call at task start to reuse\n    what past ses"},{"name":"log_outcome","description":"Record what actually happened with an entity so future sessions know:\n    outcome one of booked | visited | called | failed | abandoned | other,\n    with an opt"},{"name":"get_site_skill","description":"Compact action pack for ONE entity, everything an agent needs to act\n    there without re-reading full pages: allowlisted facts, closure status,\n    server-gene"},{"name":"get_salon","description":"Return the full schema.org page for a salon (profile + meta).\n    salon_id and entity_id are aliases; pass either."},{"name":"get_services","description":"Return a salon's service menu (schema.org Menu shape: sections of\n    priced services). Salon counterpart to get_menu.\n    salon_id and entity_id are aliases; p"},{"name":"get_hours","description":"Return opening hours for a restaurant.\n    restaurant_id and entity_id are aliases; pass either."},{"name":"teamwork_preview","description":"Decomposes a request into planned specialist roles and returns a preview; it runs no agents.\n\n    Decomposes natural language requests into planned subtasks and"},{"name":"search","description":"Search any SeaWeb vertical by natural-language intent.\n\n        vertical: one of list_verticals() (e.g. \"restaurants\"). intent: free\n        text. location: nei"},{"name":"get_entity","description":"Full schema.org page for one entity by canonical id\n        (seaweb://{vertical}/{slug}), legacy id, or unique bare slug."},{"name":"get_details","description":"Detail slice (menu / service list) for one entity, the\n        vertical-agnostic counterpart of get_menu/get_services."},{"name":"list_verticals","description":"List configured verticals with entity counts and searchability."},{"name":"search_destination_sentiment","description":"Travel Product A — destination sentiment/trend AGGREGATES (use for\n        \"how do travelers feel about X over time\", never for real-time\n        alerts — that "},{"name":"register_standing_query","description":"Travel Product B — register a standing disruption query:\n        continuous real-time monitoring of geo_ids for disruption_types\n        (subset of: strike, wea"},{"name":"list_standing_queries","description":"Travel Product B — list YOUR registered standing disruption\n        queries. Scoped to the calling account: tenant_id is an optional\n        sub-label within yo"},{"name":"delete_standing_query","description":"Travel Product B — delete one of YOUR standing disruption queries\n        by query_id. Only queries registered by the calling account can be\n        deleted. Pa"},{"name":"list_disruption_events","description":"Travel Product B — list emitted disruption events. Every event is\n        a STRUCTURED record: rule-computed severity 1-5 and confidence 0-1,\n        sources sp"},{"name":"get_disruption_event","description":"Travel Product B — fetch one disruption event by event_id, with\n        its frozen span-grounded source set (the evidence as it stood at\n        emission; later"},{"name":"register_disruption_webhook","description":"Travel Product B — register a webhook: emitted disruption events\n        are POSTed to url as the same structured JSON list_disruption_events\n        returns, H"},{"name":"list_disruption_webhooks","description":"Travel Product B — list YOUR registered webhook subscriptions\n        (subscription_id, url; secrets are NEVER echoed). Scoped to the\n        calling account: t"},{"name":"delete_disruption_webhook","description":"Travel Product B — delete ONE webhook subscription you registered.\n        Pass the SAME tenant_id you registered it under — ownership is proven\n        against"},{"name":"resolve_geo","description":"Travel gazetteer lookup: free-text place name -> candidate\n        geo_ids for the other travel-vertical tools (43k-entity gazetteer:\n        admin divisions, c"},{"name":"travel_health","description":"Dependency health of the travel vertical service: reachability of\n        its elasticsearch/postgres/redis plus whether the embedding model is\n        loaded (i"}],"toolCount":43,"toolsHash":"54f99e9c02203952674ea46353cf95432ff5628748722e2a149a9f184daa2d46","serverName":"SeaWeb","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"1.28.1","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T00:26:56.442Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":1470,"error":null,"detail":{"tools":[{"name":"compare_search","description":"A/B ranking comparison, run AFTER a normal search session when the\n    human wants to judge result quality. Ranks the same query under the\n    served ranker (si"},{"name":"vote_comparison","description":"Record an A/B verdict after compare_search. winner: \"A\", \"B\", or\n    \"tie\". judged_by: \"agent\" for your own judgment, \"human\" when relaying\n    the human's answ"},{"name":"search_restaurants","description":"Search restaurants by natural-language intent. location: neighborhood\n    filter (e.g. \"Mission\", \"Marina\"); empty (default) = no filter, all SF.\n    goal: disc"},{"name":"search_salons","description":"Search hair salons, barbershops and beauty salons by natural-language\n    intent (e.g. \"balayage in the Mission\", \"walk-in barber near SoMa\",\n    \"gender-neutra"},{"name":"filter_restaurants","description":"Structured /grep filter on registry or subset of prior search hits."},{"name":"filter_salons","description":"Structured /grep filter over salons (registry or a subset of prior\n    search_salons hits via salon_ids). Salon-only vertical."},{"name":"list_sources","description":"List indexed publishers with entity counts and coverage."},{"name":"get_disruptions","description":"Disruption Watch: active disruption alerts (weather, safety, travel\n    advisories) for a region.\n\n    LIVE since 2026-07-30: the alert poller runs on the crawl"},{"name":"get_camera_visibility","description":"Landmark camera visibility: vision-model readings of public webcams\n    (currently the Golden Gate Bridge Caltrans set), with per-camera history\n    and trip-pl"},{"name":"get_spot_conditions","description":"Trip-condition board for tracked tourist spots (SF Bay Area, Napa,\n    Monterey/Big Sur): one verdict per spot with per-factor readings.\n\n    Factors per spot ("},{"name":"search_web","description":"Full-text search over SeaWeb's own crawled corpus -- the Destination\n    Pulse feature. Prefer this over generic web search for travel and\n    hospitality quest"},{"name":"research","description":"Blocking-best-effort research over SeaWeb's live crawl queue or STORM agent.\n\n    method selects the backend execution engine:\n      - 'standard': executes over"},{"name":"research_status","description":"Poll surface for a research job.\n\n    Caller-scoped: the same SELECT that checks existence also checks\n    ownership (job_id AND requester_key_hash == caller ke"},{"name":"build_dataset","description":"Build a grounded structured dataset grid from web extraction.\n\n    Accepts a task/topic query and requested column names. Creates an isolated\n    Postgres agent"},{"name":"agent_job_status","description":"Check status of an asynchronous STORM or Dataset agent job.\n\n    Authenticated, caller-owned lookup. Missing and wrong-owner job IDs\n    return identical indist"},{"name":"cancel_agent_job","description":"Cancel a queued or running STORM or Dataset agent job.\n\n    Authenticated, owner-scoped, idempotent.\n    "},{"name":"extract_url","description":"One URL in, that page's clean readable content out: `title`, `text`,\n    and `passages` (paragraph blocks), with `source` naming where it came\n    from. search_"},{"name":"get_restaurant","description":"Return full schema.org Restaurant page (E2-A /get slice).\n    restaurant_id and entity_id are aliases; pass either."},{"name":"get_menu","description":"Return structured menu for a restaurant (schema.org Menu shape).\n    restaurant_id and entity_id are aliases; pass either."},{"name":"submit_feedback","description":"Rate a search result you actually used. Call at the end of a task for\n    the result(s) that mattered: vote \"up\" if the entity answered the need,\n    \"down\" if "},{"name":"remember","description":"Save a durable preference on YOUR agent profile (account-level memory\n    that survives new sessions and API-key rotation). Use for defaults worth\n    reusing: "},{"name":"recall","description":"Read YOUR agent profile: remembered preferences, recent searches,\n    recent per-entity actions, and top entities. Call at task start to reuse\n    what past ses"},{"name":"log_outcome","description":"Record what actually happened with an entity so future sessions know:\n    outcome one of booked | visited | called | failed | abandoned | other,\n    with an opt"},{"name":"get_site_skill","description":"Compact action pack for ONE entity, everything an agent needs to act\n    there without re-reading full pages: allowlisted facts, closure status,\n    server-gene"},{"name":"get_salon","description":"Return the full schema.org page for a salon (profile + meta).\n    salon_id and entity_id are aliases; pass either."},{"name":"get_services","description":"Return a salon's service menu (schema.org Menu shape: sections of\n    priced services). Salon counterpart to get_menu.\n    salon_id and entity_id are aliases; p"},{"name":"get_hours","description":"Return opening hours for a restaurant.\n    restaurant_id and entity_id are aliases; pass either."},{"name":"teamwork_preview","description":"Decomposes a request into planned specialist roles and returns a preview; it runs no agents.\n\n    Decomposes natural language requests into planned subtasks and"},{"name":"search","description":"Search any SeaWeb vertical by natural-language intent.\n\n        vertical: one of list_verticals() (e.g. \"restaurants\"). intent: free\n        text. location: nei"},{"name":"get_entity","description":"Full schema.org page for one entity by canonical id\n        (seaweb://{vertical}/{slug}), legacy id, or unique bare slug."},{"name":"get_details","description":"Detail slice (menu / service list) for one entity, the\n        vertical-agnostic counterpart of get_menu/get_services."},{"name":"list_verticals","description":"List configured verticals with entity counts and searchability."},{"name":"search_destination_sentiment","description":"Travel Product A — destination sentiment/trend AGGREGATES (use for\n        \"how do travelers feel about X over time\", never for real-time\n        alerts — that "},{"name":"register_standing_query","description":"Travel Product B — register a standing disruption query:\n        continuous real-time monitoring of geo_ids for disruption_types\n        (subset of: strike, wea"},{"name":"list_standing_queries","description":"Travel Product B — list YOUR registered standing disruption\n        queries. Scoped to the calling account: tenant_id is an optional\n        sub-label within yo"},{"name":"delete_standing_query","description":"Travel Product B — delete one of YOUR standing disruption queries\n        by query_id. Only queries registered by the calling account can be\n        deleted. Pa"},{"name":"list_disruption_events","description":"Travel Product B — list emitted disruption events. Every event is\n        a STRUCTURED record: rule-computed severity 1-5 and confidence 0-1,\n        sources sp"},{"name":"get_disruption_event","description":"Travel Product B — fetch one disruption event by event_id, with\n        its frozen span-grounded source set (the evidence as it stood at\n        emission; later"},{"name":"register_disruption_webhook","description":"Travel Product B — register a webhook: emitted disruption events\n        are POSTed to url as the same structured JSON list_disruption_events\n        returns, H"},{"name":"list_disruption_webhooks","description":"Travel Product B — list YOUR registered webhook subscriptions\n        (subscription_id, url; secrets are NEVER echoed). Scoped to the\n        calling account: t"},{"name":"delete_disruption_webhook","description":"Travel Product B — delete ONE webhook subscription you registered.\n        Pass the SAME tenant_id you registered it under — ownership is proven\n        against"},{"name":"resolve_geo","description":"Travel gazetteer lookup: free-text place name -> candidate\n        geo_ids for the other travel-vertical tools (43k-entity gazetteer:\n        admin divisions, c"},{"name":"travel_health","description":"Dependency health of the travel vertical service: reachability of\n        its elasticsearch/postgres/redis plus whether the embedding model is\n        loaded (i"}],"toolCount":43,"toolsHash":"54f99e9c02203952674ea46353cf95432ff5628748722e2a149a9f184daa2d46","serverName":"SeaWeb","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"1.28.1","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T17:31:12.450Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":896,"error":null,"detail":{"tools":[{"name":"compare_search","description":"A/B ranking comparison, run AFTER a normal search session when the\n    human wants to judge result quality. Ranks the same query under the\n    served ranker (si"},{"name":"vote_comparison","description":"Record an A/B verdict after compare_search. winner: \"A\", \"B\", or\n    \"tie\". judged_by: \"agent\" for your own judgment, \"human\" when relaying\n    the human's answ"},{"name":"search_restaurants","description":"Search restaurants by natural-language intent. location: neighborhood\n    filter (e.g. \"Mission\", \"Marina\"); empty (default) = no filter, all SF.\n    goal: disc"},{"name":"search_salons","description":"Search hair salons, barbershops and beauty salons by natural-language\n    intent (e.g. \"balayage in the Mission\", \"walk-in barber near SoMa\",\n    \"gender-neutra"},{"name":"filter_restaurants","description":"Structured /grep filter on registry or subset of prior search hits."},{"name":"filter_salons","description":"Structured /grep filter over salons (registry or a subset of prior\n    search_salons hits via salon_ids). Salon-only vertical."},{"name":"list_sources","description":"List indexed publishers with entity counts and coverage."},{"name":"get_disruptions","description":"Disruption Watch: active disruption alerts (weather, safety, travel\n    advisories) for a region.\n\n    LIVE since 2026-07-30: the alert poller runs on the crawl"},{"name":"get_camera_visibility","description":"Landmark camera visibility: vision-model readings of public webcams\n    (currently the Golden Gate Bridge Caltrans set), with per-camera history\n    and trip-pl"},{"name":"get_spot_conditions","description":"Trip-condition board for tracked tourist spots (SF Bay Area, Napa,\n    Monterey/Big Sur): one verdict per spot with per-factor readings.\n\n    Factors per spot ("},{"name":"search_web","description":"Full-text search over SeaWeb's own crawled corpus -- the Destination\n    Pulse feature. Prefer this over generic web search for travel and\n    hospitality quest"},{"name":"research","description":"Blocking-best-effort research over SeaWeb's live crawl queue or STORM agent.\n\n    method selects the backend execution engine:\n      - 'standard': executes over"},{"name":"research_status","description":"Poll surface for a research job.\n\n    Caller-scoped: the same SELECT that checks existence also checks\n    ownership (job_id AND requester_key_hash == caller ke"},{"name":"build_dataset","description":"Build a grounded structured dataset grid from web extraction.\n\n    Accepts a task/topic query and requested column names. Creates an isolated\n    Postgres agent"},{"name":"agent_job_status","description":"Check status of an asynchronous STORM or Dataset agent job.\n\n    Authenticated, caller-owned lookup. Missing and wrong-owner job IDs\n    return identical indist"},{"name":"cancel_agent_job","description":"Cancel a queued or running STORM or Dataset agent job.\n\n    Authenticated, owner-scoped, idempotent.\n    "},{"name":"extract_url","description":"One URL in, that page's clean readable content out: `title`, `text`,\n    and `passages` (paragraph blocks), with `source` naming where it came\n    from. search_"},{"name":"get_restaurant","description":"Return full schema.org Restaurant page (E2-A /get slice).\n    restaurant_id and entity_id are aliases; pass either."},{"name":"get_menu","description":"Return structured menu for a restaurant (schema.org Menu shape).\n    restaurant_id and entity_id are aliases; pass either."},{"name":"submit_feedback","description":"Rate a search result you actually used. Call at the end of a task for\n    the result(s) that mattered: vote \"up\" if the entity answered the need,\n    \"down\" if "},{"name":"remember","description":"Save a durable preference on YOUR agent profile (account-level memory\n    that survives new sessions and API-key rotation). Use for defaults worth\n    reusing: "},{"name":"recall","description":"Read YOUR agent profile: remembered preferences, recent searches,\n    recent per-entity actions, and top entities. Call at task start to reuse\n    what past ses"},{"name":"log_outcome","description":"Record what actually happened with an entity so future sessions know:\n    outcome one of booked | visited | called | failed | abandoned | other,\n    with an opt"},{"name":"get_site_skill","description":"Compact action pack for ONE entity, everything an agent needs to act\n    there without re-reading full pages: allowlisted facts, closure status,\n    server-gene"},{"name":"get_salon","description":"Return the full schema.org page for a salon (profile + meta).\n    salon_id and entity_id are aliases; pass either."},{"name":"get_services","description":"Return a salon's service menu (schema.org Menu shape: sections of\n    priced services). Salon counterpart to get_menu.\n    salon_id and entity_id are aliases; p"},{"name":"get_hours","description":"Return opening hours for a restaurant.\n    restaurant_id and entity_id are aliases; pass either."},{"name":"teamwork_preview","description":"Decomposes a request into planned specialist roles and returns a preview; it runs no agents.\n\n    Decomposes natural language requests into planned subtasks and"},{"name":"search","description":"Search any SeaWeb vertical by natural-language intent.\n\n        vertical: one of list_verticals() (e.g. \"restaurants\"). intent: free\n        text. location: nei"},{"name":"get_entity","description":"Full schema.org page for one entity by canonical id\n        (seaweb://{vertical}/{slug}), legacy id, or unique bare slug."},{"name":"get_details","description":"Detail slice (menu / service list) for one entity, the\n        vertical-agnostic counterpart of get_menu/get_services."},{"name":"list_verticals","description":"List configured verticals with entity counts and searchability."},{"name":"search_destination_sentiment","description":"Travel Product A — destination sentiment/trend AGGREGATES (use for\n        \"how do travelers feel about X over time\", never for real-time\n        alerts — that "},{"name":"register_standing_query","description":"Travel Product B — register a standing disruption query:\n        continuous real-time monitoring of geo_ids for disruption_types\n        (subset of: strike, wea"},{"name":"list_standing_queries","description":"Travel Product B — list YOUR registered standing disruption\n        queries. Scoped to the calling account: tenant_id is an optional\n        sub-label within yo"},{"name":"delete_standing_query","description":"Travel Product B — delete one of YOUR standing disruption queries\n        by query_id. Only queries registered by the calling account can be\n        deleted. Pa"},{"name":"list_disruption_events","description":"Travel Product B — list emitted disruption events. Every event is\n        a STRUCTURED record: rule-computed severity 1-5 and confidence 0-1,\n        sources sp"},{"name":"get_disruption_event","description":"Travel Product B — fetch one disruption event by event_id, with\n        its frozen span-grounded source set (the evidence as it stood at\n        emission; later"},{"name":"register_disruption_webhook","description":"Travel Product B — register a webhook: emitted disruption events\n        are POSTed to url as the same structured JSON list_disruption_events\n        returns, H"},{"name":"list_disruption_webhooks","description":"Travel Product B — list YOUR registered webhook subscriptions\n        (subscription_id, url; secrets are NEVER echoed). Scoped to the\n        calling account: t"},{"name":"delete_disruption_webhook","description":"Travel Product B — delete ONE webhook subscription you registered.\n        Pass the SAME tenant_id you registered it under — ownership is proven\n        against"},{"name":"resolve_geo","description":"Travel gazetteer lookup: free-text place name -> candidate\n        geo_ids for the other travel-vertical tools (43k-entity gazetteer:\n        admin divisions, c"},{"name":"travel_health","description":"Dependency health of the travel vertical service: reachability of\n        its elasticsearch/postgres/redis plus whether the embedding model is\n        loaded (i"}],"toolCount":43,"toolsHash":"54f99e9c02203952674ea46353cf95432ff5628748722e2a149a9f184daa2d46","serverName":"SeaWeb","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"1.28.1","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T11:25:28.864Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":1074,"error":null,"detail":{"tools":[{"name":"compare_search","description":"A/B ranking comparison, run AFTER a normal search session when the\n    human wants to judge result quality. Ranks the same query under the\n    served ranker (si"},{"name":"vote_comparison","description":"Record an A/B verdict after compare_search. winner: \"A\", \"B\", or\n    \"tie\". judged_by: \"agent\" for your own judgment, \"human\" when relaying\n    the human's answ"},{"name":"search_restaurants","description":"Search restaurants by natural-language intent. location: neighborhood\n    filter (e.g. \"Mission\", \"Marina\"); empty (default) = no filter, all SF.\n    goal: disc"},{"name":"search_salons","description":"Search hair salons, barbershops and beauty salons by natural-language\n    intent (e.g. \"balayage in the Mission\", \"walk-in barber near SoMa\",\n    \"gender-neutra"},{"name":"filter_restaurants","description":"Structured /grep filter on registry or subset of prior search hits."},{"name":"filter_salons","description":"Structured /grep filter over salons (registry or a subset of prior\n    search_salons hits via salon_ids). Salon-only vertical."},{"name":"list_sources","description":"List indexed publishers with entity counts and coverage."},{"name":"get_disruptions","description":"Disruption Watch: active disruption alerts (weather, safety, travel\n    advisories) for a region.\n\n    LIVE since 2026-07-30: the alert poller runs on the crawl"},{"name":"get_camera_visibility","description":"Landmark camera visibility: vision-model readings of public webcams\n    (currently the Golden Gate Bridge Caltrans set), with per-camera history\n    and trip-pl"},{"name":"get_spot_conditions","description":"Trip-condition board for tracked tourist spots (SF Bay Area, Napa,\n    Monterey/Big Sur): one verdict per spot with per-factor readings.\n\n    Factors per spot ("},{"name":"search_web","description":"Full-text search over SeaWeb's own crawled corpus -- the Destination\n    Pulse feature. Prefer this over generic web search for travel and\n    hospitality quest"},{"name":"research","description":"Blocking-best-effort research over SeaWeb's live crawl queue or STORM agent.\n\n    method selects the backend execution engine:\n      - 'standard': executes over"},{"name":"research_status","description":"Poll surface for a research job.\n\n    Caller-scoped: the same SELECT that checks existence also checks\n    ownership (job_id AND requester_key_hash == caller ke"},{"name":"build_dataset","description":"Build a grounded structured dataset grid from web extraction.\n\n    Accepts a task/topic query and requested column names. Creates an isolated\n    Postgres agent"},{"name":"agent_job_status","description":"Check status of an asynchronous STORM or Dataset agent job.\n\n    Authenticated, caller-owned lookup. Missing and wrong-owner job IDs\n    return identical indist"},{"name":"cancel_agent_job","description":"Cancel a queued or running STORM or Dataset agent job.\n\n    Authenticated, owner-scoped, idempotent.\n    "},{"name":"extract_url","description":"One URL in, that page's clean readable content out: `title`, `text`,\n    and `passages` (paragraph blocks), with `source` naming where it came\n    from. search_"},{"name":"get_restaurant","description":"Return full schema.org Restaurant page (E2-A /get slice).\n    restaurant_id and entity_id are aliases; pass either."},{"name":"get_menu","description":"Return structured menu for a restaurant (schema.org Menu shape).\n    restaurant_id and entity_id are aliases; pass either."},{"name":"submit_feedback","description":"Rate a search result you actually used. Call at the end of a task for\n    the result(s) that mattered: vote \"up\" if the entity answered the need,\n    \"down\" if "},{"name":"remember","description":"Save a durable preference on YOUR agent profile (account-level memory\n    that survives new sessions and API-key rotation). Use for defaults worth\n    reusing: "},{"name":"recall","description":"Read YOUR agent profile: remembered preferences, recent searches,\n    recent per-entity actions, and top entities. Call at task start to reuse\n    what past ses"},{"name":"log_outcome","description":"Record what actually happened with an entity so future sessions know:\n    outcome one of booked | visited | called | failed | abandoned | other,\n    with an opt"},{"name":"get_site_skill","description":"Compact action pack for ONE entity, everything an agent needs to act\n    there without re-reading full pages: allowlisted facts, closure status,\n    server-gene"},{"name":"get_salon","description":"Return the full schema.org page for a salon (profile + meta).\n    salon_id and entity_id are aliases; pass either."},{"name":"get_services","description":"Return a salon's service menu (schema.org Menu shape: sections of\n    priced services). Salon counterpart to get_menu.\n    salon_id and entity_id are aliases; p"},{"name":"get_hours","description":"Return opening hours for a restaurant.\n    restaurant_id and entity_id are aliases; pass either."},{"name":"teamwork_preview","description":"Decomposes a request into planned specialist roles and returns a preview; it runs no agents.\n\n    Decomposes natural language requests into planned subtasks and"},{"name":"search","description":"Search any SeaWeb vertical by natural-language intent.\n\n        vertical: one of list_verticals() (e.g. \"restaurants\"). intent: free\n        text. location: nei"},{"name":"get_entity","description":"Full schema.org page for one entity by canonical id\n        (seaweb://{vertical}/{slug}), legacy id, or unique bare slug."},{"name":"get_details","description":"Detail slice (menu / service list) for one entity, the\n        vertical-agnostic counterpart of get_menu/get_services."},{"name":"list_verticals","description":"List configured verticals with entity counts and searchability."},{"name":"search_destination_sentiment","description":"Travel Product A — destination sentiment/trend AGGREGATES (use for\n        \"how do travelers feel about X over time\", never for real-time\n        alerts — that "},{"name":"register_standing_query","description":"Travel Product B — register a standing disruption query:\n        continuous real-time monitoring of geo_ids for disruption_types\n        (subset of: strike, wea"},{"name":"list_standing_queries","description":"Travel Product B — list YOUR registered standing disruption\n        queries. Scoped to the calling account: tenant_id is an optional\n        sub-label within yo"},{"name":"delete_standing_query","description":"Travel Product B — delete one of YOUR standing disruption queries\n        by query_id. Only queries registered by the calling account can be\n        deleted. Pa"},{"name":"list_disruption_events","description":"Travel Product B — list emitted disruption events. Every event is\n        a STRUCTURED record: rule-computed severity 1-5 and confidence 0-1,\n        sources sp"},{"name":"get_disruption_event","description":"Travel Product B — fetch one disruption event by event_id, with\n        its frozen span-grounded source set (the evidence as it stood at\n        emission; later"},{"name":"register_disruption_webhook","description":"Travel Product B — register a webhook: emitted disruption events\n        are POSTed to url as the same structured JSON list_disruption_events\n        returns, H"},{"name":"list_disruption_webhooks","description":"Travel Product B — list YOUR registered webhook subscriptions\n        (subscription_id, url; secrets are NEVER echoed). Scoped to the\n        calling account: t"},{"name":"delete_disruption_webhook","description":"Travel Product B — delete ONE webhook subscription you registered.\n        Pass the SAME tenant_id you registered it under — ownership is proven\n        against"},{"name":"resolve_geo","description":"Travel gazetteer lookup: free-text place name -> candidate\n        geo_ids for the other travel-vertical tools (43k-entity gazetteer:\n        admin divisions, c"},{"name":"travel_health","description":"Dependency health of the travel vertical service: reachability of\n        its elasticsearch/postgres/redis plus whether the embedding model is\n        loaded (i"}],"toolCount":43,"toolsHash":"54f99e9c02203952674ea46353cf95432ff5628748722e2a149a9f184daa2d46","serverName":"SeaWeb","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"1.28.1","protocolVersion":"2025-06-18"}}],"tools":[{"name":"compare_search","description":"A/B ranking comparison, run AFTER a normal search session when the\n    human wants to judge result quality. Ranks the same query under the\n    served ranker (si"},{"name":"vote_comparison","description":"Record an A/B verdict after compare_search. winner: \"A\", \"B\", or\n    \"tie\". judged_by: \"agent\" for your own judgment, \"human\" when relaying\n    the human's answ"},{"name":"search_restaurants","description":"Search restaurants by natural-language intent. location: neighborhood\n    filter (e.g. \"Mission\", \"Marina\"); empty (default) = no filter, all SF.\n    goal: disc"},{"name":"search_salons","description":"Search hair salons, barbershops and beauty salons by natural-language\n    intent (e.g. \"balayage in the Mission\", \"walk-in barber near SoMa\",\n    \"gender-neutra"},{"name":"filter_restaurants","description":"Structured /grep filter on registry or subset of prior search hits."},{"name":"filter_salons","description":"Structured /grep filter over salons (registry or a subset of prior\n    search_salons hits via salon_ids). Salon-only vertical."},{"name":"list_sources","description":"List indexed publishers with entity counts and coverage."},{"name":"get_disruptions","description":"Disruption Watch: active disruption alerts (weather, safety, travel\n    advisories) for a region.\n\n    LIVE since 2026-07-30: the alert poller runs on the crawl"},{"name":"get_camera_visibility","description":"Landmark camera visibility: vision-model readings of public webcams\n    (currently the Golden Gate Bridge Caltrans set), with per-camera history\n    and trip-pl"},{"name":"get_spot_conditions","description":"Trip-condition board for tracked tourist spots (SF Bay Area, Napa,\n    Monterey/Big Sur): one verdict per spot with per-factor readings.\n\n    Factors per spot ("},{"name":"search_web","description":"Full-text search over SeaWeb's own crawled corpus -- the Destination\n    Pulse feature. Prefer this over generic web search for travel and\n    hospitality quest"},{"name":"research","description":"Blocking-best-effort research over SeaWeb's live crawl queue or STORM agent.\n\n    method selects the backend execution engine:\n      - 'standard': executes over"},{"name":"research_status","description":"Poll surface for a research job.\n\n    Caller-scoped: the same SELECT that checks existence also checks\n    ownership (job_id AND requester_key_hash == caller ke"},{"name":"build_dataset","description":"Build a grounded structured dataset grid from web extraction.\n\n    Accepts a task/topic query and requested column names. Creates an isolated\n    Postgres agent"},{"name":"agent_job_status","description":"Check status of an asynchronous STORM or Dataset agent job.\n\n    Authenticated, caller-owned lookup. Missing and wrong-owner job IDs\n    return identical indist"},{"name":"cancel_agent_job","description":"Cancel a queued or running STORM or Dataset agent job.\n\n    Authenticated, owner-scoped, idempotent.\n    "},{"name":"extract_url","description":"One URL in, that page's clean readable content out: `title`, `text`,\n    and `passages` (paragraph blocks), with `source` naming where it came\n    from. search_"},{"name":"get_restaurant","description":"Return full schema.org Restaurant page (E2-A /get slice).\n    restaurant_id and entity_id are aliases; pass either."},{"name":"get_menu","description":"Return structured menu for a restaurant (schema.org Menu shape).\n    restaurant_id and entity_id are aliases; pass either."},{"name":"submit_feedback","description":"Rate a search result you actually used. Call at the end of a task for\n    the result(s) that mattered: vote \"up\" if the entity answered the need,\n    \"down\" if "},{"name":"remember","description":"Save a durable preference on YOUR agent profile (account-level memory\n    that survives new sessions and API-key rotation). Use for defaults worth\n    reusing: "},{"name":"recall","description":"Read YOUR agent profile: remembered preferences, recent searches,\n    recent per-entity actions, and top entities. Call at task start to reuse\n    what past ses"},{"name":"log_outcome","description":"Record what actually happened with an entity so future sessions know:\n    outcome one of booked | visited | called | failed | abandoned | other,\n    with an opt"},{"name":"get_site_skill","description":"Compact action pack for ONE entity, everything an agent needs to act\n    there without re-reading full pages: allowlisted facts, closure status,\n    server-gene"},{"name":"get_salon","description":"Return the full schema.org page for a salon (profile + meta).\n    salon_id and entity_id are aliases; pass either."},{"name":"get_services","description":"Return a salon's service menu (schema.org Menu shape: sections of\n    priced services). Salon counterpart to get_menu.\n    salon_id and entity_id are aliases; p"},{"name":"get_hours","description":"Return opening hours for a restaurant.\n    restaurant_id and entity_id are aliases; pass either."},{"name":"teamwork_preview","description":"Decomposes a request into planned specialist roles and returns a preview; it runs no agents.\n\n    Decomposes natural language requests into planned subtasks and"},{"name":"search","description":"Search any SeaWeb vertical by natural-language intent.\n\n        vertical: one of list_verticals() (e.g. \"restaurants\"). intent: free\n        text. location: nei"},{"name":"get_entity","description":"Full schema.org page for one entity by canonical id\n        (seaweb://{vertical}/{slug}), legacy id, or unique bare slug."},{"name":"get_details","description":"Detail slice (menu / service list) for one entity, the\n        vertical-agnostic counterpart of get_menu/get_services."},{"name":"list_verticals","description":"List configured verticals with entity counts and searchability."},{"name":"search_destination_sentiment","description":"Travel Product A — destination sentiment/trend AGGREGATES (use for\n        \"how do travelers feel about X over time\", never for real-time\n        alerts — that "},{"name":"register_standing_query","description":"Travel Product B — register a standing disruption query:\n        continuous real-time monitoring of geo_ids for disruption_types\n        (subset of: strike, wea"},{"name":"list_standing_queries","description":"Travel Product B — list YOUR registered standing disruption\n        queries. Scoped to the calling account: tenant_id is an optional\n        sub-label within yo"},{"name":"delete_standing_query","description":"Travel Product B — delete one of YOUR standing disruption queries\n        by query_id. Only queries registered by the calling account can be\n        deleted. Pa"},{"name":"list_disruption_events","description":"Travel Product B — list emitted disruption events. Every event is\n        a STRUCTURED record: rule-computed severity 1-5 and confidence 0-1,\n        sources sp"},{"name":"get_disruption_event","description":"Travel Product B — fetch one disruption event by event_id, with\n        its frozen span-grounded source set (the evidence as it stood at\n        emission; later"},{"name":"register_disruption_webhook","description":"Travel Product B — register a webhook: emitted disruption events\n        are POSTed to url as the same structured JSON list_disruption_events\n        returns, H"},{"name":"list_disruption_webhooks","description":"Travel Product B — list YOUR registered webhook subscriptions\n        (subscription_id, url; secrets are NEVER echoed). Scoped to the\n        calling account: t"},{"name":"delete_disruption_webhook","description":"Travel Product B — delete ONE webhook subscription you registered.\n        Pass the SAME tenant_id you registered it under — ownership is proven\n        against"},{"name":"resolve_geo","description":"Travel gazetteer lookup: free-text place name -> candidate\n        geo_ids for the other travel-vertical tools (43k-entity gazetteer:\n        admin divisions, c"},{"name":"travel_health","description":"Dependency health of the travel vertical service: reachability of\n        its elasticsearch/postgres/redis plus whether the embedding model is\n        loaded (i"}],"package":null,"toolSurface":{"id":"ts_f9c27ydpn6ve","endpointId":"ep_zm58u88eb3cj","hash":"54f99e9c02203952674ea46353cf95432ff5628748722e2a149a9f184daa2d46","toolCount":43,"serverName":"SeaWeb","serverVersion":"1.28.1","protocolVersion":"2025-06-18","firstSeenAt":"2026-09-12T11:26:48.594Z","lastSeenAt":"2026-10-09T23:29:02.378Z","observations":101,"toolNames":["compare_search","vote_comparison","search_restaurants","search_salons","filter_restaurants","filter_salons","list_sources","get_disruptions","get_camera_visibility","get_spot_conditions","search_web","research","research_status","build_dataset","agent_job_status","cancel_agent_job","extract_url","get_restaurant","get_menu","submit_feedback","remember","recall","log_outcome","get_site_skill","get_salon","get_services","get_hours","teamwork_preview","search","get_entity","get_details","list_verticals","search_destination_sentiment","register_standing_query","list_standing_queries","delete_standing_query","list_disruption_events","get_disruption_event","register_disruption_webhook","list_disruption_webhooks","delete_disruption_webhook","resolve_geo","travel_health"],"distinctSurfaces":1},"endpointFacts":[{"id":"ep_zm58u88eb3cj","url":"https://api.seaweb.tech/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-09T03:22:35.627Z","auth":{"observedAt":"2026-10-09T03:22:35.777Z","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-09T03:22:36.044Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"api.seaweb.tech","issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validFrom":"2026-08-11T21:38:01.000Z","validTo":"2026-11-09T21:38:00.000Z","daysToExpiry":30,"sanCount":1,"fingerprint256":"9B:87:E3:BB:92:51:97:6C:2B:27:B4:97:48:C6:9C:13:32:D6:1E:9C:47:33:54:D7:CB:6A:D3:5E:AA:7C:CA:8B"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"tech.seaweb/seaweb","url":"https://registry.modelcontextprotocol.io/v0/servers/tech.seaweb%2Fseaweb","firstSeenAt":"2026-09-07T09:23:07.572Z","fetchedAt":"2026-10-08T20:19:13.021Z","normalizedAt":"2026-10-08T20:19:13.021Z"}]},"firstSeenAt":"2026-09-07T09:23:07.572Z","updatedAt":"2026-10-09T23:31:43.854Z"}