Doconda

Crie, revise e edite arquivos editáveis do Word, PowerPoint, Excel e PDF a partir de qualquer agente de IA. Remoto (Streamable HTTP, login com OAuth) ou local (npx).

Servidor MCP hospedado

npx add-mcp 'https://api.eu.doconda.com/mcp'

Instala no Claude Code, Codex, Cursor e outros

Documentação

MCP server

Doconda for any MCP client, on your computer or remote.

Connect any MCP client to Doconda's MCP server so its agent can convert, create and edit documents with Doconda's tools. The server runs on your computer or remotely:

LocalRemote
What it isnpx -y @doconda/mcp, on your computer (stdio)https://api.eu.doconda.com/mcp (Streamable HTTP)
AuthenticationDOCONDA_API_KEY variableSign in with your Doconda account (OAuth), or an Authorization: Bearer ak_… header
Can read files from your diskYes (upload_file with path)No: files are uploaded by URL or as base64
ForClaude Desktop, Claude Code, Cursor, Codex, scriptsClaude connectors, Claude Code, Cursor, n8n, Le Chat, cloud-hosted agents

Capabilities

  • Create a Word, PowerPoint, Excel or PDF file, or an artifact, from a request or from Markdown the agent wrote.
  • Edit a file: only what is asked changes, and get_report lists every change.
  • Convert a file to another format with no AI, for example any file to Markdown so the agent can read it.
  • Read what people saved in an artifact, such as poll votes.

Setup

The local server uses a Doconda API key in DOCONDA_API_KEY. The remote server takes the same key as a header, or signs you in with OAuth. Create keys in the dashboard (API keys).

Local

Any client that launches servers over stdio. The typical configuration:

{
  "mcpServers": {
    "doconda": {
      "command": "npx",
      "args": ["-y", "@doconda/mcp"],
      "env": { "DOCONDA_API_KEY": "ak_eu_…" }
    }
  }
}

The local server needs Node.js 22 or later. It runs on your computer, so upload_file can read a file by its absolute path.

Remote

Any client with Streamable HTTP transport, at https://api.eu.doconda.com/mcp. There are two ways to authenticate:

  • Sign in (OAuth) — Add the URL and nothing else. The client opens Doconda in your browser; you sign in, choose the organization and project it works in (and whether it may only read) and approve. Clients that support MCP authorization do this on their own: Claude, Claude Code, Cursor, VS Code, MCP Inspector.
  • API key — Send Authorization: Bearer ak_eu_… on every request. Use it for clients without OAuth and for your own backend.
URL:     https://api.eu.doconda.com/mcp
Header:  Authorization: Bearer ak_eu_…   (only with an API key)

Specific clients

[card] Claude Desktop and Claude Code

[card] Cursor

[card] OpenAI Codex

[card] LangChain

[card] CrewAI

[card] n8n

[card] Hugging Face (smolagents)

Cursor

In .cursor/mcp.json (this project) or ~/.cursor/mcp.json (all projects):

{
  "mcpServers": {
    "doconda": {
      "command": "npx",
      "args": ["-y", "@doconda/mcp"],
      "env": { "DOCONDA_API_KEY": "${env:DOCONDA_API_KEY}" }
    }
  }
}

For the remote server, signing in with your Doconda account: "doconda": { "url": "https://api.eu.doconda.com/mcp" }. With an API key instead: "doconda": { "url": "https://api.eu.doconda.com/mcp", "headers": { "Authorization": "Bearer ${env:DOCONDA_API_KEY}" } }.

OpenAI Codex

In ~/.codex/config.toml (used by the CLI and the editor extension):

[mcp_servers.doconda]
command = "npx"
args = ["-y", "@doconda/mcp"]
env = { DOCONDA_API_KEY = "ak_eu_…" }

Your own server

If you already run an MCP server, createServer from @doconda/mcp returns a Server from the official MCP SDK with Doconda's tools, ready to connect to your transport:

import { Doconda } from "@doconda/sdk"
import { createServer } from "@doconda/mcp"

const server = createServer(new Doconda())

Pass { localFiles: true } as the second argument to let upload_file read files from disk.

Tools

The server exposes the eight Doconda tools; see the tools for what each one does. A failed call comes back with isError: true and { "error": "<code>", "message": "…" } as its text, so the agent can read the code and correct itself.

What a connected app can do

An app connected with OAuth gets one of two permissions, chosen when you approve it:

PermissionTools
documents:readlist_documents, get_document, get_report, read_artifact_data
documents:writeAll of them, also create_document, upload_file, convert_file and edit_document

A read-only app gets 403 with insufficient_scope on a tool that writes, and the client can ask you to approve more. A connected app uses its project's documents and balance. You can see and disconnect apps in the dashboard under Connected apps. A connection also ends when the person who approved it leaves the organization, or after 30 days without use.

For MCP client developers

  • Without a token, every request (initialize and tools/list included) gets 401 with WWW-Authenticate: Bearer resource_metadata="https://api.eu.doconda.com/.well-known/oauth-protected-resource/mcp".
  • The authorization server is https://api.eu.doconda.com (metadata at /.well-known/oauth-authorization-server): authorization code with PKCE S256; the resource parameter is required and must be the server URL; Client ID Metadata Documents or dynamic registration (/oauth/register); redirects over HTTPS or to localhost (any port); iss in the authorization response.
  • Access tokens last 1 hour, and refresh tokens rotate on every use. Reusing a spent refresh token disconnects the app, except for a retry: for 30 seconds, the same client can redeem its last refresh token again and gets a new pair.
  • With an OAuth token, a request carries at most one tools/call; a batch with more gets 400.
  • Tokens issued for the MCP server only work there: the REST API (/v1) refuses them and takes API keys.
  • The tool list without signing in: https://api.eu.doconda.com/.well-known/mcp/server-card.json.
  • Only POST is accepted; GET and DELETE get 405.

Troubleshooting

  • The call times out before the document is ready — create_document and edit_document return only when the document is finished, which can take several minutes. Raise the client's per-call timeout (for example to 300 s).
  • 401 on every request — The remote server needs a token: sign in through the client, or send Authorization: Bearer ak_eu_….
  • upload_file answers Give url or content_base64. — Only the local server reads files from disk. With the remote server, pass a public url, or content_base64 with filename.
  • The download link stopped working — File links expire after 5 minutes; the agent calls get_document for fresh ones.

Useful links

This documentation is built and hosted on Mintlify, a developer documentation platform.