MCP

Connect Sealith MCP to local-execution clients.

Sealith exposes an HTTP JSON-RPC MCP endpoint. On Business and above, AI clients can call secure handoff operations and audit-log append actions. Full binary-file completion still depends on whether the client can access local commands or local files.

Endpoint

https://www.sealith.com/api/mcp

Authorization: Bearer sl_agent_... is required for authentication.

Supported methods are initialize, tools/list, and tools/call.

AI-triggered calls must declare purpose, jobId, aiProvider, and aiClient. aiModel is optional.

Available on Business and above.

URL shares and short text files are broadly supported. Web-created secure-text handoffs are exposed as resourceType=text on receive. Binary files such as PDFs, images, and Office documents still depend on the client runtime for end-to-end completion.

Slack integration is also available on Business and above, but it is handled through the web app's workspace connection and posting policy rather than MCP. MCP and Slack delivery still share the same handoff / revoke / audit foundation.

Where MCP fits best

MCP is best when you want to hand off operations to clients that can run locally, such as Claude Code or Cursor. Short text files complete in one step, and URL shares for Google Drive or Box complete immediately. Binary files such as PDFs, images, and Office documents work best with local helper upload, while remote-execution clients such as Claude App or ChatGPT need client-specific checks around network and attachment behavior.

How it expands on the receiving side

If the receiving company also has a Sealith account, MCP becomes the next internal workflow for processing received materials with its own AI. The value shows up less at the instant of receipt and more in the internal workflow that follows.

Recommended implementation patterns

Use MCP when an AI client needs to operate Sealith directly. Keep the first rollout narrow, then expand into approvals, evidence, and external action logging.

In Sealith, an Agent Token can be treated as an AI employee ID card. Register one AI employee per role, bind provider / client / model when stable, and keep purpose, allowed use, recipient type, and scope narrow.

Contract review agent

Receive PDFs, summarize only, and append result=needs_human_review before any external sharing.

Invoice operations agent

Receive invoices, extract fields, and record CRM or accounting-system updates as external actions.

Executive approval agent

Hold payment-agent or external-org actions in Human Approval Gate before delivery or execution.

Tool list

create_secure_handoff

Creates an encrypted file handoff or an audited URL handoff.

upload_handoff_chunk

Backward-compatible flow for generic MCP clients. Appends a base64 chunk to an upload session.

complete_handoff_upload

Backward-compatible flow for generic MCP clients. Completes chunk upload and moves into encryption and finalization.

cancel_handoff_upload

Cancels an in-progress large-file upload session.

get_handoff_status

Returns the handoff status.

finalize_handoff

Activates the handoff and sends notifications for legacy file-upload flows or manual control paths.

receive_handoff

Lets AI receive a handoff created by a human sender. For files and text it returns decryption parameters, and for URLs it returns targetUrl.

revoke_handoff

Revokes the handoff.

get_handoff_logs

Returns audit logs.

append_audit_context

Appends purpose, jobId, note, and result into the audit log.

list_handoffs

Searches handoffs created by this token by keyword, status, recipient, and date range even when you do not remember the transfer ID.

bulk_revoke_handoffs

Revokes multiple handoffs in bulk and can record the reason in the audit log (up to 20 items).

get_org_usage

Returns plan limits and this month's transfer usage, including remaining quota and reset date.

verify_audit_integrity

Verifies the SHA-256 hash chain across all audit log entries and confirms whether tampering has occurred. Use it as compliance evidence.

Permission policy and approval gate

Every AI-triggered handoff should declare purpose, jobId, allowedUse, and recipientType. receive_handoff returns a machine-readable permissionPolicy; clients should inspect it before summarizing, forwarding, storing, or sending content outside the organization.

Contract review

purpose=contract_review / allowedUse=view_only,summarize_allowed / recipientType=human,ai_agent

Invoice processing

purpose=invoice_check / allowedUse=internal_use_only / recipientType=ai_agent

External sharing

recipientType=external_org / domain limits required / Human Approval Gate before delivery

JSON-RPC examples

If you want to test connectivity without an MCP client, cover the four patterns: text file, binary file, URL share, and receive. For binary files, also verify whether the client has the necessary local execution permissions.

initialize

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "initialize",
  "params": {}
}

tools/list

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/list"
}

tools/call create_secure_handoff

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "create_secure_handoff",
    "arguments": {
      "purpose": "contract_review",
      "jobId": "job_20260423_001",
      "aiProvider": "anthropic",
      "aiClient": "claude_code",
      "aiModel": "claude-sonnet-4",
      "type": "file",
      "fileName": "nda.txt",
      "fileSizeBytes": 32,
      "textContent": "Sealith MCP inline upload test",
      "recipients": [{ "email": "legal@example.com", "name": "法務担当" }],
      "message": "レビューをお願いします。",
      "securityMode": "standard",
      "expiresInHours": 72,
      "maxDownloads": 3,
      "sensitivityLevel": "confidential"
    }
  }
}

tools/call create_secure_handoff (start large file upload)

{
  "jsonrpc": "2.0",
  "id": 6,
  "method": "tools/call",
  "params": {
    "name": "create_secure_handoff",
    "arguments": {
      "purpose": "board_pack_review",
      "jobId": "job_20260507_001",
      "aiProvider": "anthropic",
      "aiClient": "claude_code",
      "idempotencyKey": "board-pack-2026-05",
      "type": "file",
      "fileName": "board-pack.pdf",
      "fileSizeBytes": 10485760,
      "mimeType": "application/pdf",
      "recipients": [{ "email": "legal@example.com" }],
      "securityMode": "standard"
    }
  }
}

tools/call create_secure_handoff (URL share)

{
  "jsonrpc": "2.0",
  "id": 5,
  "method": "tools/call",
  "params": {
    "name": "create_secure_handoff",
    "arguments": {
      "purpose": "dd_link_review",
      "jobId": "job_20260423_002",
      "aiProvider": "openai",
      "aiClient": "chatgpt_connector",
      "type": "url",
      "url": "https://drive.google.com/file/d/xxx/view",
      "title": "DD資料共有リンク",
      "recipients": [{ "email": "legal@example.com", "name": "法務担当" }],
      "message": "リンク先の資料確認をお願いします。",
      "securityMode": "standard",
      "expiresInHours": 72,
      "maxDownloads": 3,
      "sensitivityLevel": "confidential"
    }
  }
}

tools/call receive_handoff

{
  "jsonrpc": "2.0",
  "id": 4,
  "method": "tools/call",
  "params": {
    "name": "receive_handoff",
    "arguments": {
      "transferId": "tr_xxxxxxxxxxxxxxxx",
      "passcode": "A2b!C3d@E4f#G5h$",
      "purpose": "contract_review",
      "jobId": "job_20260423_001",
      "aiProvider": "anthropic",
      "aiClient": "claude_app",
      "recipientEmail": "legal@example.com"
    }
  }
}

Claude Code

The official Claude Code docs recommend HTTP transport for remote MCP. Add Sealith from the CLI or define an HTTP server inside .mcp.json.

claude mcp add --transport http sealith https://www.sealith.com/api/mcp \
  --header "Authorization: Bearer ${SEALITH_AGENT_TOKEN}"
{
  "mcpServers": {
    "sealith": {
      "type": "http",
      "url": "https://www.sealith.com/api/mcp",
      "headers": {
        "Authorization": "Bearer ${SEALITH_AGENT_TOKEN}"
      }
    }
  }
}

Cursor

Cursor officially supports both local and remote MCP transports. Because it runs locally, it pairs well with helper-based binary-file upload. In the config, pass the URL and headers through mcpServers and reference the token through environment variables rather than hardcoding it.

{
  "mcpServers": {
    "sealith": {
      "url": "https://www.sealith.com/api/mcp",
      "headers": {
        "Authorization": "Bearer ${env:SEALITH_AGENT_TOKEN}"
      }
    }
  }
}

ChatGPT / Claude App

ChatGPT custom connectors and Claude App remote MCP can connect, but binary-file completion depends on whether the client supports local helpers or shell upload. For now, it is safer to validate URL shares, audit logs, and short text files first, then verify PDF / image / Office completion client by client.

1Password

1Password is not an MCP client. It fits naturally as an operational path for avoiding plaintext Sealith Agent Tokens. Supply the token as an environment variable through 1Password Environments or the CLI, then reference it from Cursor or Claude Code.

1. Manage SEALITH_AGENT_TOKEN inside 1Password Environments
2. Expose it as an environment variable through a local .env file destination or the 1Password CLI
3. In Cursor / Claude Code MCP settings, reference the environment variable instead of writing the token in plaintext

Example:
SEALITH_AGENT_TOKEN=sl_agent_...

How to think about runtime

Claude Code / Cursor work well with local helpers and local file access, so they are easier places to embed binary-file transfer.

Claude App / ChatGPT can connect as remote MCP or custom-connector clients, but binary-file completion still depends on their shell, network, and attachment capabilities.

Error codes

codemessageMeaning
-32600invalid_requestThe JSON-RPC payload is malformed, for example because method is missing.
-32601method_not_foundYou called something other than initialize, tools/list, or tools/call.
-32602tool_name_requiredparams.name is missing from tools/call.
-32000tool_call_failedThe downstream Agent API call failed. The content field contains the API error JSON.
-32001feature_not_available_on_planMCP is unavailable below Business.

When to use what

Use the REST API + OpenAPI when embedding Sealith into your application or backend.

Use MCP when you want to hand handoff actions to local-execution clients such as Claude Code or Cursor. It gives you one contract across text files, binary files, and URL shares.

Both rely on the same Agent Token constraints, so you can keep one operational policy.

Audit logs accumulate in the same format regardless of whether they were called from REST or MCP.

MCP guide