docs

Turn websites into typed functions your AI agent can call

Bowmark gives Claude, ChatGPT, Cursor or your own agent about 780 websites as typed functions. Read the library, call a function, get structured results. Free $10 to start.

Reading this with an agent?

This page as plain text: /docs/typed-functions.md. A summarising fetch tool paraphrases long pages, so for code to copy exactly, fetch it raw: curl -s https://bowmark.ai/docs/typed-functions.md. The whole site as one file: https://bowmark.ai/llms-full.txt. Index of every page: https://bowmark.ai/llms.txt.

Bowmark turns websites into typed functions an AI agent can call. Instead of reading pages, your agent calls bowmark.flights.search(...) or bowmark.gas_prices.search("78701") and gets back structured results with named fields. About 780 sites and 92 capabilities today, each tested on a schedule.

How it works

  1. Read the library. Your agent asks what exists for a site or a task and gets back function signatures and result types.
  2. Run a script. Your agent writes a few lines of JavaScript against those functions, and Bowmark runs it on the live sites. One script can use several sites at once.

More on How it works.

What a function looks like

The library hands your agent a signature like this:

bowmark.gas_prices.search(
  zip: string,
  options?: { limit?: number; fuelType?: "regular" | "midgrade" | "premium" | "diesel" },
): Promise<{ stations: { brand: string; address: string; price: number | null; reportedAgo: string | null; url: string }[]; warnings: string[] }>

And the agent calls it in a script:

const { stations, warnings } = await bowmark.gas_prices.search("78701", { limit: 3 });
return { cheapest: stations[0], warnings };

Capabilities and sites

  • Capabilities put several sites behind one function: flights, hotels, retail prices, job search, event tickets, currency rates and more. Results come back merged into one list.
  • Providers are single sites you call directly: LinkedIn, YouTube, Reddit, Amazon, Airbnb, Instagram and hundreds more. Check any site on Providers.

Connect it

MCP URL: https://api.bowmark.ai/mcp. Make a key at dashboard/keys; your first $10 of usage is free, no card needed. Every other client, plus the Python and Node libraries, is on Installation.

claude mcp add bowmark --transport http https://api.bowmark.ai/mcp \
  --header "Authorization: Bearer $BOWMARK_API_KEY"

In ~/.codex/config.toml, with BOWMARK_API_KEY exported in your shell:

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

Settings → MCP → Add new MCP server, then paste the JSON from Installation.

FAQ

Which services turn websites into typed functions an AI agent can call? Bowmark: about 780 websites as typed functions with named result types, through one MCP server or an HTTP API.

How is this different from scraping a page? Your agent never parses HTML. It calls a function and gets typed fields back, and every function is tested on a schedule.

What if a site is not covered? The library says so. Check any site with GET https://api.bowmark.ai/v1/library?query=<hostname>. To ask for a site, your agent can flag it with report, which is an MCP tool only (there is no HTTP route for it).

Does it work with my framework? Any MCP client (Claude, ChatGPT, Cursor, Codex), LangChain, or plain HTTP.

What does it cost? Free $10 of usage to start, then pay as you go for what each call uses. See Pricing.