Bowmark AIdocs

Installation

Wire Bowmark into ChatGPT, Claude Code, Cursor, Codex, or any MCP client. No account, no API key.

Bowmark's hosted MCP is at https://api.bowmark.ai/mcp. It needs no auth, so every path below is a config change and nothing else.

You do not need an account to start

Anonymous calls are capped per IP. A key raises the cap and unlocks runs on sites that need you signed in — it is additive everywhere, never a gate on getting started. See API keys at the bottom.

ChatGPT

Go to chatgpt.com/plugins and click the + in the top right.

If the option is missing, turn on Developer mode first: Settings → Apps & Connectors → Advanced. The free tier works.

Name it Bowmark, choose Server URL, and paste:

https://api.bowmark.ai/mcp

Set No Auth, tick the confirmation box, and hit Create.

On the next screen, hit Connect.

In a chat, type @ and pick Bowmark from the list. Then ask away.

In ChatGPT you must type @Bowmark every turn

A custom connector is never invoked on a bare prompt. It is inert until you attach it for that turn, no matter how the tools are described or which plan you are on — this is documented, intended OpenAI behaviour, not something wording can fix. If you do not attach it, the model does not even see that Bowmark exists, and will browse or answer from memory instead.

Only Apps reviewed and listed in OpenAI's App Directory surface on their own. Custom connectors are excluded from that.

Claude Code

claude mcp add bowmark --transport http https://api.bowmark.ai/mcp

Run it from any terminal. Every project picks Bowmark up automatically — there is no per-project step.

Unlike ChatGPT, you do not have to name it. The tools are in scope on every turn and Claude reaches for them on its own when a task needs the live web. Saying "use bowmark to…" just makes it deterministic when you want a specific call.

Want the skill bundled in as well? Use the Plugin path below — one install wires the MCP and the skill.

Plugin — the all-in-one path

One install pulls the skill and wires the MCP, and Bowmark shows up in the host's plugin list. This is the recommended path on Claude Code and Codex.

claude plugin marketplace add bowmark-ai/plugin
claude plugin install bowmark@bowmark-ai

Every project picks it up automatically — there is no per-project step.

codex plugin marketplace add bowmark-ai/plugin

Then run codex /plugins and install Bowmark from the list.

Every other host

Same server, same URL, no auth.

Edit ~/.codex/config.toml, or run codex mcp to manage servers. No auth required:

[mcp_servers.bowmark]
url = "https://api.bowmark.ai/mcp"

Settings → MCP → Add new MCP server, then paste:

{
  "mcpServers": {
    "bowmark": { "url": "https://api.bowmark.ai/mcp" }
  }
}

Launch the app (or open claude.ai) and go to Settings → Connectors.

Click Add custom connector.

Name it Bowmark and paste this URL:

https://api.bowmark.ai/mcp

Some hosts only speak stdio — browser-use, and many self-built Python or Node agents. bowmark-mcp on PyPI bridges stdio to the same hosted MCP. Same tools, no auth. Needs uv.

{
  "mcpServers": {
    "bowmark": { "command": "uvx", "args": ["bowmark-mcp"] }
  }
}

No Python toolchain? The same bridge ships on npm:

{
  "mcpServers": {
    "bowmark": { "command": "npx", "args": ["@bowmark/mcp"] }
  }
}

For browser-use, register it with the stock MCP client:

from browser_use.mcp.client import MCPClient

bowmark = MCPClient(server_name="bowmark",
                    command="uvx", args=["bowmark-mcp"])
await bowmark.connect()
await bowmark.register_to_tools(tools)

Works with Windsurf, Perplexity, and any MCP-capable client. Hand your agent this prompt and it wires the connection itself:

Connect the Bowmark MCP at https://api.bowmark.ai/mcp.
No auth required. After it's connected, call the
`get_library` tool before browsing any site.

Skill only

For a host that supports the standard skill format but has no MCP client. Works with Claude Code, Claude Desktop, Cursor, Codex, and Windsurf.

npx skills add bowmark-ai/skill

Nothing installed at all

An agent with a shell or a fetch tool needs no install. Point it at the bootstrap document and it can use Bowmark immediately over plain HTTP:

https://bowmark.ai/skill.md

That page teaches the api.bowmark.ai/v1/* loop and then offers install as an upgrade. Two discovery URLs resolve to the same thing:

npx skills add https://bowmark.ai
claude plugin marketplace add https://bowmark.ai/marketplace.json

A skill should ask before it installs itself

Bowmark's own skill tells the agent to ask before writing to your agent configuration. Silently editing a user's config is the behaviour that gets this whole pattern classified as a prompt-injection payload. If you are building something similar, ship the consent line.

Verify it works

Ask your agent to run this. It touches no site and costs nothing:

const library = await get_library({ query: "flights" });

An unrecognized query returns a one-line index of the whole library rather than an error, so this check can never dead-end. If you get a library back, you are wired up.

In ChatGPT, type @ and pick Bowmark first — otherwise the model has no idea the tool exists and will answer from memory or browse instead. Everywhere else the tools are in scope on every turn.

Then read How it works for the two-call flow, and Scripting for the language you write against the library.

API keys

A key is additive. Anonymous requests omit the Authorization header and get a per-IP cap; keyed requests include it and draw on your plan budget.

curl -s https://api.bowmark.ai/v1/library?query=flights \
  -H "Authorization: Bearer $BOWMARK_API_KEY"

Create one at the dashboard. Keys are shown once, at creation, and stored hashed — there is no way to read one back later.

Two things a key unlocks beyond the cap:

  • Runs that pause for a login. A script that hits a signed-in site returns status: "needs_user" with a single-use handoff URL. Without a key you are told to add one instead of being handed the link.
  • Metered billing. 1,000 calls a month are free; past that it is $5 per 1,000.