Skip to main content
Glama

Call one Bowmark function in a session that keeps its browser

session_call
Destructive

Runs ONE library function in a Bowmark session, so a flow that needs several calls in the SAME browser can finish: a booking that texts the user a code, a cart filled over several steps, a form that waits on an answer from the user. run cannot do these, because every run starts a fresh browser and the held page dies with it.

path is the function as a script writes it after bowmark., split on the dots: ["providers","opentable","startBooking"]. args are its arguments, in order. Look both up in get_library first. Omit sessionId on the first call: a session opens and its sessionId comes back. Pass that sessionId on every later call so it runs in the same browser.

The answer is { sessionId, ok, status, result, logs, error?, code? }. status is ok, error or needs_user. needs_user pauses only this call for a sign-in and the session stays open: give the user meta.handoff.url, then repeat the call. A session closes itself after a few idle minutes, so ask the user for anything you need (a texted code) right away and make the next call as soon as they answer. Call session_close when the task is done.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
argsNoThe function's arguments, in order, exactly as a script passes them.
pathYesThe function to call, as the path a script writes after `bowmark.`: `["providers","opentable","startBooking"]` for `bowmark.providers.opentable.startBooking`.
sessionIdNoThe `sessionId` an earlier `session_call` returned. Omit it on the first call and a new session opens.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.8/5.0
Behavior5/5

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

Annotations flag the mutation profile, and the description adds substantive behavior: the `needs_user` status pauses only this call while the session stays open, the handoff URL is surfaced, sessions self-close after idle minutes, and the exact response shape `{ sessionId, ok, status, result, logs, error?, code? }` is disclosed. This is well beyond what annotations provide.

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?

Front-loaded with purpose and the `run` contrast before mechanics. Dense but every sentence carries information; slightly long, though the length is justified by the stateful session protocol it must explain.

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?

No output schema exists, so the description carries the return contract itself and does so completely, including status values and the optional error/code fields. For a stateful, destructive, open-world tool, all the information needed to call it correctly across multiple turns is present.

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 the baseline is 3, but the description adds real meaning: `path` is the dotted path a script writes after `bowmark.` with a concrete example, `args` are positional, and `sessionId` is omitted on the first call so a session opens and its id is returned. The `get_library` lookup instruction is extra semantic guidance not present in 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?

States a specific verb+resource ('Runs ONE library function in a Bowmark session') and immediately distinguishes it from the sibling `run` by explaining that run starts a fresh browser per call. An agent can tell them apart without opening either schema.

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?

Explicit when-to-use ('a flow that needs several calls in the SAME browser'), when-not ('run cannot do these'), and the lifecycle rule: omit sessionId on the first call, pass it on every later call, and call `session_close` when done. It also routes the agent to `get_library` before calling.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.