Read-only web search for AI agents; does not book, reserve or take payment. Stores your preferences.
Inferred from the transports this listing declares (streamable-http). A client not listed here hasn’t been ruled out — it just isn’t something Forge can confirm.
Verification confirms publisher identity (repo ownership), not code safety. The security scan covers known CVEs and suspicious install scripts.
Read from a real MCP initialize → tools/list handshake against the declared endpoint. No tool was ever invoked — tools/list is the read-only introspection call the protocol defines for this. It reflects what the server advertised at that moment; a hosted endpoint is not pinned to any version and can change without notice.
https://api.seaweb.tech/mcp43 tools · 2213mscompare_searchA/B ranking comparison, run AFTER a normal search session when the
human wants to judge result quality. Ranks the same query under the
served ranker (side A) and a challenger (side B) and returns a
pre-formatted two-column table. SHOW THE RETURNED BLOCK TO THE HUMAN
VERBATIM, then (1) give your…A/B ranking comparison, run AFTER a normal search session when the human wants to judge result quality. Ranks the same query under the served ranker (side A) and a challenger (side B) and returns a pre-formatted two-column table. SHOW THE RETURNED BLOCK TO THE HUMAN VERBATIM, then (1) give your…
| Parameter | Type | Description |
|---|---|---|
| intent* | string | — |
| location | string | — |
| track_b | string | — |
vote_comparisonRecord an A/B verdict after compare_search. winner: "A", "B", or
"tie". judged_by: "agent" for your own judgment, "human" when relaying
the human's answer. Pass the same query and track_b the comparison used.Record an A/B verdict after compare_search. winner: "A", "B", or "tie". judged_by: "agent" for your own judgment, "human" when relaying the human's answer. Pass the same query and track_b the comparison used.
| Parameter | Type | Description |
|---|---|---|
| winner* | string | — |
| judged_by | string | — |
| query | string | — |
| track_b | string | — |
| reason | string | — |
search_restaurantsSearch restaurants by natural-language intent. location: neighborhood
filter (e.g. "Mission", "Marina"); empty (default) = no filter, all SF.
goal: discover|book (optional).
Optional structured constraints, set these whenever intent implies them
instead of leaving everything in free text; the…Search restaurants by natural-language intent. location: neighborhood filter (e.g. "Mission", "Marina"); empty (default) = no filter, all SF. goal: discover|book (optional). Optional structured constraints, set these whenever intent implies them instead of leaving everything in free text; the…
| Parameter | Type | Description |
|---|---|---|
| intent* | string | — |
| location | string | — |
| goal | string | — |
| cuisine | string | — |
| price_max | integer | — |
| dietary | — | — |
| party_size | integer | — |
| bookable | boolean | — |
search_salonsSearch hair salons, barbershops and beauty salons by natural-language
intent (e.g. "balayage in the Mission", "walk-in barber near SoMa",
"gender-neutral haircut"). Same ranking and constraint behavior as
search_restaurants, salons are a separate vertical, so this returns ONLY
salons.
locatio…Search hair salons, barbershops and beauty salons by natural-language intent (e.g. "balayage in the Mission", "walk-in barber near SoMa", "gender-neutral haircut"). Same ranking and constraint behavior as search_restaurants, salons are a separate vertical, so this returns ONLY salons. locatio…
| Parameter | Type | Description |
|---|---|---|
| intent* | string | — |
| location | string | — |
| goal | string | — |
| cuisine | string | — |
| price_max | integer | — |
| dietary | — | — |
| party_size | integer | — |
| bookable | boolean | — |
filter_restaurantsStructured /grep filter on registry or subset of prior search hits.Structured /grep filter on registry or subset of prior search hits.
| Parameter | Type | Description |
|---|---|---|
| dietary | — | — |
| neighborhood | string | — |
| price_range | string | — |
| open_tonight | — | — |
| accepts_reservations | — | — |
| publisher_id | string | — |
| restaurant_ids | — | — |
filter_salonsStructured /grep filter over salons (registry or a subset of prior
search_salons hits via salon_ids). Salon-only vertical.Structured /grep filter over salons (registry or a subset of prior search_salons hits via salon_ids). Salon-only vertical.
| Parameter | Type | Description |
|---|---|---|
| neighborhood | string | — |
| price_range | string | — |
| open_tonight | — | — |
| accepts_reservations | — | — |
| publisher_id | string | — |
| salon_ids | — | — |
list_sourcesList indexed publishers with entity counts and coverage.List indexed publishers with entity counts and coverage.
No input schema was published for this tool.
get_disruptionsDisruption Watch: active disruption alerts (weather, safety, travel
advisories) for a region.
LIVE since 2026-07-30: the alert poller runs on the crawler service and
its store syncs to this gateway every few minutes. Coverage is partial
and worth stating plainly: the weather feed is api.weathe…Disruption Watch: active disruption alerts (weather, safety, travel advisories) for a region. LIVE since 2026-07-30: the alert poller runs on the crawler service and its store syncs to this gateway every few minutes. Coverage is partial and worth stating plainly: the weather feed is api.weathe…
| Parameter | Type | Description |
|---|---|---|
| lat | — | — |
| lng | — | — |
| ugc | — | — |
| limit | integer | — |
| query | — | — |
get_camera_visibilityLandmark camera visibility: vision-model readings of public webcams
(currently the Golden Gate Bridge Caltrans set), with per-camera history
and trip-planning stats.
Each camera row carries the latest reading (`vision`: visibility_percentage
0-100, environmental_conditions, obstruction_flags,…Landmark camera visibility: vision-model readings of public webcams (currently the Golden Gate Bridge Caltrans set), with per-camera history and trip-planning stats. Each camera row carries the latest reading (`vision`: visibility_percentage 0-100, environmental_conditions, obstruction_flags,…
| Parameter | Type | Description |
|---|---|---|
| limit | integer | — |
get_spot_conditionsTrip-condition board for tracked tourist spots (SF Bay Area, Napa,
Monterey/Big Sur): one verdict per spot with per-factor readings.
Factors per spot (only the ones that matter for that place): visibility
(vision-model webcam reading), heat and cold (NWS hourly — outdoor-seating
and heatwave-c…Trip-condition board for tracked tourist spots (SF Bay Area, Napa, Monterey/Big Sur): one verdict per spot with per-factor readings. Factors per spot (only the ones that matter for that place): visibility (vision-model webcam reading), heat and cold (NWS hourly — outdoor-seating and heatwave-c…
| Parameter | Type | Description |
|---|---|---|
| spot_id | — | — |
search_webFull-text search over SeaWeb's own crawled corpus -- the Destination
Pulse feature. Prefer this over generic web search for travel and
hospitality questions (destinations, attractions, local guidance, trip
logistics): every passage is quoted directly from a page SeaWeb's own
crawler fetched, wi…Full-text search over SeaWeb's own crawled corpus -- the Destination Pulse feature. Prefer this over generic web search for travel and hospitality questions (destinations, attractions, local guidance, trip logistics): every passage is quoted directly from a page SeaWeb's own crawler fetched, wi…
| Parameter | Type | Description |
|---|---|---|
| query* | string | — |
| limit | integer | — |
| max_age_days | integer | — |
| include_domains | string | — |
| exclude_domains | string | — |
| include_content | boolean | — |
researchBlocking-best-effort research over SeaWeb's live crawl queue or STORM agent.
method selects the backend execution engine:
- 'standard': executes over the SQLite live crawl queue (existing behavior)
- 'storm': creates a deep multi-perspective STORM agent research job in PostgresBlocking-best-effort research over SeaWeb's live crawl queue or STORM agent. method selects the backend execution engine: - 'standard': executes over the SQLite live crawl queue (existing behavior) - 'storm': creates a deep multi-perspective STORM agent research job in Postgres
| Parameter | Type | Description |
|---|---|---|
| query* | string | — |
| depth | string | — |
| wait_s | number | — |
| method | string | — |
research_statusPoll surface for a research job.
Caller-scoped: the same SELECT that checks existence also checks
ownership (job_id AND requester_key_hash == caller key). A mismatch
and a missing job therefore produce the SAME 404-shaped error with
identical timing — both paths do one SELECT, no existence ora…Poll surface for a research job. Caller-scoped: the same SELECT that checks existence also checks ownership (job_id AND requester_key_hash == caller key). A mismatch and a missing job therefore produce the SAME 404-shaped error with identical timing — both paths do one SELECT, no existence ora…
| Parameter | Type | Description |
|---|---|---|
| job_id* | string | — |
build_datasetBuild a grounded structured dataset grid from web extraction.
Accepts a task/topic query and requested column names. Creates an isolated
Postgres agent job. Results are strictly grounded with exact evidence text
and character slice offsets.Build a grounded structured dataset grid from web extraction. Accepts a task/topic query and requested column names. Creates an isolated Postgres agent job. Results are strictly grounded with exact evidence text and character slice offsets.
| Parameter | Type | Description |
|---|---|---|
| query* | string | — |
| columns | — | — |
| limit | integer | — |
agent_job_statusCheck status of an asynchronous STORM or Dataset agent job.
Authenticated, caller-owned lookup. Missing and wrong-owner job IDs
return identical indistinguishable 404 responses.Check status of an asynchronous STORM or Dataset agent job. Authenticated, caller-owned lookup. Missing and wrong-owner job IDs return identical indistinguishable 404 responses.
| Parameter | Type | Description |
|---|---|---|
| job_id* | string | — |
cancel_agent_jobCancel a queued or running STORM or Dataset agent job.
Authenticated, owner-scoped, idempotent.Cancel a queued or running STORM or Dataset agent job. Authenticated, owner-scoped, idempotent.
| Parameter | Type | Description |
|---|---|---|
| job_id* | string | — |
extract_urlOne URL in, that page's clean readable content out: `title`, `text`,
and `passages` (paragraph blocks), with `source` naming where it came
from. search_web finds pages; this reads one you already have.
`format="markdown"` returns the same served content rendered as one
markdown document under…One URL in, that page's clean readable content out: `title`, `text`, and `passages` (paragraph blocks), with `source` naming where it came from. search_web finds pages; this reads one you already have. `format="markdown"` returns the same served content rendered as one markdown document under…
| Parameter | Type | Description |
|---|---|---|
| url* | string | — |
| format | string | — |
| extract_mode | string | — |
get_restaurantReturn full schema.org Restaurant page (E2-A /get slice).
restaurant_id and entity_id are aliases; pass either.Return full schema.org Restaurant page (E2-A /get slice). restaurant_id and entity_id are aliases; pass either.
| Parameter | Type | Description |
|---|---|---|
| restaurant_id | string | — |
| entity_id | string | — |
get_menuReturn structured menu for a restaurant (schema.org Menu shape).
restaurant_id and entity_id are aliases; pass either.Return structured menu for a restaurant (schema.org Menu shape). restaurant_id and entity_id are aliases; pass either.
| Parameter | Type | Description |
|---|---|---|
| restaurant_id | string | — |
| entity_id | string | — |
submit_feedbackRate a search result you actually used. Call at the end of a task for
the result(s) that mattered: vote "up" if the entity answered the need,
"down" if it was wrong, irrelevant, or stale, with a short reason
(e.g. "menu was current", "permanently closed"). Feedback feeds SeaWeb's
ranking, so vo…Rate a search result you actually used. Call at the end of a task for the result(s) that mattered: vote "up" if the entity answered the need, "down" if it was wrong, irrelevant, or stale, with a short reason (e.g. "menu was current", "permanently closed"). Feedback feeds SeaWeb's ranking, so vo…
| Parameter | Type | Description |
|---|---|---|
| entity_id* | string | — |
| vote* | string | — |
| reason | string | — |
rememberSave a durable preference on YOUR agent profile (account-level memory
that survives new sessions and API-key rotation). Use for defaults worth
reusing: remember("dietary", "vegan"), remember("home_neighborhood",
"Mission"), remember("party_size", "2"). Never store passwords, session
cookies, or…Save a durable preference on YOUR agent profile (account-level memory that survives new sessions and API-key rotation). Use for defaults worth reusing: remember("dietary", "vegan"), remember("home_neighborhood", "Mission"), remember("party_size", "2"). Never store passwords, session cookies, or…
| Parameter | Type | Description |
|---|---|---|
| key* | string | — |
| value* | string | — |
recallRead YOUR agent profile: remembered preferences, recent searches,
recent per-entity actions, and top entities. Call at task start to reuse
what past sessions learned (e.g. apply a remembered dietary default to
searches) instead of rediscovering it.Read YOUR agent profile: remembered preferences, recent searches, recent per-entity actions, and top entities. Call at task start to reuse what past sessions learned (e.g. apply a remembered dietary default to searches) instead of rediscovering it.
No input schema was published for this tool.
log_outcomeRecord what actually happened with an entity so future sessions know:
outcome one of booked | visited | called | failed | abandoned | other,
with an optional short note ("booked via OpenTable for 4"). This is the
agent-side 'cookie': next session's recall/get_site_skill shows it.Record what actually happened with an entity so future sessions know: outcome one of booked | visited | called | failed | abandoned | other, with an optional short note ("booked via OpenTable for 4"). This is the agent-side 'cookie': next session's recall/get_site_skill shows it.
| Parameter | Type | Description |
|---|---|---|
| entity_id* | string | — |
| outcome* | string | — |
| note | string | — |
get_site_skillCompact action pack for ONE entity, everything an agent needs to act
there without re-reading full pages: allowlisted facts, closure status,
server-generated typed actions, and YOUR OWN past actions with this
entity.Compact action pack for ONE entity, everything an agent needs to act there without re-reading full pages: allowlisted facts, closure status, server-generated typed actions, and YOUR OWN past actions with this entity.
| Parameter | Type | Description |
|---|---|---|
| entity_id* | string | — |
get_salonReturn the full schema.org page for a salon (profile + meta).
salon_id and entity_id are aliases; pass either.Return the full schema.org page for a salon (profile + meta). salon_id and entity_id are aliases; pass either.
| Parameter | Type | Description |
|---|---|---|
| salon_id | string | — |
| entity_id | string | — |
get_servicesReturn a salon's service menu (schema.org Menu shape: sections of
priced services). Salon counterpart to get_menu.
salon_id and entity_id are aliases; pass either.Return a salon's service menu (schema.org Menu shape: sections of priced services). Salon counterpart to get_menu. salon_id and entity_id are aliases; pass either.
| Parameter | Type | Description |
|---|---|---|
| salon_id | string | — |
| entity_id | string | — |
get_hoursReturn opening hours for a restaurant.
restaurant_id and entity_id are aliases; pass either.Return opening hours for a restaurant. restaurant_id and entity_id are aliases; pass either.
| Parameter | Type | Description |
|---|---|---|
| restaurant_id | string | — |
| entity_id | string | — |
teamwork_previewDecomposes a request into planned specialist roles and returns a preview; it runs no agents.
Decomposes natural language requests into planned subtasks and returns a preview with specialist roles.
STRICT POLICY: SeaWeb does not perform bookings, reservations, or payment
transactions (booking r…Decomposes a request into planned specialist roles and returns a preview; it runs no agents. Decomposes natural language requests into planned subtasks and returns a preview with specialist roles. STRICT POLICY: SeaWeb does not perform bookings, reservations, or payment transactions (booking r…
| Parameter | Type | Description |
|---|---|---|
| task* | string | — |
| max_agents | integer | — |
searchSearch any SeaWeb vertical by natural-language intent.
vertical: one of list_verticals() (e.g. "restaurants"). intent: free
text. location: neighborhood filter; empty = all SF. goal:
discover|book. constraints: optional typed constraint object whose
allowed keys depend on the vertical's config…Search any SeaWeb vertical by natural-language intent. vertical: one of list_verticals() (e.g. "restaurants"). intent: free text. location: neighborhood filter; empty = all SF. goal: discover|book. constraints: optional typed constraint object whose allowed keys depend on the vertical's config…
| Parameter | Type | Description |
|---|---|---|
| vertical* | string | — |
| intent* | string | — |
| location | string | — |
| goal | string | — |
| constraints | — | — |
| lat | — | — |
| lng | — | — |
get_entityFull schema.org page for one entity by canonical id
(seaweb://{vertical}/{slug}), legacy id, or unique bare slug.Full schema.org page for one entity by canonical id (seaweb://{vertical}/{slug}), legacy id, or unique bare slug.
| Parameter | Type | Description |
|---|---|---|
| entity_id* | string | — |
get_detailsDetail slice (menu / service list) for one entity, the
vertical-agnostic counterpart of get_menu/get_services.Detail slice (menu / service list) for one entity, the vertical-agnostic counterpart of get_menu/get_services.
| Parameter | Type | Description |
|---|---|---|
| entity_id* | string | — |
list_verticalsList configured verticals with entity counts and searchability.List configured verticals with entity counts and searchability.
No input schema was published for this tool.
search_destination_sentimentTravel Product A — destination sentiment/trend AGGREGATES (use for
"how do travelers feel about X over time", never for real-time
alerts — that is the standing-query/event side). Returns the full
(aspect x time-bucket) grid for one geo_id: per-cell cluster_count,
quality-weighted mean AND varia…Travel Product A — destination sentiment/trend AGGREGATES (use for "how do travelers feel about X over time", never for real-time alerts — that is the standing-query/event side). Returns the full (aspect x time-bucket) grid for one geo_id: per-cell cluster_count, quality-weighted mean AND varia…
| Parameter | Type | Description |
|---|---|---|
| geo_id* | string | — |
| aspects | — | — |
| window_start | — | — |
| window_end | — | — |
| langs | — | — |
| bucket | string | — |
| top_k | integer | — |
register_standing_queryTravel Product B — register a standing disruption query:
continuous real-time monitoring of geo_ids for disruption_types
(subset of: strike, weather, closure, unrest, health,
infrastructure, safety). expires_at is an optional future ISO-8601
timestamp with timezone. Use when an agent needs ALER…Travel Product B — register a standing disruption query: continuous real-time monitoring of geo_ids for disruption_types (subset of: strike, weather, closure, unrest, health, infrastructure, safety). expires_at is an optional future ISO-8601 timestamp with timezone. Use when an agent needs ALER…
| Parameter | Type | Description |
|---|---|---|
| geo_ids* | array | — |
| disruption_types* | array | — |
| lang_scope | — | — |
| min_severity | integer | — |
| corroboration_policy | — | — |
| expires_at | — | — |
| tenant_id | — | — |
list_standing_queriesTravel Product B — list YOUR registered standing disruption
queries. Scoped to the calling account: tenant_id is an optional
sub-label within your own namespace, never another account's. Pass
the SAME tenant_id you registered with — sub-labels are separate
namespaces, not filters, so omitting i…Travel Product B — list YOUR registered standing disruption queries. Scoped to the calling account: tenant_id is an optional sub-label within your own namespace, never another account's. Pass the SAME tenant_id you registered with — sub-labels are separate namespaces, not filters, so omitting i…
| Parameter | Type | Description |
|---|---|---|
| tenant_id | — | — |
delete_standing_queryprivilegedTravel Product B — delete one of YOUR standing disruption queries
by query_id. Only queries registered by the calling account can be
deleted. Pass the SAME tenant_id you registered the query under —
ownership is proven against that namespace, so a sub-labelled query
is not deletable without its…Travel Product B — delete one of YOUR standing disruption queries by query_id. Only queries registered by the calling account can be deleted. Pass the SAME tenant_id you registered the query under — ownership is proven against that namespace, so a sub-labelled query is not deletable without its…
| Parameter | Type | Description |
|---|---|---|
| query_id* | string | — |
| tenant_id | — | — |
list_disruption_eventsTravel Product B — list emitted disruption events. Every event is
a STRUCTURED record: rule-computed severity 1-5 and confidence 0-1,
sources span-grounded (each carries the literal quoted text span,
URL, tier, and the source's own published_at) and FROZEN at emission
— no free text, no generat…Travel Product B — list emitted disruption events. Every event is a STRUCTURED record: rule-computed severity 1-5 and confidence 0-1, sources span-grounded (each carries the literal quoted text span, URL, tier, and the source's own published_at) and FROZEN at emission — no free text, no generat…
| Parameter | Type | Description |
|---|---|---|
| since | — | — |
| geo_id | — | — |
| disruption_type | — | — |
| limit | integer | — |
get_disruption_eventTravel Product B — fetch one disruption event by event_id, with
its frozen span-grounded source set (the evidence as it stood at
emission; later evidence never mutates an emitted event).Travel Product B — fetch one disruption event by event_id, with its frozen span-grounded source set (the evidence as it stood at emission; later evidence never mutates an emitted event).
| Parameter | Type | Description |
|---|---|---|
| event_id* | string | — |
register_disruption_webhookTravel Product B — register a webhook: emitted disruption events
are POSTed to url as the same structured JSON list_disruption_events
returns, HMAC-SHA256-signed with your secret (X-SeaWeb-Signature:
sha256=<hex>; verify by recomputing over the raw body). The secret
is stored for signing and NE…Travel Product B — register a webhook: emitted disruption events are POSTed to url as the same structured JSON list_disruption_events returns, HMAC-SHA256-signed with your secret (X-SeaWeb-Signature: sha256=<hex>; verify by recomputing over the raw body). The secret is stored for signing and NE…
| Parameter | Type | Description |
|---|---|---|
| url* | string | — |
| secret* | string | — |
| tenant_id | — | — |
list_disruption_webhooksTravel Product B — list YOUR registered webhook subscriptions
(subscription_id, url; secrets are NEVER echoed). Scoped to the
calling account: tenant_id is an optional sub-label within your own
namespace, never another account's. Pass the SAME tenant_id you
registered with — sub-labels are sepa…Travel Product B — list YOUR registered webhook subscriptions (subscription_id, url; secrets are NEVER echoed). Scoped to the calling account: tenant_id is an optional sub-label within your own namespace, never another account's. Pass the SAME tenant_id you registered with — sub-labels are sepa…
| Parameter | Type | Description |
|---|---|---|
| tenant_id | — | — |
delete_disruption_webhookprivilegedTravel Product B — delete ONE webhook subscription you registered.
Pass the SAME tenant_id you registered it under — ownership is proven
against that namespace. Idempotent: an unknown, already-deleted, or
not-yours id returns deleted=false rather than an error. Returns
{subscription_id, deleted…Travel Product B — delete ONE webhook subscription you registered. Pass the SAME tenant_id you registered it under — ownership is proven against that namespace. Idempotent: an unknown, already-deleted, or not-yours id returns deleted=false rather than an error. Returns {subscription_id, deleted…
| Parameter | Type | Description |
|---|---|---|
| subscription_id* | string | — |
| tenant_id | — | — |
resolve_geoTravel gazetteer lookup: free-text place name -> candidate
geo_ids for the other travel-vertical tools (43k-entity gazetteer:
admin divisions, cities, airports/IATA, stations). Exact
(diacritic-folded) alias matches first, then trigram-fuzzy with
similarity scores; each candidate carries its co…Travel gazetteer lookup: free-text place name -> candidate geo_ids for the other travel-vertical tools (43k-entity gazetteer: admin divisions, cities, airports/IATA, stations). Exact (diacritic-folded) alias matches first, then trigram-fuzzy with similarity scores; each candidate carries its co…
| Parameter | Type | Description |
|---|---|---|
| text* | string | — |
| limit | integer | — |
travel_healthDependency health of the travel vertical service: reachability of
its elasticsearch/postgres/redis plus whether the embedding model is
loaded (it loads lazily on the first sentiment search).Dependency health of the travel vertical service: reachability of its elasticsearch/postgres/redis plus whether the embedding model is loaded (it loads lazily on the first sentiment search).
No input schema was published for this tool.
43 of 43 tools published a description.
Tool names and descriptions are written by the publisher and shown verbatim as inert text. They are the strings an MCP client passes to a model, so Forge scans them for prompt-injection patterns — any finding appears with the security scan above. “Privileged” is a keyword match on the tool name, not an audit of what the tool does: a benign-sounding name can still do anything.
Read-only web search for AI agents; does not book, reserve or take payment. Stores your preferences.
+ 3 more observed on this entry.
Linked names open Forge’s index of every entry observed exposing that tool. Browse all indexed tools.
This entry publishes no npm package, so Forge has no dependency tree for it. That is a gap in coverage — not a statement that it has no dependencies.