Skip to content
Model Context Protocol

Ask your assistant to fix the book

Origami is an MCP server. Connect it to Claude, ChatGPT or your own agent and your whole library — every title, every tool, every report — becomes something you can ask for in a sentence.

Server · Streamable HTTP

https://origami.publica.la/mcp

A colleague who has read your catalogue

MCP is the open standard that lets an AI assistant use real software instead of describing it. Origami implements it, so an assistant you already use stops being a place to paste an error message and becomes the thing that opens the file, runs epubcheck, reads what came back and tells you which of your fourteen titles will fail in January.

It is not a chatbot bolted onto the product, and it is not a second, weaker Origami. Every tool the server exposes is the same service the app and the REST API call — the same uploads, the same runs, the same reports, the same workspace. What changes is only who is holding the controls.

Your library, in the conversation

The assistant lists your publications, reads their version history and pulls the report of any run — no copy-pasting file names, no exports.

The whole toolchain

epubcheck, Ace by DAISY, the Qualebook checklist, PDF diagnosis and repair, metadata, tables of contents, descriptions, conversions. If the app can run it, the assistant can start it.

Answers, not screenshots

Reports come back as structured data, so the assistant can compare two titles, count findings by severity, or summarize a backlist sweep in one reply.

One product, two doors

Anything the assistant does shows up in the app immediately, attributed and logged, because it went through the same services your team clicks.

Things people actually ask it

No syntax to learn. These are prompts, verbatim — the assistant works out which tools to call.

Which of my EPUBs would fail the European Accessibility Act? Check them all and give me the list worst first.

Lists the library, runs the accessibility checker on each title, reads every report and ranks them by blocking findings.

This PDF is 240 MB and the store rejected it. What is wrong with it and can you fix it?

Diagnoses the file, sees that the weight is unoptimized rasters, runs the repair, and hands back the improved version to download.

Fill in the missing metadata on everything I uploaded this week and tell me what you changed.

Reads what each file declares, enriches the gaps — contributor roles, BISAC and Thema subjects, keywords — and reports the diff per title.

Write the product-page copy for these six titles, short and long, in the voice of the last one you did.

Runs the description writer on each and returns the page body and the card-length version, ready to paste into a store.

Add this file to the library and take it as far as you can without asking me.

Uploads it, registers the publication, validates, and stops at the first thing that genuinely needs a person to look at.

How much of my allowance is left this cycle?

Reads the workspace: plan, publications used and remaining, when the cycle renews, and how much of the daily fair-use limit today has spent.

What it can touch

15 tools

The tools this deployment exposes, live from the server. Each one mirrors one endpoint of the REST API — nothing here has business logic of its own.

Read the workspace

get-account

Get the workspace

get-account-usage

Get the workspace's usage

list-publications

List publications

get-publication

Get a publication

list-publication-files

List a publication's files

get-download-link

Get a file download link

get-publication-reader

Get a publication's reader mirrors

list-tools

List publishing tools

list-tool-runs

List a publication's tool runs

get-tool-run

Get a tool run

get-run-report

Get a tool run report

Add and publish

create-upload

Create an upload slot

finalize-publication

Finalize an uploaded publication

run-tool

Run a publishing tool

sync-publication-reader

Re-push a publication to the reader store

Connect it in a minute

One endpoint, two ways to authenticate. Pick the one your client speaks.

Claude, ChatGPT and other hosted clients

Point the client at the server URL and sign in. It discovers the rest itself — the authorization server, PKCE, and dynamic registration — and the consent screen shows you which workspace the connection will act on before you approve it.

Server

https://origami.publica.la/mcp

Nothing is pasted and no secret leaves your keychain. Revoke the connection any time from Settings → Connected apps; the very next call it makes is refused.

Claude Code, your own agent, anything that can send a header

Use a workspace API key as a Bearer token — the same key that opens the REST API, minted in Settings → API keys.

Add it to Claude Code

claude mcp add --transport http origami https://origami.publica.la/mcp \
  --header "Authorization: Bearer ${ORIGAMI_API_KEY}"

Or, as client configuration

{
  "mcpServers": {
    "origami": {
      "type": "http",
      "url": "https://origami.publica.la/mcp",
      "headers": { "Authorization": "Bearer ${ORIGAMI_API_KEY}" }
    }
  }
}

For a server-side agent this is the one to use: no browser, no consent step, and the key's abilities are the whole of what the agent can do.

It has your permissions, not more

An assistant that can touch a production catalogue only earns that if the answer to "what could it possibly do" is short and checkable. Here it is.

One workspace, named by the credential

Tenancy is never something the assistant passes as a parameter — the credential is what names the workspace. There is no argument it could get wrong and reach somebody else's library.

The same abilities as the API

A key's abilities decide which tools even appear in the assistant's tool list, and each tool re-checks before it acts. A read-only key produces a read-only assistant, with no writing tools offered to tempt it.

The same quotas

Uploads spend the plan's publication allowance and metered runs spend the daily fair-use allowance, exactly as in the app. An agent in a loop hits the same ceiling a person would, and both are readable before anything is spent.

Nothing is destructive

The original file is immutable and every tool that writes appends a new version. There is no delete tool, and nothing the assistant does can remove a title, a version or a report.

Revocation is immediate

Delete the key, or revoke the OAuth grant, and the next request fails — there is no window in which a stale credential keeps working.

A person still approves what needs a person

A run whose result has to be judged against before/after examples refuses over MCP with approval_required, because that comparison only exists in the app. The assistant cannot rubber-stamp it on your behalf.

Everything the assistant does is written to the workspace's activity timeline with the credential that did it, so the record of an agent's afternoon reads exactly like the record of a colleague's.

Three afternoons

Compliance

The backlist sweep

Four hundred titles and a deadline. Ask for the accessibility state of the whole catalogue and go do something else; come back to a ranked list, the blocking findings grouped by cause, and the ones already fixed. The pattern you could not see in four hundred reports — the same missing language declaration in everything from one converter — is the first thing the assistant says.

Intake

The file that arrived at 6pm

A manuscript, a PDF, or an EPUB from a supplier who did not read the spec. Hand it over in one message: it lands in the library, gets diagnosed, gets converted or repaired, and you are told what it needs from a human — instead of finding out on Monday from the store's rejection email.

Launch

Six titles, one morning

Metadata enriched, tables of contents checked, product-page copy written short and long, ONIX out, each title pushed to the reader store. The assistant works title by title and reports what it changed; you review a summary rather than six screens.

Questions

Do I need a different plan for this?

No. MCP is another door onto the workspace you already have, on the plan you already have. It spends the same publication allowance and the same daily fair-use allowance as the app — there is no separate metering and nothing extra to buy.

Which assistants work?

Any MCP client. Hosted ones such as Claude and ChatGPT connect by signing in; Claude Code and anything you build yourself connect with a workspace API key as a Bearer token. The transport is Streamable HTTP at a single endpoint.

Does my book get sent to a model?

Only where a tool already uses one, and never through the assistant. File bytes move directly between your storage and Origami over presigned links — the model sees the assistant's conversation and the tools' structured reports, not the book. Which tools are AI-backed is marked in the catalogue on the API page.

Can it break something?

It cannot delete anything: originals are immutable, improvements append a new version, and no tool on this server removes a publication, a version or a report. The strongest thing it can do is add a file version you can roll back in the app.

What is not exposed over MCP?

The AI media generators — social images, carousels and video — stay in the app and the REST API. That is a connector-directory policy about generative media rather than a technical limit, and it is expressed as configuration rather than a special case, so the two planes cannot otherwise drift apart.

Can I see what it did?

Yes. Every run appears in the app with its report, and every action lands on the workspace activity timeline attributed to the credential that took it.

Point your assistant at your catalogue

Start free, mint a key in settings, and ask it what is wrong with your worst title.