The MCP server.
Every model, on your terms.
Pulse ships a Model Context Protocol server that exposes your map, briefings, skills, and answer tools to any MCP-aware client, Claude Desktop, Cursor, Zed, Continue, and the dozen others shipping monthly. No middleman, no per-token markup, no telemetry on your prompts.
# claude_desktop_config.json (Desktop launches stdio servers, # so the remote endpoint goes through the mcp-remote bridge) { "mcpServers": { "pulse": { "command": "npx", "args": [ "-y", "mcp-remote", "https://YOUR_PULSE_HOST/api/mcp", "--header", "Authorization: Bearer pk_live_..." ] } } } # Cursor (~/.cursor/mcp.json) speaks HTTP directly: { "mcpServers": { "pulse": { "url": "https://YOUR_PULSE_HOST/api/mcp", "headers": { "Authorization": "Bearer pk_live_..." } } } } ✓ JSON-RPC 2.0 over HTTP, no npm dep, no proxy ✓ 14 read + 7 capture + 3 personal-memory + 1 action-proposal tools registered · listed via tools/list ✓ bearer auth · same pk_live_* token your other API uses
@modelcontextprotocol/sdk dependency: the route handler at /api/mcp implements initialize, tools/list, tools/call, and notifications/initialized directly.pulse_recall) and ten writes, seven capture tools (Claude Desktop, Cursor, Codex push conversations / snippets / decisions into Pulse via MCP), pulse_remember / pulse_forget for private personal memory, and pulse_propose_action, which files an action proposal (a PR, a Slack post, a task) into the human approval inbox and never executes anything itself. Every tool exposes a JSON Schema input contract via tools/list so MCP clients can introspect capabilities.The tool surface
Fifteen read tools (including pulse_recall) and ten write tools, seven team-visible capture tools, action proposals via pulse_propose_action, plus pulse_remember / pulse_forget for private personal memory. Every call is permission-filtered, audited, and rate-limited via the existing per-key budget. Capture and personal-memory tools require an MCP token from /app/settings/integrations/mcp-tokens.
Hybrid search across decisions, documents, customers, and skills. Returns ranked hits with citations and per-hit confidence.
Fetch one decision by id with rationale, evidence URLs, regret score, and linked PRs.
Most recent decisions in the workspace, optionally filtered by category and lookback window.
Given a topic, return ranked humans most likely to be experts on it. Ranking uses authored docs + decisions + answered questions.
Fetch a feature record with stage, status, owner, and timeline metadata.
Given a feature description, return prior features whose embeddings are most similar. Useful for 'has someone built this before?'
Profile for a person in this workspace plus inferred skills (recent activity, authored docs, decisions made).
The user's current Pulse: open commitments, recent decisions, customer alerts, top stuck items.
On-demand workspace-wide snapshot: 7-day timeline, top commitments, recent decisions, alerts, stuck items, features in flight, plus counts. ACL-filtered so private-channel items stay private.
List the immediate children of a virtual knowledge path (/documents, /decisions/{YYYY-MM}, /people, /people/{slug}/commitments, /skills, /features, /topics). Entities you can't see are absent, never labelled.
Recursive listing of a virtual path, capped at depth 3 and 25 entries per level. Same ACL filter as pulse_ls.
Hybrid retrieval search (vector + lexical) with optional path scoping. /people/{slug} narrows to that person's authored documents.
Glob match (* and ?) against slugs in the visible tree, e.g. "/people/s*" or "/decisions/2026-05/*".
List commitments filtered by who owes the work, who the work is for, and status.
Save the current AI conversation to Pulse so the team can see and learn from it. User-initiated only; the model never calls this autonomously.
Save a specific code block, paragraph, or quote from the current conversation. Optional language hint drives syntax highlighting in the Pulse UI.
Record a structured decision with rationale, alternatives, tradeoffs, and confidence. Creates a Decision entity directly and links it back to a Document holding the full reasoning.
Record a commitment (who owes what to whom, by when) extracted from the conversation.
Save a failure case (what was tried, what broke, what the fix was) so the team can avoid repeating it.
Save a general note or working memo for the workspace.
Propose a new Skill candidate. Enqueues a SkillExtractionJob; an admin reviews and compiles through the standard DRAFT → SHADOW → ACTIVE pipeline.
Save a durable PERSONAL fact or preference to your private cross-AI memory. Only you can ever see it; it follows you across tools. Not team knowledge.
Load your private facts + writing/coding style as a compact instruction block so any AI tool continues work in your voice. Returns only your own data.
Remove the closest-matching fact from your private memory by natural-language query.
Draft a real action (a Slack post, a Linear issue, a Salesforce update, any of the 98 public kinds) into the human approval inbox at /app/actions. Never executes anything itself; a person always clicks approve.
Tested with
The clients we use day to day. Anything that speaks JSON-RPC 2.0 over HTTP works, with or without the mcp-remote bridge.
Claude Desktop
Drop the mcp-remote config block into claude_desktop_config.json (Desktop launches stdio servers, so the bridge carries the HTTP endpoint), Pulse appears as a tool source in your next conversation.
Cursor
Settings → MCP → add server. Pulse tools become available in chat and the inline composer. Auth completes in the browser.
Zed
Native MCP support since Zed 0.165. Pulse shows up in the assistant panel; tool calls appear inline with the diff.
Continue
Coding assistant with a pluggable model router. Pair Pulse for local-LLM-plus-grounded-context workflows.
Claude Code
The CLI flavour of Claude with native MCP. claude mcp add --transport http pulse https://YOUR_PULSE_HOST/api/mcp --header "Authorization: Bearer …" and you’re done.
CLI / scripts
Anything that speaks JSON-RPC 2.0 works. POST the envelope from the install block to /api/mcp with your bearer token, no client library needed.
VS Code
Via the GitHub Copilot MCP extension or the Continue plugin. Pulse tools surface in the chat side panel.
Yours, presumably
Build a client and want it on this page? Open a PR with a one-paragraph description and a screenshot.
Security model
An MCP server is a key into your data, and we treat it that way. Same login, same audit log, same instant kill switch as the Pulse app itself.
Bearer auth via existing API keys
AI tools sign in with the same pk_live_* tokens your other API integrations already use. Read scope is required. Generate one from /app/admin/api-keys; revoke it in one click.
Permission check per call
Every tool call passes through the same retrieval permission filter as the in-app surface. The MCP server can't bypass ACLs, it's a thin shell over the same auth path.
Full call log per workspace
Every call is written to the audit log with the caller, tool name, API-key id, and timestamp. Pull it anytime via GET /v1/audit; real-time SIEM streaming is on the Enterprise roadmap.
Scoped to your workspace
Keys are scoped to your workspace, matching the rest of /api/v1/*. The token's owner is the person who created it. No tool can reach another workspace's data.
An admin can revoke in one click
Revoking a key takes one click and takes effect immediately: the very next call is rejected. There's no client-side cache to wait out.
Read by default, capture only on request
Fifteen tools are read-only (fourteen graph/answer reads plus pulse_recall, which returns only your own private memory). Ten write to Pulse, the seven capture tools and skill suggestions (team-visible), pulse_remember and pulse_forget (your private personal memory), and pulse_propose_action, and only when you explicitly invoke them in your AI client; their descriptions tell the model never to call them on its own. pulse_propose_action never executes anything: it files a proposal into the same human approval inbox at /app/actions that every agent action goes through, so your AI can suggest a PR, a Slack post, or a calendar event and a person always clicks approve.
The server is ready.
Your model is, too.
If you’re already on Pulse, the MCP server takes 90 seconds to set up. MCP access is included on every plan, no upgrade required.