Chartsmith

A chart image, from one call

Charts your agent
can actually draw.

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

POST /api/charts
 
Revenue by quarter020406080Q1Q2Q3Q4
01How it works

Numbers in. A picture out.

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.

Your numberslabels + seriesOne POST/api/chartsDrawn server-sideSVG → PNGA URLsigned, 24h1 credit · about a tenth of a second · no browser anywhere in the loop
02Eight forms

Every one of these is real output.

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.

  • Support tickets by channelLast 30 days05001,0001,5001,284942610388121EmailChatPhoneIn-appSocial
    barComparing a magnitude across a handful of named things.
  • Weekly active agentsTwo cohorts, 12 weeksSelf-serveSales-led0100200300400500600W1W2W3W4W5W6W7W8W9W10W11W12
    lineChange over time, where the shape of the trend is the point.
  • Requests servedPer hour, one day010K20K30K000204060810121416182022
    areaA single accumulating quantity read against its zero baseline.
  • Revenue by product lineQuarterly, USDPlatformServicesSupport$0$250K$500K$750K$1MQ1Q2Q3Q4
    stackedBarA total AND its composition, when both matter.
  • Top referrersSessions, last 7 days02,5005,0007,50010,000Hacker NewsGoogle organicLinkedInProduct HuntNewsletterDirect8,4206,3104,1803,2602,1401,680
    horizontalBarRanking things whose names are too long for an x axis.
  • Spend by categoryThis monthComputeStorageBandwidthSupport54.5%24.2%14.5%6.9%$88.5KTotal
    donutParts of one whole, when there are few enough parts to compare.
  • Traffic by deviceMobileDesktopTablet62%31%7%
    pieThe same job as a donut, without a total in the middle.
  • Latency against payload sizeEach point is one requestCachedUncached0100200300400050100150Latency (ms)Payload (KB)
    scatterWhether two measures move together at all.
03Themes

Three surfaces, one palette.

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.

Revenue by product lineQuarterly, USDPlatformServicesSupport$0$250K$500K$750K$1MQ1Q2Q3Q4

"theme": "light" — one word in the spec.

04Built for agents first

For developers & AI agents

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

01

REST

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.

02

MCP

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.

03

x402

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.

04

Dashboard

The same renderer with a live preview, so you can get a spec right by eye before you wire it into anything.

Draw one now

An 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 →
05Credit math

A cent a chart.

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.

Render a chart
1 credit
Read one back, re-sign its URL
free
List, download, delete
free
A spec that can't be drawn
free — refused before it costs

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.

06Use cases

Who is asking for a picture.

Mostly software, on behalf of a person who is about to read something.

  • 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"
  • Analytics copilots

    Answer a question, show the shape of it

    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

    An alert with the trend attached

    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

    Board slides without a spreadsheet round-trip

    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

    Turn a scrape into a picture

    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

    Charts inside the product

    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"
07Questions

Straight answers.

01What exactly comes back?
A signed URL to a PNG (or an SVG, if you ask for one), valid for 24 hours, plus the chart’s dimensions and a flat table of the values you sent. Re-signing the URL later is free, so nothing is lost when a link expires.
02Does it ever change my numbers?
No. Nothing is smoothed, interpolated, rounded into a nicer shape, or inferred. Bar and area charts always start from a zero baseline — a truncated bar axis misstates the ratio between bars, which is the one thing a bar chart exists to show. If a value is missing, send null and the line breaks there rather than pretending.
03What happens if my data is malformed?
You get a 400 that says which series is wrong and what to send instead, and you are not charged. Validation runs before any credit is reserved, so a mismatched label count never costs anything.
04Why only eight series?
Because the palette is eight slots and is never cycled. A ninth series would have to reuse a colour, and two different things in the same colour is a chart that lies. Fold the tail into an “Other” series, or split it into more than one chart.
05Is it readable for colourblind viewers?
The palette was chosen by running every candidate ordering through colour-vision simulation and keeping only the orderings that cleared the separation thresholds in both light and dark. Charts with two or more series always carry a legend, scatter series get distinct marker shapes as well as colours, and every response includes the value table — so identity never rests on colour alone.
06Do I need a subscription?
No. There are no plans and no tiers. Each chart draws one credit from your shared Ounie wallet, and credits never expire. Agents with no Ounie account can pay per call in USDC instead.
07How fast is it?
There is no upstream provider and no headless browser — the chart is drawn from scratch on our own CPU, typically in well under a second, and the call returns the finished image. Nothing to poll.
08Can I use the images commercially?
Yes. The chart is your data, drawn. It is yours, with no attribution required.

Give your agent a pencil.

One credit a chart, from the wallet you already have. Nothing to install and nothing to configure.