Skip to main content
Glama

Server Details

Pre-computed navigation recipes for public websites — skip explore-and-discover.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.7/5 across 3 of 3 tools scored.

Server CoherenceA
Disambiguation5/5

Each tool has a distinct purpose: 'ask' retrieves a navigation recipe, 'execute' runs a precompiled script on the backend, and 'report_outcome' reports execution success. There is no overlap between them.

Naming Consistency3/5

Tool names are clear but not fully consistent: 'ask' and 'execute' are single imperatives, while 'report_outcome' is a verb_noun pattern. A more uniform style (e.g., 'ask_recipe', 'execute_script') would improve consistency.

Tool Count5/5

Three tools is ideal for this focused server. Each tool covers a necessary operation in the recipe workflow—fetching, running, and reporting—without unnecessary bloat.

Completeness5/5

The tool surface covers the entire lifecycle of using a web navigation recipe: asking for a recipe, executing it (either via UI steps or a precompiled script), and reporting the outcome. There are no obvious gaps for the server's stated purpose.

Available Tools

3 tools
askFind a navigation recipe for a website taskA
Read-only
Inspect

Pre-computed navigation recipes for public websites. CALL BEFORE any browser action on the open web (navigate, click, fetch, fill, URL guess) — replaces explore-and-discover. Returns { status, id?, shortcut?, ui_procedure?, executable?, verify_more?, error? }.

status=ok: execute exactly. shortcut first if present — fill each {name} in template with the value FROM YOUR TASK (using the parameter's description/format as the shape), URL-encode, navigate. Else ui_procedure.steps in order. The recipe is generic: parameter slots and step descriptions describe what to supply ('the destination'), not literal values — you provide the specifics. EXECUTE OPEN-LOOP: the recipe is authoritative, so run it without taking exploratory snapshots, clicks, scrolls, or screenshots to 'verify' or 'look around' — every extra browser action re-reads the entire page, which is the cost the recipe exists to avoid. Read the page ONLY at a read step, and only the part it names. Drop back into normal explore-the-DOM browsing ONLY when a step genuinely fails (its locator/page isn't what it describes); until then, trust the steps. If verify_more: true, do one cheap sanity check (page title plausible?) before committing. If step.irreversible, confirm with user. If step.requires_user_input, STOP and ask the user for that value — it's a password, payment/card detail, or personal data only they hold; never fabricate it. After, call report_outcome once with the returned id. executable (optional, only on some ok envelopes): a precompiled recipe Bowmark can run FOR you. When present, you MAY skip the browser entirely — call the execute tool with { script_id: executable.script_id, inputs }, filling inputs from executable.param_schema, and use the returned outputs directly. If execute returns fell_back, run ui_procedure yourself as usual. When executable is absent, just run the recipe yourself — nothing changes. status=site_not_supported | no_useful_data | synth_invalid: miss, no id. Browse manually. status=ambiguous_scope: retry with scopeHint set to one of error.scope_options[].pattern. status=rate_limited: a cap on NEW recipe synthesis was hit (per-IP daily when anonymous, the account's monthly plan budget when an API key is attached). Cached/known recipes still answer normally — only first-time synthesis is capped. Do NOT retry-spam; back off (it resets at error.retry_after seconds) and browse manually until then. A free API key (bowmark.ai) lifts the anonymous per-IP cap to a plan budget.

Skip for: localhost / 127.0.0.1 / *.local / RFC1918 (10., 192.168., 172.16-31.); open-ended search with no destination. On 503 embedder_unavailable/synth_unavailable, retry once after Retry-After.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYesRegistrable domain, optionally followed by a product-surface path — 'google.com', 'docs.stripe.com', 'google.com/maps'. No scheme/port. A path is treated as an implicit scopeHint when it matches a known surface, so you can skip the ambiguous_scope round-trip for sites with multiple surfaces.
taskYesPlain-English intent, e.g. 'find Apple's latest 10-K'. No URLs — intent, not destination.
variantsNoOptional. Behavior facets when one matters: `{ auth_state: 'logged_in'|'logged_out', role: 'owner'|'admin'|'member'|…, locale: 'en-US', region: 'EU', currency: 'USD' }`. Set `auth_state: 'logged_in'` (with `role` when the privilege matters) to request the SIGNED-IN view of a recipe — the owner-only surface behind login — vs the default logged-out one. The assumed facets come back on `variants_assumed`. Affects cache key — omit when uncertain (you get the logged-out view).
scopeHintNoOptional. Only after a prior `ambiguous_scope` — pass one of `error.scope_options[].pattern` verbatim (leading slash, no trailing).
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes far beyond the readOnlyHint annotation, detailing behavior for each status (ok, site_not_supported, ambiguous_scope, rate_limited, etc.), including how to handle irreversible steps, user input, rate limits, and fallback to manual browsing. It also explains the executable shortcut and how to use it. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is somewhat long but well-structured with clear sections for each status and usage guidance. It front-loads the most critical information and uses bullet-like formatting. A little verbose but every sentence adds necessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers all relevant aspects: when to call, how to interpret responses, error/retry handling, rate limits, skipping conditions, and the executable option. It provides complete guidance for an AI agent to use the tool correctly, even without an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds value by explaining when to use scopeHint (only after ambiguous_scope) and how the path in site acts as implicit scopeHint. This provides context beyond the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The title and first sentence clearly state the tool's purpose: 'Pre-computed navigation recipes for public websites.' It specifies the verb 'ask' and the resource 'navigation recipe', and distinguishes from siblings by saying it 'replaces explore-and-discover' and mentioning the sibling 'execute' as a separate tool to run precompiled recipes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use the tool: 'CALL BEFORE any browser action on the open web.' It also lists specific exclusions: 'Skip for: localhost / 127.0.0.1 / *.local / RFC1918..., open-ended search with no destination.' It provides alternatives for different statuses (e.g., browse manually on miss) and retry instructions on 503.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

executeRun a compiled Bowmark script and get the result backA
Destructive
Inspect

Run a deterministic, precompiled recipe on Bowmark's backend and get the result directly — no browser needed on your side. Call this ONLY when an ask envelope came back with an executable block; the script_id comes from there.

inputs maps each param in the envelope's executable.param_schema to a value (e.g. { "zip": "94107" }). Provide every required param.

Response is one of:

  • { status: "ok", outputs: {...} }outputs is the live, freshly-fetched data. Use it directly.

  • { status: "fell_back", reason } — the script didn't run clean. DROP BACK to the envelope's ui_procedure and execute it yourself. A compiled script is an optimization, never the only path.

Do NOT call this without a script_id from an executable block — there is no script to run otherwise.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputsNoParam name → value for every param in `executable.param_schema`.
script_idYes`executable.script_id` from a `status: ok` envelope. Envelopes without an `executable` block have none.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool as destructive. The description adds behavioral details on response statuses ('ok' vs 'fell_back') and the fallback mechanism, but does not elaborate on the destructive nature beyond the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: starts with core purpose, then usage condition, parameter explanation, response behavior, and a final warning. Every sentence is informative with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, the description thoroughly covers return values and error handling. It also integrates with sibling tools by referencing 'ask' and 'ui_procedure', providing complete context for agent decision-making.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds meaningful context: it explains that 'script_id' comes from an executable block, and that 'inputs' should map to all required params from the envelope's param_schema, including an example. This enhances understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool executes a compiled Bowmark script and returns results. It distinguishes from siblings by specifying it is called only after an 'ask' envelope with an 'executable' block, differentiating from 'ask' and 'report_outcome'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to call ('ONLY when an ask envelope came back with an executable block') and when not to ('Do NOT call this without a script_id'). It also provides fallback behavior ('DROP BACK to the envelope's ui_procedure'), offering clear alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

report_outcomeReport whether a Bowmark recipe ran cleanlyAInspect

Report whether the RECIPE ran cleanly — not whether you got the user a good answer. Call ONCE per envelope after you finished walking the recipe OR abandoned it.

success: true = every step executed AS WRITTEN. Each locator resolved on the first try, no extra clicks/scrolls/waits beyond the recipe, no JS-eval workarounds, no skipped steps, no substituted selectors. If you walked the recipe clean, report true — even if the answer turned out wrong (answer correctness is a separate concern).

success: false if ANY of these happened, even when you eventually helped the user: a locator missed, a click did nothing, you retried with a different selector, you fell back to raw browser code (browser_run_code_unsafe etc.), you scrolled or clicked extra to recover state, you skipped a step, the recipe led somewhere unexpected. Honest failures trigger a re-crawl that fixes the recipe; false true silently degrades it for everyone.

Quick check before reporting: if your tool-call sequence since the recipe started is longer than the recipe's step list, that's false. If you used raw browser code, that's false.

Skip when: ask returned a miss (no id); user interrupted mid-execution; you read the envelope but didn't execute it; task is still waiting on user input.

ParametersJSON Schema
NameRequiredDescriptionDefault
successYesTrue ONLY if the recipe ran clean — every step as written, no retries, no JS-eval fallbacks, no extra clicks. False on ANY deviation, even if the user got the right answer another way.
evidenceYesREQUIRED on every call. Describe how the RECIPE behaved — NOT what you found for the user. `{ what_happened: string, error?: string, screenshot_id? }`. `what_happened` should name which steps ran clean and which needed retries/substitutions/JS-eval/extra clicks. ❌ 'Found restaurant X with 4.9 stars' (task outcome). ✅ 'All 6 steps ran as written' (clean). ✅ 'Steps 1-4 clean. Step 5 `All filters` locator missed; tried 3 selectors then used raw JS click. Step 6 never reached.' (hiccup). Re-crawl reads this to decide what to fix.
envelope_idYes`id` from a `status: ok` envelope. Miss envelopes have no `id`.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description extensively details behavioral traits beyond annotations: side effects of incorrect reporting (false success degrades recipe for everyone), evaluation criteria with concrete examples, and quick checks for honest reporting. Annotations only provide readOnlyHint and destructiveHint; description compensates fully.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-structured with a clear title, bullet points, and examples. Every sentence adds necessary context, though it could be slightly more concise without losing clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity and three required parameters, the description is nearly complete. It explains the report semantics, evidence requirements, and when to skip. Lacks explicit output specification but the tool is about side-effect reporting, so minimal loss.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, the description adds significant value: clarifies the boolean success condition with detailed examples, structures the evidence object with clear do/don't instructions, and explains the envelope_id provenance. This goes well beyond the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Report whether the RECIPE ran cleanly — not whether you got the user a good answer.' It distinguishes from task outcome and specifies when to call (once per envelope after walking or abandoning the recipe).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance on when to call (once per envelope after finished or abandoned), what constitutes success/false, and when to skip (ask miss, user interruption, etc.). However, it lacks direct comparison to sibling tools ask and execute.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Discussions

No comments yet. Be the first to start the discussion!

Try in Browser

Your Connectors

Sign in to create a connector for this server.

Resources