Skip to main content

Confirm

Are you sure?

Integrations

URLpipe in Cursor

The docs page your agent needs, rendered and turned into Markdown — without leaving the editor.

By · Last updated: September 2026

TL;DR

To connect Cursor to URLpipe, add a server with "url": "https://urlpipe.dev/mcp" and an Authorization header to ~/.cursor/mcp.json for every project, or .cursor/mcp.json for one. Cursor expands ${env:NAME} in headers, so the token can stay in your environment. The agent then reads any page as Markdown.

Free plan, no credit card. 1,000 credits a month.

Why

What Cursor's agent gets

Documentation sites are increasingly single-page apps, and an agent that fetches their HTML gets a shell. With URLpipe, Cursor's agent gets fetch_markdown for the rendered page as Markdown, fetch_html when it needs the DOM itself — to write a selector or check what a component rendered — and capture_screenshot to look at it.

Setup

1. Create an organization token

MCP uses its own credential, not a project API key: an organization token, created under Organization → MCP access in the dashboard. An agent works across projects, and a project key names only one. The token is shown once — copy it when you create it.

Choose Fetch pages and read results for an agent that works normally, or Read past results only for one that must not spend credits (more on that below). The account's email address must be confirmed before the token works; until then the server answers 403 with email_unverified.

Setup

2. Add the server to mcp.json

Edit ~/.cursor/mcp.json to make URLpipe available in every project, or .cursor/mcp.json in a repository for that project only. A server with a url is a remote streamable-HTTP one; no command is needed.

~/.cursor/mcp.json
{
  "mcpServers": {
    "urlpipe": {
      "url": "https://urlpipe.dev/mcp",
      "headers": {
        "Authorization": "Bearer ${env:URLPIPE_TOKEN}"
      }
    }
  }
}

${env:URLPIPE_TOKEN} is read from the environment Cursor was started in, so export the variable in your shell profile and restart Cursor. You can put the token itself in place of the variable in the global file, which you don't commit; never in a project's .cursor/mcp.json.

Check it connected

Open Cursor's settings and find the MCP servers list (under Customize in recent versions). urlpipe should be listed, enabled, with its fourteen tools; a red status or a tool count of zero means the header or the variable is wrong. Toggle off tools you don't want the agent to call.

Try it

3. A first prompt to try

Prompt for Cursor
Use urlpipe fetch_markdown with sync: true to read https://docs.stripe.com/api/checkout/sessions/create
and write a TypeScript function in src/billing/checkout.ts that creates a session with the
parameters that page documents as required.

Reading a docs page this way costs 1 credit, and the same page read again inside seven days is a free cache hit — so an agent that re-reads a reference while it works doesn't run up a bill.

The agent starts with list_projects, because every fetching tool takes a project_id. Async is the default, as over HTTP: without sync: true a tool returns a token and the agent collects the result with get_result. Most agents work this out from the tool descriptions; saying "use sync: true" in the prompt saves a round trip.

Tokens

Keep the token safe and the spend bounded

  • A read-only token cannot spend. Created with Read past results only, it can list projects, read usage and retrieve results already paid for, and nothing else. Give it to an agent that should only look things up.
  • Narrow it. A token can be limited to one project, or given an expiry date. Deleting it revokes it at once.
  • Keep it out of version control. Put it in an environment variable or the client's secret prompt rather than in a config file you commit.
  • Same credits as the API. fetch_markdown costs 1 credit, summarize_page 17; a cached result is free. get_usage shows what is left. See pricing.

Troubleshooting

If it doesn't connect

  • 401 — "A bearer token is required" or "not valid". The header must be exactly Authorization: Bearer YOUR_TOKEN: the word Bearer, one space, the token. Check that an environment variable actually expanded.
  • 403 email_unverified. Confirm the account's email address; the token then works as it is.
  • The client asks you to sign in with OAuth. URLpipe has no OAuth flow — the header is the whole of the authentication. Set it, and the client has nothing to sign in to.
  • Tool calls fail with rate_limited. The server allows 300 calls per 5 minutes per token. concurrency_limit means your plan's parallel requests are all busy.

The server speaks streamable HTTP and answers each message with a single JSON response — it opens no SSE stream and keeps no session. Every argument and tool is in the MCP docs.

FAQ

Frequently asked questions

Where is Cursor's MCP config file?
~/.cursor/mcp.json for servers available in every project, and .cursor/mcp.json inside a project for that project only.
How do I keep the token out of mcp.json?
Write the header as "Bearer ${env:URLPIPE_TOKEN}" and export URLPIPE_TOKEN in the environment Cursor starts from.
Does Cursor need a command or npx for URLpipe?
No. URLpipe is a remote server: a url and a headers entry are the whole configuration.
Which tool should the agent use to read docs?
fetch_markdown. It costs 1 credit and gives the model the most compact input; fetch_html is for when it needs the DOM itself.

Connect it in five minutes.

Free plan, no card. Confirm your email and your API key is live — you'll be making real requests in minutes.