Connect embd to an AI agent and it can turn whatever data it is holding — a CSV, query results, a scraped table, computed metrics — into a hosted chart, then hand back a link and a ready-to-paste <iframe>. No chart editor, no export step, no leaving the conversation.
Create an API key on your account page. Keys start with embd_sk_. API access is free during the beta.
claude mcp add embd -e EMBD_API_KEY=embd_sk_... -- npx @embd/mcp
Add to claude_desktop_config.json, then restart the app:
{
"mcpServers": {
"embd": {
"command": "npx",
"args": ["@embd/mcp"],
"env": { "EMBD_API_KEY": "embd_sk_..." }
}
}
}Cursor and other MCP clients take the same shape — a command of npx, one argument, and the key in env. The package is bundled for plain Node 18+ with zero dependencies, so there is no install or build step.
create_chart — data in (CSV text or an array of row objects), a hosted chart out. Optional kind, title, axis columns, theme.create_doc — publish HTML or markdown as a hosted, embeddable page.list_charts — every embed the key owns, newest first.delete_chart — permanently delete one, by id.Published embeds are public: anyone with the URL can view them. Pass publish: false to either create_ tool to save a private draft instead.
This is the one constraint worth knowing before an agent generates a page. create_doc with format: "html" renders inside a sandboxed frame with scripts disabled — so scripts never run, inline event handlers never fire, and forms cannot submit. A page that depends on them publishes successfully and then does nothing.
What does work, and covers most reports: layout, all CSS including animations and media queries, images, web fonts, tables, and inline SVG. Pre-render anything interactive. A chart is the common case, and embd already renders those — so use create_chart and embed the result, rather than shipping a charting library and a <canvas> that will never paint.
create_doc tells the agent when the content it sent needs something the sandbox drops, with line numbers, so it can correct itself without a human noticing a dead page first.
EMBD_API_KEY — required. The server exits immediately without it.EMBD_API_URL — override the API base URL.