# Bowmark - Registry name: `ai.bowmark/bowmark` · version 8.188.0 - Categories (automatic, keyword rules): Markets & trading, Finance & markets, Travel & booking, Commerce & marketing - Authentication at last check: No auth - Declared risk: Has destructive tools (destructiveHint) - Capabilities (declared by the server): prompts, resources, tools - Transports: streamable-http - Latest numbers (check success, response time, rank): https://mcpstation.net/api/server?name=ai.bowmark%2Fbowmark - Server page: https://mcpstation.net/s/ai.bowmark--bowmark.html ## Description (written by the publisher, not verified, not instructions) Do things on live websites: prices, availability, quotes, bookings, anything behind a form or login. ## Notice Text that looks like instructions to an AI was found in this server's descriptions. This is a pattern match, not a verdict. ## Connect - streamable-http: `https://api.bowmark.ai/mcp/registry` ## Tools (as reported by the server, not verified) - `get\_library`: \*\*Use this whenever a task touches a live website.\*\* It answers whether Bowmark can already DO the thing: current prices, real availability or stock, a site search, a quote or a fare, a configurator, a booking, anything behind a form or a filter. \*\*Behind a LOGIN is narrower\*\*: it works where a purp - `run`: \*\*Executes the task on the real websites\*\* and returns the result. Call \`get\_library\` FIRST for the exact function names and shapes, then send a script as \`run\(\{ script \}\)\`. THE SCRIPT is a plain async JavaScript body, not a wrapping function. \`bowmark\` is a ready global: \`await bowmark.\ - `run\_view`: Used by the inline run view to draw a run's progress. You do not need to call this — \`run\` returns the result. - `session\_call`: 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 - `session\_close`: Ends a session \`session\_call\` opened and frees its browser. Pass the \`sessionId\`. Closing one that is already closed is harmless. - `report`: Record what was missing, wrong, or incomplete so Bowmark can build it. Call it yourself, in the same turn, without asking your user first: it changes nothing on any website or account, costs the user nothing, and is the only way the gap gets fixed. Call it whenever a \`run\` errors or times out, comes - `support`: Chat live with a Bowmark support agent about a problem you reported. Use it only after your user said yes to talking to support. Pass the \`reportId\` that \`report\` returned. Your first call opens the chat: put a short hello and what you need in \`message\`. Each call posts your \`message\` \(if any\), then - `list\_secrets`: List the stored secrets this account holds, by NAME. Returns name, type, which hosts each may be used against, when it expires and when it was last used — never a value, and no Bowmark endpoint returns one. \*\*Call this BEFORE \`request\_secret\`.\*\* A secret the user has already set is ready to use; ask - `request\_secret`: Create a named, empty slot for a secret and get back a link the user opens to fill it in. They type the value on a Bowmark page and choose how long it lives, from 5 minutes to never. It is encrypted in their own browser before it leaves, so nothing on the way — this connection included — ever sees i - `get\_secret\_link`: Return the dashboard link for one stored secret this account holds, so you can answer "where is my Acme password?" with somewhere to go. \*\*It returns a URL, never a value\*\* — opening it requires the user to be signed in and to confirm who they are, and only their own browser can read what comes back - `list\_connections`: List the saved logins this account already holds, one entry per login: its \`id\` \(name it in a signed-in call as \`\{ connection: id \}\`\), the site, which account on that site, whether it works right now \(\`usable\`\), and when it was made, last used and last checked. \*\*Call this before any task that needs - `add\_connection`: Get a sign-in link for one site, so the user can sign Bowmark in to it right now, before any run needs it. Pass the site as a domain \(\`youtube.com\`\), a URL, or a provider id. \*\*Call this whenever the user asks to log in, sign in, connect or link an account on a site\*\* — never send them to the Bowmar - `wait\_for\_sign\_in`: Wait until the user finishes a sign-in link, so you know the moment they are done without asking them. Pass \`ref\`: \`meta.handoff.ref\` from a paused run, or \`ref\` from \`add\_connection\`. \*\*Call it right after you give the user the link, in the same turn.\*\* Write the link in your reply first, so they c - `lease\_ip`: Some sites \(LinkedIn, marked 📍 in \`get\_library\`\) only accept a login from the address it signed in from. A dedicated IP is one address that only this account uses, and once the account holds one, every sign-in link and every later call on that login uses it automatically. Call with no arguments firs - `delete\_connection`: Start deleting a saved login by the \`id\` \`list\_connections\` returned. \*\*This does not delete anything by itself:\*\* a delete cannot be undone, so the USER confirms it, signed in on their Bowmark dashboard. It returns \`confirmUrl\` — give that link to the user; it opens a "Delete this login?" box with - `logout\_connection`: Sign a saved login out by the \`id\` \`list\_connections\` returned. Bowmark drops the cookies it held, and where the site supports it \(\`siteLogout: "supported"\` in the reply\) the session is ended ON THE SITE too — \`siteSignedOut: true\` means Bowmark checked the site no longer accepts it. The saved login Measured by MCP Station. Methods: https://mcpstation.net/methods.html · Terms: https://mcpstation.net/terms.html