A tiny JSON spec in → a finished, retina-quality chart out. Native SVG in milliseconds, no headless browser, deterministic — same spec, same chart, every time — and 100% local via MCP.
Free with your agent — the MCP is free forever, unlimited. Plans only exist for hosted chart URLs.
{"type":"dashboard","title":"ACME SaaS — Executive Snapshot · rendered by api.slickfast.com in one call","background":"#0f172a","palette":"Vibrant","layout":{"cols":4,"tileHeight":230},"tiles":[{"chart":{"type":"kpi","label":"MRR","value":48250,"valuePrefix":"$","delta":12.4,"sparkline":[31,34,33,38,41,44,48]}},{"chart":{"type":"kpi","label":"Churn","value":2.1,"valueUnit":"%","delta":-0.6,"deltaGoodWhen":"down"}},{"chart":{"type":"gauge","title":"NPS","value":62,"max":100}},{"chart":{"type":"donut","title":"Revenue mix","data":{"labels":["Pro","Scale","Services"],"series":[{"values":[58,31,11]}]},"valueUnit":"%"}},{"chart":{"type":"area","title":"Revenue trend ($k)","data":{"labels":["Jan","Feb","Mar","Apr","May","Jun"],"series":[{"name":"Revenue","values":[31,34,38,41,44,48]}]}},"span":[2,1]},{"chart":{"type":"heatmap","title":"Signups by day","columns":["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],"rows":["W1","W2","W3","W4"],"values":[[12,18,14,22,30,8,5],[15,21,19,27,34,9,6],[18,25,22,31,41,12,8],[24,29,27,38,52,15,11]]},"span":[2,1]},{"chart":{"type":"funnel","title":"Signup → paid","stages":[{"label":"Visitors","value":42000},{"label":"Signups","value":6100},{"label":"Activated","value":3400},{"label":"Paid","value":940}]},"span":[2,1]},{"chart":{"type":"waterfall","title":"Cash flow ($k)","start":120,"steps":[{"label":"Revenue","value":48},{"label":"Infra","value":-6},{"label":"Payroll","value":-38},{"label":"Marketing","value":-11},{"label":"Other","value":-4}],"totalLabel":"End Q2"},"span":[2,1]}]}
Every number below is the point. (And yes — these cards are SlickFast output too.)
Hand-writing SVG or matplotlib code: 2,000+ tokens, then the retries when it doesn't render.
Most chart-to-image pipelines quietly ship ~300 MB of Puppeteer. SlickFast renders pure in-memory.
The alternative: 8 separate renders plus layout math. A dashboard here is one tool call.
The MCP renders and rasterizes on your machine. Nothing is sent anywhere.
{type, data} alone is a finished, well-designed chart.bar → line, change a palette, resize for a slide — re-render. No code rewrites.Nothing below is a mockup — each board is a single SlickFast render: one spec, one call, many charts tiled into one image. Tiles span columns and rows (wide, tall, hero-sized), so a board mixes big charts with small stats. Click any image to view it full size.
paletteSingle charts, straight out of the engine. 6 flat palettes and 12 nested themes are built in — name one in the spec and the chart restyles itself, background to legend.










presetThe same chart, re-laid-out by naming a preset — no layout math. Share Card (1.91:1) for Slack/X/LinkedIn link previews, Wide 16:9 for slides, Square and Portrait for feeds, Tall 9:16 for Stories.









The MCP runs on your machine via npx — no clone, no build, nothing leaves your machine. The hosted API turns a spec into a public image URL.
{
"mcpServers": {
"slickfast": {
"command": "npx",
"args": ["-y", "@slickfast/mcp"]
}
}
}
@slickfast/mcp on npm
— a self-contained bundle that npx fetches on first run. No clone, no
build step, no global install; needs only Node.js. Renders 100% on your machine.SPEC='{"type":"bar","data":{"labels":["Q1","Q2","Q3"],
"series":[{"values":[12,19,8]}]}}'
curl "https://api.slickfast.com/chart.png?spec=$(jq -rn --arg s "$SPEC" '$s|@uri')" \
-H "Authorization: Bearer sf_your_key" \
--output chart.png
sf_ and come from any plan
(Free included). Send via Authorization: Bearer,
X-API-Key, or ?key= for embeddable URLs.
/chart.svg returns vector instead.Then ask your agent to "render a bar chart of last quarter's revenue" or "build a dashboard with an MRR tile, a signups funnel, and a usage heatmap."
A render is one chart or one whole dashboard. CDN-cached — one render can serve any number of views.
The MCP runs on your machine — free forever, unlimited renders, all 47 types, no account, no card, nothing sent anywhere. The plans below are only for the hosted API: public chart URLs rendered and cached by api.slickfast.com, for embedding in Slack, email, or a webpage. If you never need a public URL, you never need a plan.
SLICKFASTROCKS at checkout.Need more than 50k renders, or a commercial license for the engine? Write to feedback@slickfast.com.
SlickFast is open source under AGPL-3.0. Using it with your agent is free, the charts you make are yours, and running it in-house is free. Want SlickFast inside a commercial product or service? Commercial licenses are available — feedback@slickfast.com.
One chart URL that re-renders with fresh data every time it's viewed. Embed it in docs, wikis, dashboards, READMEs — anywhere an image loads, it's always current.
A chart in the inbox that's current at every open, not a stale screenshot — weekly-numbers emails, usage digests, newsletter data-viz.
Edit a spec in the browser and watch the chart re-render as you type.
The engine grows steadily — 47 types today, and the tiling system keeps getting more expressive.
Everything an agent — or you — needs to know, in five short docs.