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 (or Cursor MCP settings) { "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 ✓ 9 read-only 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.tools/list so MCP clients can introspect capabilities. Write actions stay on the explicit /api/v1/actions surface.The tool surface
Nine read-only tools. Every call is permission-filtered, audited, and rate-limited via the existing per-key budget.
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.
List commitments filtered by who owes the work, who the work is for, and status.
Tested with
Every release runs through a compatibility matrix against current versions of these clients.
Claude Desktop
Drop the config block into claude_desktop_config.json, 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 --add-server pulse and you’re done.
CLI / scripts
Anything that speaks JSON-RPC over stdio works. We ship reference clients in TypeScript, Python, Go, and Rust.
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 plane. We treat it that way, same auth, same audit, same kill switch as our first-party app.
Bearer auth via existing API keys
MCP clients authenticate with the same pk_live_* tokens your other API integrations already use. Read scope is required. Generate from /app/admin/api-keys; revoke 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 tenant
Every invocation is logged as mcp.tool.invoked or mcp.tool.error in the AuditLog with caller, tool name, api-key id, and timestamp. Streamable to your SIEM on Enterprise.
Tenant-scoped, not user-scoped
v1 keys carry tenant scope (matching the rest of /api/v1/*). The token's owner is the user who created it. No cross-tenant query is reachable through any tool.
Workspace admin can revoke
Single-click key revocation flips revokedAt on the ApiKey row. Subsequent calls fail at authedApi() with 401 immediately. No client cache to invalidate.
Read-only by design
All nine tools are read-only in v1. Write actions (drafts, undo, ticket creation) stay on the explicit /api/v1/actions surface where every call requires the write scope and lands in the agent-actions inbox.
The server is ready.
Your model is, too.
If you’re already on Pulse, the MCP server takes 90 seconds to set up. Once we’re open, the Free tier ships with full MCP access, no upgrade required.