Integration

Doctly integration

Doctly converts PDFs, DOCX files and images to Markdown, extracts structured data with custom extractors, and answers questions over collections of indexed files with page-level citations. An agent can convert a document (from a file or a URL) and wait for the result, run an extractor on a file, list, read and delete documents, list, rename and delete extractors, create and manage collections and upload files to them, and ask one-shot questions or hold multi-turn chat sessions over them. Results come back as temporary signed download links (output_file_url), not inline text. Streaming answers, the EU host (api.eu.doctly.ai) and the dashboard routes of the live spec (chat artifacts, extractor remix and upgrade, usage analytics, per-role output links) are not exposed. Authentication is a Doctly API key (dashboard, Settings, API Keys) sent as a Bearer token.

Ask it in chat

Say what should happen.
The workflow builds itself.

When this happens, do that in Doctly.Built from the 24 Doctly tools below, on the connection you add once.

What you can do with Doctly

Each of these is one operation on one endpoint, available both as a workflow step and as a tool an AI agent can call on its own. Nothing bundles several operations into one action, so what a run did stays readable afterwards.

Most endpoints run on the free plan. A few, mainly the ones that publish on your behalf, need a paid plan.

Collection, 6 operations

  • create_collectionCreate collectionPOSTCreates a collection: a named set of files that query_collections and chat sessions answer from. Names are unique in the account. Returns the collection id.
  • delete_collectionDelete collectionDELETEPermanently deletes a collection with all its files and their indexed content. confirmation must be exactly 'delete <collection name>'. Irreversible.
  • get_collectionGet collectionGETGets one collection: name, number of files, total size and how many files are pending, processing, ready, failed or stored. A collection the account cannot access answers 404.
  • list_collectionsList collectionsGETLists the collections the account owns, plus shared public ones: id, name, file count, total size and files per status. Cursor paging: pass the last id as after_id while has_more is true.
  • query_collectionsQuery collectionsPOSTAnswers one question from the files of one or more collections, with citations to the source pages. Keeps no conversation; use create_chat_session for multi-turn. Returns answer (Markdown) and citations.
  • update_collectionUpdate collectionPUTRenames a collection. The new name must be unique in the account.

Extractor, 5 operations

  • delete_extractorDelete extractorDELETEDeactivates (soft-deletes) an extractor: it can no longer be run and its slug becomes free, while past results stay readable. Cannot be undone; some catalog extractors cannot be deleted.
  • get_extractorGet extractorGETGets one extractor by id: name, slug, description and price (cost_type PER_PAGE or PER_DOCUMENT, cost_credits).
  • list_extractorsList extractorsGETLists the account's active extractors: id, name, slug (what run_extractor takes), description and price (cost_type PER_PAGE or PER_DOCUMENT, cost_credits). Offset paging with skip and limit.
  • run_extractorRun extractorPOSTRuns a custom extractor (by slug) on a file; returns the document with output_file_url, a temporary link to the structured result. Charges the extractor's cost_credits. Waits for the job and returns the finished result; gives up after 10 minutes.
  • update_extractorUpdate extractorPUTRenames an extractor or changes its slug or description; only the fields sent change. The extraction logic itself is edited in the Doctly dashboard. Some catalog extractors cannot be modified.

Collection file, 4 operations

  • delete_collection_fileDelete collection fileDELETEPermanently deletes a file from a collection, with its stored versions and indexed content. Irreversible.
  • get_collection_fileGet collection fileGETGets one file of a collection and its processing status (pending, processing, ready, failed or stored); a file can be queried once ready. last_error explains a failure.
  • list_collection_filesList collection filesGETLists the files of a collection with their status, version, size and pages. Filter by status or path text; offset paging with skip and limit; count is the total and has_more says if more remain.
  • upload_collection_fileUpload collection filePOSTUploads a file (up to 100MB) to a collection, where it is converted and indexed; returns it with status pending. Read it with get_collection_file until status is ready (or failed).

Document, 4 operations

  • delete_documentDelete documentDELETEPermanently deletes a document with its original file and its processed output. Irreversible.
  • get_documentGet documentGETGets one document by id: status (QUEUED, PENDING, PROCESSING, COMPLETED, FAILED or EXPIRED), progress, and once COMPLETED fresh signed links to the result (output_file_url) and the original (file_url).
  • list_documentsList documentsGETLists the account's documents (conversions and extractions): file name, size, pages, status, accuracy, extractor and uploader. Offset paging with skip and limit (max 100); count is the total.
  • process_documentProcess documentPOSTConverts a PDF, DOCX or image (file or url, up to 100MB) to Markdown, or runs an extractor on it (extractor_id). Returns output_file_url, a temporary link to the result. Waits for the job and returns the finished result; gives up after 10 minutes.

Chat session, 3 operations

  • create_chat_sessionCreate chat sessionPOSTStarts a multi-turn chat session over one or more collections; each send_chat_message is answered with the earlier turns as context. Visible to every key of the account. Returns the session id.
  • delete_chat_sessionDelete chat sessionDELETEPermanently deletes a chat session and its messages. Irreversible.
  • list_chat_sessionsList chat sessionsGETLists the account's chat sessions, most recently active first, with their title and collections. Cursor paging: pass the last id as after_id while has_more is true.

Chat message, 2 operations

  • list_chat_messagesList chat messagesGETLists a chat session's messages in chronological order: role (user or assistant), content, citations and status. Cursor paging: pass the last message id as after_id while has_more is true.
  • send_chat_messageSend chat messagePOSTSends a question in a chat session and returns the assistant's answer (Markdown) with citations; the session's earlier turns are used as context.

Use Doctly from Claude Code, Cursor or Codex

Connect Doctly in LiveContext, create an API key in Settings, then add the LiveContext MCP server to your client. Its Doctly operations become tools the client can call, next to every other integration you connected.

Claude Code
claude mcp add --transport http livecontext https://livecontext.ai/mcp --header "X-API-Key: YOUR_API_KEY"
Codex (~/.codex/config.toml)
[mcp_servers.livecontext]
url = "https://livecontext.ai/mcp"

[mcp_servers.livecontext.http_headers]
"X-API-Key" = "YOUR_API_KEY"
Cursor, Claude Desktop and other JSON configs
{
  "mcpServers": {
    "livecontext": {
      "type": "http",
      "url": "https://livecontext.ai/mcp",
      "headers": {
        "X-API-Key": "YOUR_API_KEY"
      }
    }
  }
}

Set up the MCP server step by step

How to connect Doctly

  1. Create your workspace

    Sign up free. Nothing to install.

  2. Connect Doctly once

    Add your Doctly connection in Settings. Every tool from this integration reuses it, and secrets are encrypted at rest and visible only to you.

  3. Describe the job in chat

    The workflow builds itself in front of you and picks the endpoints it needs. Drag the steps yourself on the canvas whenever you would rather be explicit.

Doctly integration FAQ

What can you do with the Doctly integration?

LiveContext exposes 24 operations on Doctly, covering collection, extractor, collection file and document.

Popular integrations

Browse the whole catalog