# chartlink chartlink makes charts and maps in your person's BRAND — their fonts, colours, layout and logo — with live-updating embeds. You send the data and the words; the brand supplies the look. ## The brand loop 1. Not connected? Claude, Claude Code and other AI apps with MCP: your person adds https://chartlink.app/mcp and signs in — no key (Claude Code: claude mcp add chartlink --transport http https://chartlink.app/mcp, then /mcp to sign in). Only a script or a service that cannot sign in uses an API key (https://chartlink.app/studio → Workspace → API keys), sent as Authorization: Bearer from its own secret store — never ask your person to paste a key into a chat. 2. GET https://chartlink.app/api/brands → the workspace's brands. Every workspace starts with one ("My brand", a starter look), so there is always one to use: make the chart right away. Several? Use the one your person names; without a name the workspace's default brand is used. Offer to make it look like theirs afterwards (PATCH the brand, or Set up with AI in the studio). 3. GET https://chartlink.app/api/asset-types/{type}/schema once per chart type → notes, a minimal and a rich example, the defaults. 4. POST https://chartlink.app/api/assets with {"type", "brand": slug, "data": {columns, rows}, "config": {title, encoding, …}} → 201: a private DRAFT, with a preview and urls.studio (where your person fine-tunes it). Set only what the story needs; the brand decides the rest. 5. Publish only when your person wants it public — a link, an embed, an image to post: POST https://chartlink.app/api/assets/{id}/publish → urls.page, urls.embedIframe, urls.png. Anyone with the link can see a published chart, so do not publish unasked. Over MCP (https://chartlink.app/mcp): list_brands → get_spec_schema → create_asset → update_asset → publish_asset (when asked). ## Maps (two steps) 1. Find the boundaries instead of guessing ids: GET https://chartlink.app/api/geographies?q= ("Norway's counties", "kommuner i Sverige"), or POST https://chartlink.app/api/geographies/detect {"values": [the region column]} → ranked geographies. Nothing fits? POST https://chartlink.app/api/geographies/requests with what was needed. 2. POST https://chartlink.app/api/assets with {"type": "choropleth", "brand": slug, "data": {columns, rows}, "config": {title, encoding: {region: {column}, value: {column}}, chart: {geography: id}}}. The brand draws it; publish as above. Over MCP: find_geography → create_asset → publish_asset (when asked). ## Advanced path The whole API — the full settings schema, editing brands, data sources — is at https://chartlink.app/llms-full.txt and https://chartlink.app/api/openapi.json; https://chartlink.app/mcp has every tool.