Skip to main content
v1.0 · GA

The MCP server.
Every model, on your terms.

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.

Desktop launches stdio servers, so the remote endpoint rides the mcp-remote bridge.

claude_desktop_config.json
{
  "mcpServers": {
    "pulse": {
      "command": "npx",
      "args": [
        "-y", "mcp-remote",
        "https://YOUR_PULSE_HOST/api/mcp",
        "--header", "Authorization: Bearer pk_live_..."
      ]
    }
  }
}
  • JSON-RPC 2.0 over HTTP · no npm dep, no proxy
  • 15 read · 7 capture · 3 personal-memory · 2 propose — 27 tools via tools/list
  • bearer auth · the same pk_live_* token your other API uses
handshake · POST /api/mcp
initialize
server capabilities · 27 tools
tools/call · search_company
200 · ranked hits + citations
tools/call · pulse_grep
200 · 6 hits · ACL-filtered
Why MCP?
An open standard from Anthropic: AI tools reach your data without a bespoke integration per client. One server, every client — run for you as part of the hosted product, no daemon to install.
Implementation
A direct JSON-RPC 2.0 server. No @modelcontextprotocol/sdk dependency — the route at /api/mcp implements initialize, tools/list, and tools/call itself.
Hosting
Served from the same Next.js app as the rest of Pulse. No daemon, no proxy to keep alive, no npm package to update.
Transport
HTTP in v1. One POST to /api/mcp with a JSON-RPC envelope; one GET for discovery. TLS via Vercel, bearer auth via the existing API keys.
Surface
Twenty-seven tools across read, capture, and action. Every one exposes a JSON Schema input contract via tools/list so clients can introspect what they can do.
the tool surface · 27 registered

Twenty-seven tools, one endpoint. Run your cursor over the surface.

Every call is permission-filtered, audited, and rate-limited via the per-key budget. Capture and personal-memory tools need an MCP token from /app/settings/integrations/mcp-tokens.

read16
capture09
action02
search_companyread

Hybrid search across decisions, docs, customers, and skills. Ranked hits with citations.

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 DesktopmacOS · Windows
Cursor0.42+
Zed0.165+
Continue0.9.211+
Claude Codeterminal
CLI / scriptscurl-friendly
VS Codevia plugin
Yours, presumablyopen a PR

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.

  • 01 · auth

    Bearer auth via existing API keys

    Sign in with the same pk_live_* token your other integrations use. Read scope required; revoke in one click.

  • 02 · enforcement

    Permission check per call

    Every call passes the same retrieval permission filter as the in-app surface. The server can't bypass an ACL.

  • 03 · audit

    Full call log per workspace

    Caller, tool name, API-key id, and timestamp are written to the audit log. Pull it via GET /api/v1/audit.

  • 04 · isolation

    Scoped to your workspace

    Keys are scoped to one workspace, matching /api/v1/*. No tool can reach another workspace's data.

  • 05 · kill switch

    Revoke in one click

    Revoking a key takes effect immediately — the very next call is rejected, with no client cache to wait out.

  • 06 · privacy

    Read by default, act only on request

    Capture, personal-memory, and propose tools act only when you invoke them; proposals wait in the human approval inbox.

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.