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.
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
| code | message | Meaning |
|---|---|---|
| -32600 | invalid_request | The JSON-RPC payload is malformed, for example because method is missing. |
| -32601 | method_not_found | You called something other than initialize, tools/list, or tools/call. |
| -32602 | tool_name_required | params.name is missing from tools/call. |
| -32000 | tool_call_failed | The downstream Agent API call failed. The content field contains the API error JSON. |
| -32001 | feature_not_available_on_plan | MCP 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.