Reporting agents
The weekly summary that people actually open
An agent that already writes the Monday update can put the number beside the prose. One call per chart, dropped into the email or the Slack post as an image.
"type": "line"A chart image, from one call
Agents produce numbers all day and cannot draw a single one of them. Post the data and a chart spec; get back a rendered chart at a stable URL. One call, one artifact, 1 credit.
No subscription — pay in Ounie credits
There is no upstream provider, no headless browser and no job to poll. The chart is drawn from scratch inside the request and the call returns the finished image.
Each picture below was drawn by the same renderer your API call runs, when this page loaded. Nothing here is a mockup, so the gallery cannot drift from the product.
barComparing a magnitude across a handful of named things.lineChange over time, where the shape of the trend is the point.areaA single accumulating quantity read against its zero baseline.stackedBarA total AND its composition, when both matter.horizontalBarRanking things whose names are too long for an x axis.donutParts of one whole, when there are few enough parts to compare.pieThe same job as a donut, without a total in the middle.scatterWhether two measures move together at all.Dark is not the light theme inverted — it is the same eight hues stepped again for a dark surface and checked against it. Series one means the same series in every theme.
Graph-paper cream. The default, and the one that survives being pasted into anything.
"theme": "light" — one word in the spec.
An agent has numbers and no way to draw them. Four rails reach the same renderer, and every one of them refuses rather than overdraws.
REST
curl -s https://charts.ounie.com/api/charts \
-H "Authorization: Bearer cht_live_…" \
-H "Content-Type: application/json" \
-d '{
"type": "bar",
"title": "Revenue by quarter",
"data": {
"labels": ["Q1","Q2","Q3","Q4"],
"series": [{ "name": "Revenue", "values": [42,58,51,74] }]
}
}'MCP
{
"mcpServers": {
"chartsmith": {
"type": "http",
"url": "https://charts.ounie.com/api/mcp?api_key=cht_live_…"
}
}
}Tools: render_chart · get_chart · list_charts · delete_chart · list_chart_types · get_credit_balance · get_pricing · whoami
POST /api/charts with a session cookie or a cht_live_ key — in the header or as ?api_key=.
Costs 1 credit. Reads are free.
One HTTP server at /api/mcp. Works with Claude, Cursor, the AI SDK, and the Ounie AI Team — which cannot set a static header, so the key rides the URL.
No account at all. POST /api/x402/render answers 402 with terms; sign and retry with an X-Payment header.
$0.012 in USDC on Base, per chart.
The same renderer with a live preview, so you can get a spec right by eye before you wire it into anything.
Draw one nowAn agent can never overdraw. Credits are reserved server-side before anything renders; a short wallet gets a 402 with the amount needed and a link to top up, never a surprise bill.
Full API docs →No plan, no seat, no monthly minimum. Ounie credits are a shared wallet across every Ounie app, and they do not expire.
One dollar, one hundred credits
The coral tick is one chart. 1 credit — a cent — from the same Ounie wallet every other Ounie app draws. No plan, no minimum, no monthly anything.
Credits are reserved before the render and settled on delivery. If the render fails, the reserve goes back to the exact pools it came from.
Mostly software, on behalf of a person who is about to read something.
Reporting agents
An agent that already writes the Monday update can put the number beside the prose. One call per chart, dropped into the email or the Slack post as an image.
"type": "line"Analytics copilots
A copilot returns a table today. The same rows become a bar chart the reader understands in a second — and the table still ships alongside it, in the response.
"type": "bar"Ops and monitoring
Latency crossed a threshold. Render the last hour as an area chart and attach it to the page — the on-call engineer sees whether it is a spike or a slope before opening a dashboard.
"type": "area"Finance and BI workflows
Quarterly revenue by product line as a stacked bar, in the brand theme, at exactly 1600 × 900 for the deck. Same call every quarter, new numbers.
"theme": "brand"Research and scraping pipelines
A crawler ends with a list of counts. One more call and the run produces a ranked horizontal bar chart that a human can skim instead of a CSV nobody opens.
"type": "horizontalBar"Product and support
Embed a rendered image where a chart library would need a client bundle, a render pass and a theme. Post the numbers, get a URL, put it in an img tag.
"format": "png"null and the line breaks there rather than pretending.One credit a chart, from the wallet you already have. Nothing to install and nothing to configure.