For developers

Build with Bridge.

Bridge ships an MCP server, an OpenAPI 3.1 spec, and a.well-known/mcp.jsondiscovery manifest so your agents — Claude Desktop, Cursor, your own — can read and act on your CRM.

Live tool catalog

Pulled directly from /api/v1/.well-known/mcp.json. Updated within a minute of registry changes.

bridge_activity_listsafe

Get the activity history (emails, meetings, calls, notes) for a specific contact. Use when the user asks about past interactions, communication history, or "when did I last talk to…". Pass the contact UUID — if you only have a name, call search_contacts first.

bridge_activity_logreversible

Log an activity (email, meeting, call, note, message, SMS, WhatsApp) for a contact. Use when the user says they had a meeting, call, message, or interaction with someone and wants to record it. Pass the contact UUID — call search_contacts first if you only have a name.

bridge_commitments_listsafe

Get open commitments (promises/action items) the user has made or that others have made to them. Use when the user asks "what do I owe?", "what have I promised?", "what does [contact] owe me?", "what are my open commitments?", "what do I need to follow up on?". Returns commitments AI-extracted from emails, meetings, and notes. Pass the contact UUID for the optional contactId filter — call search_contacts first if you only have a name.

bridge_contacts_getsafe

Get the full profile for a specific contact by UUID. Use after search_contacts to retrieve detailed information about a person, or when the user asks for details about a specific contact. Pass the contact UUID — call search_contacts first if you only have a name.

bridge_contacts_searchsafe

Search the user's contacts by name, company, school, location, role, or keywords. Use when the user asks about people in their network, wants to find contacts matching criteria, or asks "who do I know at…" style questions.

bridge_contacts_transferreversible

Send one of the user's contacts to another Bridge user. The transfer is pending until the recipient accepts/declines or it expires (30 days). Both sides see status via bridge_contacts_transfers_list.

bridge_contacts_transfers_acceptreversible

Accept a pending contact transfer sent to you. The contact is added to your CRM, deduplicated against anyone you already know.

bridge_contacts_transfers_declinereversible

Decline a pending contact transfer addressed to you. The sender sees the decline; no contact is added.

bridge_contacts_transfers_listsafe

List pending and historical contact transfers involving the user. direction=inbox (received), outbox (sent), or all.

bridge_contacts_updatereversible

Update a contact's profile fields. Use when the user explicitly tells you to change a field on a specific contact. Allowed fields: company, title, location, education, bio, notes, birthday, email, phone. CRITICAL: only set email or phone when the user explicitly names BOTH the field and the new value (e.g. "set Sarah's email to sarah@new.co"). NEVER infer email/phone changes from vague language ("looks like Sarah moved jobs"). For tags, use manage_tags. Pass the contact UUID — call search_contacts first if you only have a name.

bridge_deals_listsafe

List the user's deals. Optionally filter by pipeline UUID, stage UUID, contact UUID, or status. Use when the user asks "what deals do I have", "show my pipeline", or "deals with [contact]". Pass UUIDs for filters — call list_pipelines first to resolve pipeline/stage names, search_contacts for contact names.

bridge_deals_move_stagereversible

Move a deal to a different stage in its pipeline. Use when the user says "move [deal] to [stage]", "[deal] won", or "mark as closed". Pass the deal UUID + target stage UUID — call list_deals first to resolve the deal, list_pipelines to resolve the stage.

bridge_inbox_list_forwardssafe

Retrieve emails the user has recently forwarded to their Bridge inbox address (e.g. u_xxx@in.bridge-ai.social). Use when the user asks: "did you get the email I forwarded?", "check my forwarded mail", "what just came in", "show me the email I sent over". Returns sender, subject, snippet, matched contact (if any), and reply links. If nothing is returned, tell the user no recent forwards arrived and surface their forwarding address so they can verify they sent it to the right place.

bridge_pipelines_listsafe

List the user's sales/investor pipelines with their stages. Use when the user asks 'what pipelines do I have', 'show me my pipelines', or before referring to a specific pipeline by name.

bridge_pipelines_summarysafe

Summarize a sales pipeline by stage with deal counts and total value. Use when the user asks 'show my pipeline', 'how is X pipeline doing', or compares stages. Returns each stage with deal count, total value, and top deals.

bridge_reminders_createreversible

Create a reminder for the user. Use when the user asks to be reminded about something — following up with a contact, a deadline, or any future task. Pass the contact UUID for the optional contactId — call search_contacts first if you only have a name.

bridge_warm_intros_evaluatesafe

Find warm introduction paths to a target contact. Returns people who know the target well, split into "Ready" (strong on both sides — you can ask for the intro) and "Opportunity" (they know the target well but you need to build your relationship with them first). Use when the user asks "how can I get introduced to X?", "warm intro to X", "who can introduce me to X?", "do I have any mutual connections with X?". Pass the target contact UUID — call search_contacts first if you only have a name.

Quickstart

Three steps. No SDK to install — Bridge speaks MCP and HTTP directly.

Step 1

Mint a token

Sign in to Bridge and visit /settings/mcp-tokens. Choose a label, an allowlist of capabilities, and a tier. The raw token appears once — copy it.

Format: pat_live_<32-hex>. Store like any other credential.

Step 2

Point your MCP host at Bridge

Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "bridge": {
      "command": "npx",
      "args": [
        "-y", "mcp-remote",
        "https://bridge-ai-production-6d13.up.railway.app/api/v1/mcp",
        "--header", "Authorization:Bearer ${BRIDGE_TOKEN}"
      ],
      "env": { "BRIDGE_TOKEN": "pat_live_..." }
    }
  }
}
Step 3

Or call it directly

Plain JSON-RPC over HTTP works too:

curl -X POST https://bridge-ai-production-6d13.up.railway.app/api/v1/mcp \
  -H "Authorization: Bearer pat_live_..." \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

JavaScript / TypeScript:

const res = await fetch("https://bridge-ai-production-6d13.up.railway.app/api/v1/mcp", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.BRIDGE_TOKEN}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    jsonrpc: "2.0",
    id: 1,
    method: "tools/call",
    params: {
      name: "bridge_contacts_search",
      arguments: { name: "Sarah" },
    },
  }),
});
const data = await res.json();

Python:

import httpx, os

r = httpx.post(
    "https://bridge-ai-production-6d13.up.railway.app/api/v1/mcp",
    headers={
        "Authorization": f"Bearer {os.environ['BRIDGE_TOKEN']}",
        "Content-Type": "application/json",
    },
    json={
        "jsonrpc": "2.0",
        "id": 1,
        "method": "tools/call",
        "params": {
            "name": "bridge_contacts_search",
            "arguments": {"name": "Sarah"},
        },
    },
)
print(r.json())

Built for trust

PII redaction by default

Tokens without the `includesPII` flag get redacted responses — email, phone, notes, locations are stripped before they leave the server. Opt in explicitly when your agent needs them.

Undo for every reversible action

Each reversible call returns a one-shot `undoToken`. Hit `bridge_undo` within the window to revert. The recipient of a contact transfer can decline; the sender can revoke.

Confirm-required for destructive

Destructive capabilities return a `confirm_required` envelope first. Your agent retries with the `_confirm_token` to commit, or calls `bridge_cancel` to abandon.

Per-token scoping

Each token carries a capability allowlist. Empty = wildcard-safe (every safe-class capability). Reversible / destructive / external capabilities require an explicit entry — wildcards never silently widen.

Rate limits

Per-token, per-minute. Pick a tier when minting.

TierRequests / minute
free30
pro300
enterprise3,000