Skip to main content
Pulse MCP lets your agent parse documents, extract fields, split by topic and read tables and charts. Tools use API V2 names and configs from the pulse-ai SDK.

Choose how to connect

Both send documents to Pulse’s API for processing and use your organization’s credits.

Hosted MCP

Choose your client below. The MCP server runs on Pulse, with no local installation. Existing Pulse OAuth connections use browser sign-in. The API-key examples are for manual connections when a Pulse OAuth connection is unavailable.
  1. Open Claude’s connector directory and select Pulse → Connect.
  2. Sign in to Pulse and approve access.
  3. Give Claude a public or presigned document URL.
Claude handles authentication automatically.
Keep API keys out of prompts and committed config. For OAuth client credentials or other clients, see custom hosted connections.

Local MCP

Your client launches the MCP server on your computer and can give it local file paths. Local Parse uploads files directly to Pulse, up to 100 MB.
1

Install uv

On macOS or Linux:
See the uv installation guide for Windows and other installation methods.
2

Authenticate

Run:
This opens your browser to sign in to Pulse and approve access. It creates a device API key, saves it to ~/.pulse/mcp.toml with owner-only permissions (0600), and exits.
3

Add to your MCP client

Choose your client below. These configs use your saved login automatically; leave --login out of the launch command.
Run:
Run /mcp to check that Pulse is connected.
The client must run on your computer and support launching a stdio server. PULSE_API_KEY overrides saved login. See credentials and troubleshooting.

Run a workflow

Give your agent a document and describe the output you want. For example:
“Use Pulse to read this bank statement: https://platform.runpulse.com/api/examples/637e5678-30b1-45fa-acc4-877f2d636419/pdf. Return the account holder, statement period, ending balance and transactions as JSON. Include page references so I can check the values.”
The agent chooses the Pulse tools and handles their inputs and job polling. With local MCP, you can provide an absolute file path in place of the URL. For large documents or organizations that delete results on first read, see result limits and retention.

Advanced details

PULSE_API_KEY overrides the login saved in ~/.pulse/mcp.toml. If the device key expires, run --login again and restart the connection. Each login creates a new key; remove unused keys from API Keys in Pulse.Custom hosted connectionsWhen adding a custom server in your client, choose Streamable HTTP and enter this in its Server URL field:
If your client asks for OAuth credentials, use the values provided by Pulse, then sign in and approve access. Manual connections accept x-api-key: <key> or Authorization: Bearer <key>.Local API-key setupTo use an API key in place of browser login, set it in your client’s environment:
Codex: local API key
Keep keys out of prompts and committed config. A local package pin does not select the hosted server’s version.Check the connectionAsk your agent:
“Use only Pulse. List its available tools without processing documents.”
Supply exactly one of config or config_id to job-starting tools. Config fields follow the V2 SDK; unknown fields are forwarded for engine validation, so typos return errors. For example, Tables accepts config={"format":["json"],"effort":"high"}.Hosted Parse requires a URL. Local Parse uploads files directly, up to 100 MB; chat attachments are not local file paths.Parse, then extract
Parse tool arguments
Wait for completion using get_job with include_result=false, then reuse the parse_id:
Extract tool arguments
For topic-specific extraction, use split to find pages, then pass them as extract.config.page_range with the original parse_id.See Parse, Extract, Split, Tables, Charts, Batch and Pipelines for full config and result shapes.Asynchronous jobsTools submit asynchronously and poll for up to 15 seconds by default. Set async_=true to return immediately; parse_batch always does. Continue with get_job(job_id=...). Completed output is under result. The polling budget does not cap submission or individual HTTP request time.Pipeline manifests expose step IDs while processing. Read each completed step’s output with get_job using its own ID.Polling and result-read errors retain the job ID and any last known status, with isError=true on the MCP call. When poll_with is get_job, retry that ID. Permanent errors, such as expired results, omit the retry hint.
Full V2 results, including Markdown and elements, are returned inline. They can exceed a client’s size limit; there is no automatic download-link fallback. Use a smaller config.page_range, or retrieve and save large results through the SDK/API.
First-read deletion consumes a result even if the MCP client rejects the response. Before chaining downstream steps, use include_result=false on parse and its get_job polls. Read the parse result after those steps finish. For large results, save the first read through the SDK/API instead of relying on MCP delivery.
Reconnect to refresh tools, and update workflows:Use V2 parse_id values and config/config_id. V1 job IDs and saved pipelines are incompatible; old parameter aliases and generate_schema are removed. Pin pulse-mcp==0.1.4 locally to retain V1 tools.