LeadBind Docs

API

There is no REST API. Two HTTP surfaces, and how to call them with curl.

Straight answer first, because it saves you an hour: there is no REST API. No GET /v1/leads, no POST /v1/appointments.

LeadBind has two HTTP surfaces and they are shaped differently on purpose.

Surface Direction Shape
Lead webhook Data in Plain POST, JSON or form-encoded
/api/mcp Data out, and actions JSON-RPC 2.0 (Model Context Protocol)

Pushing leads in is deliberately dumb, because a hundred form builders and lead vendors need to hit it and none of them are going to implement a protocol. Reading and acting is MCP, because that is what lets an AI assistant use it without us writing an integration for every model.

Calling the MCP endpoint directly

You do not need an assistant or the CLI. It is one POST with a bearer token.

Endpoint: https://leadbind.org/api/mcp Auth: Authorization: Bearer lb_live_.... Create one at Setup, then AI access (leadbind.org/agent/ai-access). See Keys and permissions.

List what you can call

curl -X POST https://leadbind.org/api/mcp \
  -H "Authorization: Bearer $LEADBIND_KEY" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Call one

curl -X POST https://leadbind.org/api/mcp \
  -H "Authorization: Bearer $LEADBIND_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc":"2.0","id":2,
    "method":"tools/call",
    "params":{"name":"get_next_actions","arguments":{}}
  }'

The tool's own JSON comes back as a string inside result.content[0].text, so parse that field:

{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "content": [
      { "type": "text", "text": "{\n  \"summary\": \"3 lead(s) contacted but untouched...\",\n  \"stale_leads\": [ ... ]\n}" }
    ]
  }
}

Every tool, its inputs, and what it returns: Tools reference.

The two tools that are the whole point

Reading data is table stakes. These two let your own code drive the phone and get you paid.

Place a real call from your own number (needs a key with the dial scope):

curl -X POST https://leadbind.org/api/mcp \
  -H "Authorization: Bearer $LEADBIND_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc":"2.0","id":3,
    "method":"tools/call",
    "params":{"name":"place_call","arguments":{
      "phone":"8325550134","name":"Maria Lopez",
      "idempotency_key":"call-maria-2026-08-31"
    }}
  }'

Text a customer a card pay-link that settles into your own connected Stripe (needs write):

curl -X POST https://leadbind.org/api/mcp \
  -H "Authorization: Bearer $LEADBIND_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc":"2.0","id":4,
    "method":"tools/call",
    "params":{"name":"request_payment","arguments":{
      "amountCents":25000,"description":"Roof deposit",
      "idempotency_key":"deposit-maria-2026-08-31"
    }}
  }'

Every write takes idempotency_key. The caller is usually an AI, and an AI retries on a timeout; the same key returns the original result instead of placing a second call or creating a second charge. Pass dry_run: true on any write to see what it would do and change nothing.

Errors

JSON-RPC style, so a failure comes back with HTTP 200 and an error object rather than an HTTP status. Check for error, not the status code.

Code Means
-32001 Invalid or missing API key
-32003 Your key lacks the scope that tool needs
-32602 Unknown tool name
-32603 The tool ran and failed

-32003 is not a bug. Read, write, and calling are separate grants, and keys cannot be upgraded after creation. Create a new key with the scope you need.

Rules that will not change

Every call is scoped to the account that owns the key. There is no cross-account read, including for agencies.

Call recordings and transcripts are never returned. Not by any tool, at any scope. Responses are filtered on the way out, not merely omitted from the tool list. See What we send.

A key cannot mint another key. That needs your login, so a leaked key cannot escalate into permanent access.

Which surface do you want?

  • Getting leads in from a form or vendorLead webhook
  • Asking questions in plain languageconnect an assistant
  • Scripting or a terminalthe CLI, which is a wrapper over exactly the calls above
  • Your own code → the curl examples here

Docs your code can read

Every page is available as raw markdown: add .md to any URL. The full index is at docs.leadbind.org/llms.txt.

That exists so an assistant holding your key can also read the documentation and answer its own questions, rather than guessing at a tool signature.

Was this page helpful?