MCP server
Give an AI agent QED and Sic as tools, with the same account and limits as the API.
| Address | https://mcp.etal-labs.com/mcp |
| Transport | Streamable HTTP |
| Sign-in | OAuth in the browser (the client opens a window on the console), or an API key as a bearer token |
| Limits | The same allowance and rate limits as the API, on the same account |
1Connect
The quickest way is to let your agent do it. Give it this prompt:
Read https://etal-labs.com/docs/mcp.md and follow it to connect the Et Al. MCP server for me.
Or set it up by hand:
Claude Code
Run this in a terminal. It adds the server for all your projects and opens the browser to sign in. Start a new Claude Code session afterwards.
claude mcp add --transport http --scope user etal https://mcp.etal-labs.com/mcp && claude mcp login etalTo skip the browser step, use an API key. The keys page shows this command with a new key filled in:
claude mcp add --transport http --scope user etal https://mcp.etal-labs.com/mcp \
--header "Authorization: Bearer $ETAL_API_KEY"claude mcp get etal shows whether the server is connected or still needs authentication.
Claude on the web and desktop
Open Settings, then Connectors, choose Add custom connector, name it Et Al. and paste the address. Claude sends you to the console to sign in and approve.
Cursor
{
"mcpServers": {
"etal": {
"url": "https://mcp.etal-labs.com/mcp",
"headers": { "Authorization": "Bearer etal_your_key_here" }
}
}
}Anything else
Any client that speaks MCP over Streamable HTTP works. Clients that support OAuth discover the sign-in flow from the server's metadata. For the rest, send the bearer header. Stdio-only clients can bridge with npx mcp-remote https://mcp.etal-labs.com/mcp.
Connected apps are listed under Connect in the console, where you can disconnect them.
2Tools
about | Models, limits and your remaining allowance. Agents call it first. |
draft_from_notes | QED writes a passage from notes, optionally in the voice of passages you supply and as a section of a longer document. |
rewrite | QED polishes or revoices a paragraph. Markdown in, Markdown out. |
list_paragraphs | Numbers the prose paragraphs of a LaTeX or Markdown document, says which can be rewritten, and lists every block it will leave alone with the reason. |
rewrite_document | Rewrites chosen paragraphs of a LaTeX or Markdown document and returns the edits, each as the original text and its replacement, with a per-paragraph report. |
compare | Checks an output against its source: numbers, citations, hedging, and claims added, dropped or changed. |
detect | Sic scores each sentence and reports its thresholds and error rates. |
disclosure_statement | Drafts an AI-use disclosure from your recent calls, in a journal's house form. |
usage | Allowance used and rate limits. |
3How the tools expect to be used
The server tells the agent this itself, but it helps to know what it has been told:
- Ask the author for two or three passages of their own writing, and pass them as the voice.
- Draft section by section, with every fact, number and citation in the notes.
- Run
compareon every output. Fix what it marks as an error; read what it marks for review. - Use
detectto see which sentences read as machine-written, and revise those for substance. Never paraphrase text to lower a score. - Offer the disclosure statement at the end.
4LaTeX documents
A hosted server cannot see your files, so the agent reads the file, passes its text, and applies the returned edits to a copy. rewrite_document is conservative about what it touches:
- Only prose paragraphs are rewritten. The preamble, headings, environments, figures, tables, equations, blocks shorter than 12 words and any block with
%comments are left alone, andlist_paragraphsnames each one. - Each paragraph is converted to Markdown, rewritten, and converted back. A paragraph is only attempted if the conversion alone loses nothing.
- After the rewrite, every math span, citation, cross-reference, label, footnote and custom macro must still be there. If one is missing, that paragraph is reverted to the original and reported.
- Voice comes from passages you supply. As an option,
voice_from_documenttakes it from other paragraphs of the same document. It is off by default and is only for documents you wrote yourself: on a machine-written draft it would imitate that draft. - A paragraph the model returns unchanged is reported as
unchangedand not charged. - Changed numbers are reported in the paragraph's entry.
Word documents are not supported by the hosted server. Convert to Markdown first, or paste paragraphs into the playground.