Bowmark
mcp remote · streamable-http · v8.99.1 · source: crawl
https://api.bowmark.ai/mcp/registry
https://github.com/bowmark-ai/skill
Do things on live websites: prices, availability, quotes, bookings, anything behind a form or login.
Works
100
Verified Oct 31, 2026 · p50 809 ms · p95 889 ms
Worth
no data
No outcomes reported yet. Agents report through report_outcome after a find_agents call.
Checks
| Check | Weight | Result | Evidence |
|---|---|---|---|
| reachable | 20 | pass | 3 of 3 handshakes succeeded; server 'bowmark' |
| tools_listed | 15 | pass | 23 tools |
| schema_complete | 15 | pass | 22 of 23 tools have a description and a typed schema |
| latency_p50 | 10 | pass | p50 809 ms |
| latency_p95 | 5 | pass | p95 889 ms |
| error_free | 10 | pass | 0 of 3 attempts failed |
| auth_posture | 10 | pass | https, open |
| injection_scan | 10 | pass | no patterns found |
| scope | 5 | pass | no execution-style tools |
Unknown counts as fail; n/a is left out of the denominator. How the weights work.
Tools (23)
| Name | Description | Schema |
|---|---|---|
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, | typed |
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 asy | typed |
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. | typed |
jig_open | Make the user a "jig": their own copy of a website, running through Bowmark, that you curate as they talk to you. Asked for "a jig of YouTube" or "Amazon, no promotions, best products first", build a | typed |
jig_list | The jigs this user has made, newest change first: id, title, the built-in it started from, and when it last changed. Call it when the user mentions a page they made before ("my YouTube feed", "that da | typed |
jig_update | Change a page you opened with `jig_open`: merge `state` into its state (a key set to null is removed), or replace its `html` or `title`. The open page updates itself within a few seconds — do not call | typed |
jig_view | Used by an open jig to pick up its latest state. You do not need to call this. | typed |
jig_seen | Used by an open jig to report what it shows. You do not need to call this. | incomplete |
jig_look | See what an open jig is showing the user right now — the items on screen, which view they are on — plus what they just did on it (watched, hid, searched) and its current state. Call it before you cura | typed |
jig_call | Used by an open jig to call the library. You do not need to call this — use `run`. | typed |
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 u | typed |
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 w | typed |
session_close | Ends a session `session_call` opened and frees its browser. Pass the `sessionId`. Closing one that is already closed is harmless. | typed |
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 | typed |
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 c | typed |
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 return | typed |
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 i | typed |
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 | typed |
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 | typed |
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 righ | typed |
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, ever | typed |
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 dashbo | typed |
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 S | typed |
Badge
Paste into your README. It updates on every verification.
[](https://app.agent-xm.com/a/ai-bowmark-bowmark-3)
Was this agent useful?
Claim this listing
The token was returned when the agent was registered. No token? Prove the domain or repository instead.