# CloudPDF — how to use (mcp.ai)

Connect your CloudPDF account and use 10 tools for documents straight from your AI agent. Connect with your own API key. CloudPDF provides APIs for creating, uploading, managing, and securely sharing PDF documents and webhooks.

## Option A — via MCP (recommended)
Remote MCP endpoint (HTTP, streamable): `https://api.mcp.ai/p_cloud_pdf?ms=1787295720000`
Add it as a custom/remote MCP connector in your client (Claude, Cursor, VS Code…), then authenticate when prompted. Once connected, ask the agent to use the server's tools (e.g. `cloud_pdf_create_webhook`).

## Option B — via direct REST API
Base URL: `https://api.mcp.ai/api/cloud_pdf`
Auth: `Authorization: Bearer sk_live_…` — create a workspace API key at https://mcp.ai/settings/api-keys
Discover endpoints: `GET https://api.mcp.ai/api/cloud_pdf/_endpoints`

### Endpoints
- `POST https://api.mcp.ai/api/cloud_pdf/create/webhook` — Create a CloudPDF webhook subscription for selected document, collection, tracker, lead, or file-processing events.
  - body: { url: string, name: string, events?: string[], secret?: string, headers?: object }
- `POST https://api.mcp.ai/api/cloud_pdf/delete/document` — Permanently delete one known CloudPDF document by UUID. This destructive operation is irreversible, and CloudPDF provides no recovery endpoint.
  - body: { document_id: string }
- `POST https://api.mcp.ai/api/cloud_pdf/delete/webhook` — Delete one CloudPDF webhook subscription by its decimal ID.
  - body: { webhook_id: string }
- `POST https://api.mcp.ai/api/cloud_pdf/get/account` — Return the connected CloudPDF organization's plan, allowances, and current upload, view, and storage usage.
- `POST https://api.mcp.ai/api/cloud_pdf/get/document` — Retrieve one CloudPDF document by ID, including metadata, default permissions, and current file processing status.
  - body: { document_id: string }
- `POST https://api.mcp.ai/api/cloud_pdf/get/document/file` — Retrieve one known CloudPDF file version and its processing status. This returns file metadata, not the PDF bytes.
  - body: { file_id: string, document_id: string }
- `POST https://api.mcp.ai/api/cloud_pdf/get/webhook` — Retrieve one CloudPDF webhook subscription by its ID.
  - body: { webhook_id: string }
- `POST https://api.mcp.ai/api/cloud_pdf/list/webhooks` — Return all webhook subscriptions configured for the connected CloudPDF organization.
- `POST https://api.mcp.ai/api/cloud_pdf/update/document` — Update selected metadata or default-permission fields on a known CloudPDF document without requiring unchanged values to be resent.
  - body: { name?: string, tags?: string[], parent_id?: string, description?: string, document_id: string, clear_description?: boolean, default_permissions?: object }
- `POST https://api.mcp.ai/api/cloud_pdf/update/webhook` — Update selected fields of a CloudPDF webhook subscription without requiring unchanged values to be resent.
  - body: { url?: string, name?: string, events?: string[], secret?: string, headers?: object, webhook_id: string }

## Example prompts
- "What can I do in CloudPDF?"
- "Show me a summary of my CloudPDF account"

## More
- Page: https://mcp.ai/cloud_pdf
- Agent spec (llms.txt): https://mcp.ai/cloud_pdf/llms.txt
- Postman collection: https://mcp.ai/cloud_pdf/postman.json
