An AI writing tool with a public API and MCP server

By Jack Stovell X · Instagram · LinkedIn · published 2026-09-03 · updated 2026-09-25

Yes: ScriptGrain has both, and they are how ScriptGrain makes ChatGPT, Claude, Muse and any MCP client better at being you. A public REST API and a remote MCP server at mcp.scriptgrain.com, and they are on every plan, including Free. No upgrade required just to connect something. You mint a key, you point Claude or your own script at it, and the same voice profile that drives the web app is now sitting in your terminal.

That is the short answer. Here is the longer one, and why it matters more than it sounds like it should.

The problem with a voice profile that cannot leave the building

Here is the thing about most AI writing tools: the measured version of your style only exists inside their text box. You upload a sample, it builds a profile, and that profile lives exactly where the vendor's interface lives. The second you open a different editor, a different chat window, a different app entirely, the profile is gone. You are back to typing "write like me, casual but professional, punchy" into a prompt and hoping.

That is not a voice profile. That is a description of one.

ScriptGrain's 45 reference points, across eight layers from lexical choices and sentence syntax through to function words and cadence, get extracted once, from your actual writing, by a two-pass analysis that usually takes under a minute. And then they are queryable. An assistant like Claude can pull your profile, draft against it, and check the draft's Voice Match score, all without you touching the app. The profile becomes infrastructure, not a feature locked behind one login.

How to actually connect

If you are using Claude Code, it is one line:

`claude mcp add scriptgrain https://mcp.scriptgrain.com/mcp --transport http --header "Authorization: Bearer sg_live_<your-secret>"`

That key comes from Settings, then API, inside ScriptGrain. It starts `sg_live_`, and it is shown once, so save it somewhere sane. Send it as a bearer token for anything over REST.

Using claude.ai instead of Claude Code? Custom connectors there use an OAuth consent flow at mcp.scriptgrain.com. You sign in with your ScriptGrain account once (or paste a key, if you signed up with Google), the connector mints its own key, and it works from then on. The same endpoint works as a Meta Muse custom integration.

Other MCP clients: the endpoint is `https://mcp.scriptgrain.com/mcp` using streamable HTTP, with legacy SSE available at `/sse` if that is what your client expects. And if you would rather skip MCP altogether, the plain REST API is right there, same auth, same everything.

What the tools actually do

Thirty-six tools ship with the MCP server, and most of them are free on every plan. The core free ones: `list_profiles`, `get_profile`, `create_outline`, `check_voice_match`, `compare_voice`, `ai_detect`, `list_generations`, `get_generation`, `save_edit`, `get_billing`, `get_invoice`, `upgrade_plan`. Read, check, list, save. No credits spent.

Six spend credits or a slot: `create_profile` uses one extraction slot, `generate_content` costs one credit per variant up to 5,000 words (a single longer draft costs 2 or 3), `polish` and `humanize` cost one credit each on a text up to 5,000 words and 2 or 3 on a longer one (with a free skip if your text already passes the target), `mimic_brand` costs one brand-mimic credit and needs explicit consent first, and `rewrite_page` costs one credit per 1,500 words.

Two prompts ship built in: `write_in_my_voice` and `build_my_voice_profile`.

The loop worth memorising is `create_profile`, then `generate_content`, then `check_voice_match`, then `save_edit`. That is the whole product cycle, no interface required. And `save_edit` is not just a record; it feeds closed-loop learning, so the edits you keep making actually teach the system something.

Once a draft is in your voice, the next job is getting it into every other format you publish. We cover that in repurposing content in your voice. Notes, transcripts or a finished piece go in; every format comes out, all held to the same 45 measured reference points. A voice-match score then shows the voice survived the change.

A writing style API: one profile format for a person or a brand

A writing style API returns one JSON object, whether it's describing a person or a brand. That's the whole trick. `GET /v1/profiles/{id}` gives you back a `name`, a `status` and a `confidence_score` between 0 and 1, and once the profile is complete a written narrative and the same 45-attribute `attributes` object every time, split across eight groups: lexical, syntactic, tone and register, rhetorical, punctuation and format, function words, content patterns, quirks and cadence. Full schema is here: voice profile JSON schema.

Here's where the two paths split, briefly, before they merge again.

A person's profile comes from their own writing. You call `POST /v1/profiles` with a name and somewhere between 1 and 20 samples, each 50 to 5,000 words. Three or more pieces, roughly 3,000 words total, is what we recommend.

A brand's profile is built the same way, from the brand's own writing. Or, if nobody's got a folder of approved copy lying around, from the brand's public website with consent: `POST /v1/mimic`, one brand-mimic credit, and your explicit consent that you own the site or may use it. That second route matters more than it sounds like it should. Sometimes the brand voice just is the website, and that's fine.

And to be fair, once either profile exists, the distinction stops mattering. Same attributes object. Same endpoint. Same scoring. `POST /v1/voice-match` checks any text of 20 or more words against a profile and hands back a `voice_match_score` from 0 to 1, plus per-feature deltas, free, on every plan. A brand profile gets drafted against exactly like a person's does. No separate brand mode, no watered-down attribute set. One format, two sources.

An AI writing MCP server on every plan, Free included

An AI writing MCP server is a single endpoint your client connects to, and this one sits on every plan without exception, Free too. The server lives at `https://mcp.scriptgrain.com/mcp` (streamable HTTP, with legacy SSE at `/sse`), and it exposes 41 tools plus two prompts: `write_in_my_voice` and `build_my_voice_profile`. Auth is a bearer header or OAuth with a one-time sign-in on ScriptGrain's consent page.

So what actually costs you something? Reading, scoring and comparing don't. Voice-matching, profile lookups, comparing without a profile at all, outlines, AI-detect: all free, all the time. Drafting is the paid part. Generating content, polishing it, humanising it: those spend a credit each for anything up to 5,000 words (2 or 3 for longer pieces), and polish and humanize cost nothing when the text already passes their target.

That's the whole shape of the loop, really. Four calls: `create_profile`, `generate_content`, `check_voice_match`, `save_edit`. That last one isn't just housekeeping either; it feeds straight back into the profile's learning, so the next draft starts closer to right.

The full tool list, with costs against each one, lives at MCP tool reference. Everything above is the shape of it; that page is the detail.

What it costs, and what it does not

Generations through the API draw on the exact same credit pool as the in-app flow. There is no separate API quota sitting off to the side. A free account can mint a key, read its profile, and use every free endpoint listed above; generating content regularly needs a paid plan, same as it would in the browser. Paid plans start at Writer, £12 a month.

Rate limit is 60 requests per minute per key, flat, with no plan-based tiers on that one. And payments never happen through the API: `upgrade_plan` hands you a Stripe-hosted link, and anything involving money finishes in your browser, not in a tool call.

What travels over the wire is the same product, not a thinner version of it: the same 45 attributes, the same two-pass extraction, the same Voice Match score you would see in the app.

The point of all this

A voice profile is a measurement. Measurements are only useful if the thing measuring can talk to whatever you are actually working in, whether that is Claude Code, a claude.ai connector, or a script you wrote at midnight. Full reference material lives in the API documentation and the MCP setup guide. Fair enough if you would rather just use the app. But you do not have to.

Questions

Which plans include the API and the MCP server?

Every plan, including Free. A free account can mint an API key, read its voice profile and use every free tool. Generating content through the API spends generation credits from the same pool as the app, so regular generation needs a paid plan, starting at Writer on £12 a month.

How do I connect ScriptGrain to Claude?

In Claude Code, run claude mcp add scriptgrain https://mcp.scriptgrain.com/mcp --transport http with an Authorization: Bearer header carrying your sg_live_ key. On claude.ai, add a custom connector pointing at the same URL; you sign in once on the OAuth consent page (or paste a key, if you signed up with Google) and the connector works from then on. Any other MCP client can use the same endpoint.

Is there a separate API quota?

No. Generations through the API draw on the same credit pool as the in-app editor, so there is nothing separate to buy or track. The rate limit is 60 requests per minute per key, and it is the same on every plan.

Is the API a cut-down version of the product?

No. It carries the same 45 measured attributes across eight layers, from the same two-pass extraction, which usually takes under a minute, and returns the same Voice Match score as the app. The four-call loop of create_profile, generate_content, check_voice_match and save_edit is the whole product cycle without the interface.

Related