Developers

Built for developers, and their agents

A JSON API that does everything the console does, signed webhooks for every click, and an MCP server so your AI agent can make links too.

Pleasant to build on

The console’s own routes

Every screen in the console is an API call first. Same routes under /api, same checks, same permissions, in JSON.

Errors that name the field

Every 400 has the same shape, with the field at fault in details.fields. A misspelled key is refused, never quietly ignored.

Send only what changes

Updates are partial: leave a field out and it stays, send null and it clears.

Limits you can see

RateLimit headers on every answer. A 429 says which window ran out and when to retry.

Retries that count once

Report a conversion with your own id and it counts once, however many times it is sent.

A reference cut to your key

An OpenAPI document generated from the routes, showing only the calls your permissions allow.

What it can do

Links

Create, list, change, disable and delete: destination, back-half, domain, tags, go-live and expiry, click limit, password, UTM and the chat preview.

QR codes

Any link’s code as SVG or PNG, plain or in your colours and logo.

Analytics

Clicks by day, unique visitors, QR scans, countries, devices, browsers and referrers. CSV export included.

Tags

By person, team, campaign, channel, product or region, with the numbers read by tag.

Conversions

Report a sign-up or a sale against the click that led to it, with an amount and your order id.

Webhooks and GA4

A signed JSON POST for every human click, or the click sent to your Google Analytics 4 property. Retried for hours when your side is down.

An MCP server for your agents

Claude Code, Cursor or any agent that speaks the Model Context Protocol over HTTP makes and manages your links. 7 tools, each the console’s own action.

Nothing to install

One HTTP address and an API key in two headers. Claude Code takes it in one command; Cursor, Windsurf and other clients in a few lines of settings.

Exactly what its key allows

Every tool runs the console’s own action under that key’s permissions. A key that can only view links gives an agent that can only view links.

The same rules as a person

Safety checks, plan allowances, domain and back-half rules all apply. A refusal comes back in words the agent can act on.

Ask in plain words

“Shorten this for the autumn campaign on go.northwind.com.” “Which links point at the old pricing page?” “Turn off the summer sale link.”

The tools

List domains

The domains the organisation may make links on, its own and the shared ones, with how many links the plan has left this period. Needs Links · View.

Check a back-half

Whether a back-half is free on a domain, by the same rules a create applies. Needs Links · Create.

Create a link

Make a short link from a destination, on your own domain or a shared one, with a chosen or generated back-half, tags, an expiry and the rest of the link form. Needs Links · Create.

Read a link

One link’s settings and state, with its last 30 days of clicks, visitors and QR scans. Needs Links · View.

List links

The organisation’s links, newest first, searched and filtered. Needs Links · View.

Change a link

Change a link’s destination or settings; what is left out keeps its value. Needs Links · Edit.

Disable or enable a link

Turn a link off, keeping its history, or back on. Needs Links · Edit.

Not yet: sign-in by OAuth (the server takes an API key), and deleting, routing, QR codes and longer analytics, which stay in the console and the API.

Keys, signatures and signed webhooks

An API key per job

For the organisation or one person, with only the permissions it needs and never more than its maker holds. It expires when you choose; rolling or revoking it is one click.

Two headers, or a signature

Send the key’s ID and secret in two headers, or sign the request with HMAC-SHA256 so the secret never travels. A browser session never counts.

Webhooks you can check

Every delivery is signed with its own secret and a timestamp, so your server can refuse anything forged or replayed.

The reference lives in the console

Every call with its fields and answers, the webhook body and how to check it, the MCP setup and the errors: in the console once you are signed in.