Doconda
Create, review and edit editable Word, PowerPoint, Excel and PDF files from any AI agent. Remote (Streamable HTTP, OAuth sign-in) or local (npx).
Server MCP Terhosting
npx add-mcp 'https://api.eu.doconda.com/mcp'Terpasang ke Claude Code, Codex, Cursor, dan lainnya
Dokumentasi
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:
| Local | Remote | |
|---|---|---|
| What it is | npx -y @doconda/mcp, on your computer (stdio) | https://api.eu.doconda.com/mcp (Streamable HTTP) |
| Authentication | DOCONDA_API_KEY variable | Sign in with your Doconda account (OAuth), or an Authorization: Bearer ak_… header |
| Can read files from your disk | Yes (upload_file with path) | No: files are uploaded by URL or as base64 |
| For | Claude Desktop, Claude Code, Cursor, Codex, scripts | Claude 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_reportlists 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] 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:
| Permission | Tools |
|---|---|
documents:read | list_documents, get_document, get_report, read_artifact_data |
documents:write | All 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 (
initializeandtools/listincluded) gets401withWWW-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 PKCES256; theresourceparameter 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);issin 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 gets400. - 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
POSTis accepted;GETandDELETEget405.
Troubleshooting
- The call times out before the document is ready —
create_documentandedit_documentreturn only when the document is finished, which can take several minutes. Raise the client's per-call timeout (for example to 300 s). 401on every request — The remote server needs a token: sign in through the client, or sendAuthorization: Bearer ak_eu_….upload_fileanswersGive url or content_base64.— Only the local server reads files from disk. With the remote server, pass a publicurl, orcontent_base64withfilename.- The download link stopped working — File links expire after 5 minutes; the agent calls
get_documentfor fresh ones.
Useful links
- Doconda in your agent: every stack and the tools.
- doconda-examples on GitHub: ready-to-run scripts.
- Model Context Protocol: the protocol and its clients.
- API reference: the endpoints behind each tool.
This documentation is built and hosted on Mintlify, a developer documentation platform.