SendMeDocs / Docs AI Assistants External API Webhooks MCP Server Zapier & Automations

MCP Server

Just want to connect Claude or ChatGPT? See the AI Assistants guide for a simpler walkthrough — no API keys or config files needed.

SendMeDocs includes a Model Context Protocol (MCP) server that lets AI assistants manage document requests on your behalf. Connect any MCP-compatible client and use natural language to create requests, check statuses, and download files.

Server URL:

https://sendmedocs.com/api/mcp

How it works

Your AI assistant connects to the MCP endpoint using either an API key or OAuth. When you ask it to do something like "send Jane a request for her photo ID", the assistant calls the appropriate tool, SendMeDocs executes it, and the result comes back — all within the conversation.

No AI model runs on the SendMeDocs server. The intelligence is entirely on the client side. SendMeDocs just answers structured tool calls using the same database and logic as the REST API.

Setup by client

Claude Desktop

API key auth via JSON config.

  1. Create an API key: Dashboard > Settings > API Keys > Create API Key (owner or admin role required). Copy the key — it starts with smd_ and is shown only once.
  2. Edit claude_desktop_config.json (Settings > Developer > Edit Config):
{
  "mcpServers": {
    "sendmedocs": {
      "type": "streamableHttp",
      "url": "https://sendmedocs.com/api/mcp",
      "headers": {
        "Authorization": "Bearer smd_your_key_here"
      }
    }
  }
}
  1. Restart Claude Desktop. The SendMeDocs tools will appear in your tool list.

Claude Code

API key auth via CLI.

  1. Create an API key (same as Claude Desktop step 1 above)
  2. Run:
claude mcp add --transport http sendmedocs https://sendmedocs.com/api/mcp \
  --header "Authorization: Bearer smd_your_key_here"
  1. The tools are available immediately in your next conversation.

Cursor

API key auth via JSON config.

  1. Create an API key (same as Claude Desktop step 1 above)
  2. Edit .cursor/mcp.json in your project root (or global config):
{
  "mcpServers": {
    "sendmedocs": {
      "type": "streamableHttp",
      "url": "https://sendmedocs.com/api/mcp",
      "headers": {
        "Authorization": "Bearer smd_your_key_here"
      }
    }
  }
}
  1. Restart Cursor. The tools appear in the MCP panel.

OpenClaw

API key auth via mcporter.

  1. Create an API key (same as Claude Desktop step 1 above)
  2. Add to your config/mcporter.json:
{
  "servers": {
    "sendmedocs": {
      "transport": "streamable-http",
      "url": "https://sendmedocs.com/api/mcp",
      "headers": {
        "Authorization": "Bearer smd_your_key_here"
      }
    }
  }
}
  1. Verify with mcporter list sendmedocs --schema to see the available tools.

Other MCP clients

Any client that supports Streamable HTTP transport will work. You need:

Try it out

Ask your AI assistant something like:

Available tools

Tool What it does
search_requests Search and filter document requests by status, recipient name, or contact
send_request Send a document request to someone via email or SMS. Costs one request.
get_request_details Get full details of a specific request — items, statuses, uploaded file metadata
download_file Get presigned download/view URLs for a specific uploaded file
cancel_request Cancel a pending request so the recipient can no longer upload
get_usage Check plan tier, monthly requests remaining, and credit balance

Tool details

search_requests

Parameter Type Description
status string Filter: pending, completed, or expired
search string Search by recipient name or contact (case-insensitive)
limit number Results to return (1-100, default 20)

Returns a list of requests with id, recipient info, status, and timestamps. Use this to find request IDs before calling other tools.

send_request

Parameter Type Required Description
recipient_name string Yes Recipient's display name
recipient_contact string Yes Email or US phone number to send the upload link to
items array Yes 1-20 document items to request
message string No Custom message included in the notification email/SMS
expires_at string No ISO 8601 expiration date
locale string No Upload portal language (en, es, fr, de, pt, zh, ja, ko, ru, th, vi)

Each item is either a prefab (photo_id, proof_of_address, proof_of_income, w9) or a custom item with name and description.

This tool sends a real email/SMS and counts as one request. Each request draws from your monthly pool. When the pool is empty, overflow requests use your purchased credit balance at $0.10 each. Your AI assistant will confirm the details with you before calling it.

get_request_details

Parameter Type Required Description
request_id string Yes The request UUID

Returns full request detail including items, their statuses, revision notes, and uploaded files with metadata. Use this to check progress or get file IDs for downloading.

download_file

Parameter Type Required Description
request_id string Yes The request UUID
file_id string Yes The file UUID (from get_request_details)

Returns presigned URLs for downloading (5-min expiry, attachment disposition) and viewing (15-min expiry, inline disposition), plus the original filename.

cancel_request

Parameter Type Required Description
request_id string Yes The request UUID

Only pending requests can be cancelled. The recipient will no longer be able to upload.

get_usage

No parameters. Returns your current plan tier, monthly requests remaining, purchased credit balance, cost per overflow request, and whether you can send a new request.

Authentication

The MCP endpoint supports two authentication methods. Both resolve to the same org context with the same rate limits (60 requests per minute) and org scoping.

API keys

For developer clients (Claude Desktop, Claude Code, Cursor, OpenClaw, scripts). Create a key in the dashboard, then include it in every request:

Authorization: Bearer smd_your_key_here

OAuth 2.1

For GUI clients (claude.ai, ChatGPT, and any client that supports OAuth discovery). The client handles the entire flow automatically:

  1. Client fetches /.well-known/oauth-authorization-server to discover endpoints
  2. Client registers itself via dynamic client registration (RFC 7591)
  3. User is redirected to sign in and authorize access to a specific organization
  4. Client receives an access token (smd_oat_ prefix, 1-hour lifetime) and a refresh token (30-day lifetime)
  5. Client refreshes automatically when the access token expires

No manual configuration needed on the user's part — just enter the server URL and the client does the rest.

Protocol details

For developers building custom MCP clients or debugging connections.

The endpoint implements Streamable HTTP transport with these JSON-RPC methods:

Method Description
initialize Handshake — returns server info and capabilities
notifications/initialized Client acknowledgment (returns 202)
tools/list Returns the list of available tools
tools/call Executes a tool and returns the result
# Initialize handshake
curl -X POST https://sendmedocs.com/api/mcp \
  -H "Authorization: Bearer smd_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}},"id":1}'

# List available tools
curl -X POST https://sendmedocs.com/api/mcp \
  -H "Authorization: Bearer smd_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"tools/list","id":2}'

# Call a tool
curl -X POST https://sendmedocs.com/api/mcp \
  -H "Authorization: Bearer smd_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"search_requests","arguments":{}},"id":3}'