Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Revise

REMOTE · MCP.REVISE.IO · SCANNED OCT 3

Collaborative word processor you can use with your agent.

Available components

0 this week 38 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security94
Transport & Reachability0
Schema Quality & AI Usability0
  • Schema blocked by authentication: the endpoint requires auth we don't have to read it. See how to fix → Unverified
Stability & Change Management0
  • Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage0
  • Tool coverage blocked by authentication: the endpoint requires auth we don't have to read its tools.Unverified
Tool Safety0
  • Tool safety blocked by authentication: the endpoint requires auth we don't have to read its tools.Unverified
Capabilities0
  • Capabilities blocked by authentication: the endpoint requires auth we don't have to read them. See how to fix → Unverified

Unverified: 6 categories

Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm. Claim this server and supply a read-only token to verify it and lift the score.

Install

How do I install the Revise MCP server?

Revise is a hosted endpoint at https://mcp.revise.io/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · mcp.revise.io

# add to Claude Code
claude mcp add --transport http io-revise-mcp-server 'https://mcp.revise.io/mcp'
// .cursor/mcp.json
{
  "mcpServers": {
    "io-revise-mcp-server": {
      "url": "https://mcp.revise.io/mcp"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "io-revise-mcp-server": {
      "type": "http",
      "url": "https://mcp.revise.io/mcp"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.io-revise-mcp-server]
url = "https://mcp.revise.io/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "io-revise-mcp-server": {
      "type": "remote",
      "url": "https://mcp.revise.io/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add io-revise-mcp-server --url 'https://mcp.revise.io/mcp' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  io-revise-mcp-server:
    url: "https://mcp.revise.io/mcp"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "io-revise-mcp-server": {
      "Transport": "http",
      "Url": "https://mcp.revise.io/mcp"
    }
  }
}
# add to Vellum
assistant mcp add io-revise-mcp-server -t streamable-http -u 'https://mcp.revise.io/mcp'
// mcp.json
{
  "mcpServers": {
    "io-revise-mcp-server": {
      "type": "http",
      "url": "https://mcp.revise.io/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 28 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 25 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 5 Sept 26 −1

    No change was recorded against any check on this day. Endpoint Security went from 97 to 94.

  • 2 Sept 26 0
    • Authorization: unverified → pass ▲ security
    • HSTS header: fail → pass ▲ security
  • 1 Sept 26 0
    • Authorization: pass → unverified ▼ security
    • HSTS header: pass → fail ▼ security
    • HTTPS: unverified → pass ▲ security
  • 29 Aug 26 0
    • Endpoint reachability: unreachable → behind authorisation ▼ security
    • Transport: fail → unverified ▼ security
    • Authorization: unverified → pass ▲ security
    • HSTS header: fail → pass ▲ security
    • Tool safety: Tool safety blocked by authentication: the endpoint requires auth we don't have to read its tools. security
    • Tool coverage: Tool coverage blocked by authentication: the endpoint requires auth we don't have to read its tools. functional
    • Schema quality: Schema blocked by authentication: the endpoint requires auth we don't have to read it. functional
    • Capabilities: Capabilities blocked by authentication: the endpoint requires auth we don't have to read them. functional
  • 28 Aug 26 0
    • Endpoint reachability: behind authorisation → unreachable ▼ security
    • Transport: unverified → fail ▼ security
    • Authorization: pass → unverified ▼ security
    • HSTS header: pass → fail ▼ security
    • Tool safety: Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list. security
    • Tool coverage: Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list. functional
    • Capabilities: Capabilities not yet verified: we couldn't read the endpoint's capabilities. functional
    • Schema quality: Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list. functional
  • 26 Aug 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 3 Oct 2026 · Probed https://mcp.revise.io/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=mcp.revise.io CN=Amazon RSA 2048 M04,O=Amazon,C=US 13 Jun 2026 27 Dec 2026 RSA 2048 SHA256-RSA 557176ae939d31fe26e80ce97fb1ef6
SANs: mcp.revise.io
CN=Amazon RSA 2048 M04,O=Amazon,C=US (CA) CN=Amazon Root CA 1,O=Amazon,C=US 23 Aug 2022 23 Aug 2030 RSA 2048 SHA256-RSA 773124f2a952e3ed18a58bdb85d1bc0ce5f27
CN=Amazon Root CA 1,O=Amazon,C=US (CA) CN=Starfield Services Root Certificate Authority - G2,O=Starfield Technologies\, Inc.,L=Scottsdale,ST=Arizona,C=US 25 May 2015 31 Dec 2037 RSA 2048 SHA256-RSA 67f944a2a27cdf3fac2ae2b01f908eeb9c4c6

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of mcp.revise.io. — Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
io. present 57355 8 Verified
revise.io. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication Enforced and verified

The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.

Result Enforced and verified
Enforced On connection
HTTP status 401

WWW-Authenticate challenge Bearer error="invalid_token", resource_metadata="https://mcp.revise.io/.well-known/oauth-protected-resource", scope="docs:read docs:write docs:share"

Bearer error="invalid_token", resource_metadata="https://mcp.revise.io/.well-known/oauth-protected-resource", scope="docs:read docs:write docs:share"
Header Value
strict-transport-security max-age=31536000; includeSubDomains
content-security-policy default-src 'none'; frame-ancestors 'none'; base-uri 'none'; form-action 'none'
x-content-type-options nosniff
x-frame-options DENY
referrer-policy no-referrer
www-authenticate Bearer error="invalid_token", resource_metadata="https://mcp.revise.io/.well-known/oauth-protected-resource", scope="docs:read docs:write docs:share"

Protected resource metadata

Document https://mcp.revise.io/.well-known/oauth-protected-resource
Retrieved Yes
Resource https://mcp.revise.io/mcp
Authorisation server https://api.revise.io

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://mcp.revise.io/mcp Auth required 401
http (plaintext) http://mcp.revise.io/mcp HTTPS enforced 301 https://mcp.revise.io:443/mcp
MCP tools · 18 exposed · ~3,534 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
clean_document ~243

Scrub a document before it is shared externally ("clean this document before I send it"): remove comments, resolve ALL pending tracked-change suggestions (accept or reject — everyone's, not just yours), remove hidden text (Word w:vanish), anonymize revision/comment author names to "Author", and clear document properties (title/author/company metadata from the original file). Destructive and not undoable — confirm with the user before running it. Options all default to off; enable only what the user asked to strip. Returns a summary of what was removed.

NameTypeReqDescription
anonymize_authorsboolean–Replace suggestion and comment author identities with "Author"
clear_core_propertiesboolean–Wipe document properties (author, title, company, created/modified dates)
idstringyesDocument ID
remove_commentsboolean–Remove all comment threads and their anchors
remove_hidden_textboolean–Remove hidden (invisible-in-Word) text spans; footnote/endnote numerals are kept
resolve_suggestionsstring–Resolve ALL pending suggestions: accept applies them, reject reverts them; omit to leave them pending
NameTypeReqDescription
authorsAnonymizedintegeryesDistinct author identities replaced with "Author"
commentsRemovedintegeryesDistinct comment threads removed
corePropsClearedbooleanyesWhether document properties (docProps/core.xml) were wiped
hiddenRemovedintegeryesHidden text spans removed (note-reference numerals are kept)
statusstringyesScrub outcome
suggestionsResolvedintegeryesDistinct pending suggestions resolved

No examples provided.

create_document ~145

Create a Revise document without a Revise account, seeded with markdown. Returns: url (give this to your user — they open it to view the document and create a free account to keep it, in one step) and edit_token (keep it; use it as your Authorization Bearer token in future requests to read and edit this document). The document is private and deleted after 7 days if unclaimed.

NameTypeReqDescription
content_markdownstring–Initial content as markdown
created_bystring–Your name (e.g. "Codex", "Claude") so the user sees who made the document. Recommended.
titlestringyesDocument title
NameTypeReqDescription
edit_tokenstringyesBearer token scoped to this document for future read/edit calls
idstringyesDocument ID
notesstringyesHuman-facing claim and retention notes
titlestringyesDocument title
unlock_morestringyesAgent-facing guidance for authenticating to unlock more tools
urlstringyesEditor URL

No examples provided.

edit_document ~222

Apply targeted edits to a document using Markdown or HTML content. Edits land as pending tracked changes ("suggest" mode) that the owner reviews and accepts or rejects in the editor — this is the default and the right choice unless your user explicitly asks for direct edits. Pass mode "apply" only on explicit instruction (e.g. "apply it directly", "don't leave suggestions"); it writes immediately with no review step, recorded in the revision history. One exception needs no instruction: on a short/new document (under 20 words) the default is already "apply", since there is nothing meaningful to review. Get block ids from read_document with with_block_ids: true.

NameTypeReqDescription
editsarrayyesEdits to perform, in order
idstringyesDocument ID
modestring–Omit for the default: suggest (tracked changes) on documents with 20+ words, apply on shorter ones. Choose "apply" on a substantial document only when your user explicitly asked for direct edits with…
NameTypeReqDescription
acceptedChangeRegionsinteger–Change regions accepted immediately
editsRequestedinteger–Requested edit count
notestring–Review guidance
pendingSuggestionIdsarray–Tracked-change suggestion IDs
statusstringyesWhether edits were suggested or directly applied

No examples provided.

export_document ~83

Export a document by id to markdown, txt, html, docx, pdf. Markdown is returned inline. Every other format (txt, html, docx, pdf) is hosted at a temporary download URL (expires in ~24h) returned in the response, not streamed back inline.

NameTypeReqDescription
formatstringyes–
idstringyesDocument ID
NameTypeReqDescription
bytesinteger–Hosted file byte length
contentstring–Inline exported text content
download_urlstring–Temporary download URL
formatstringyesExport format
idstringyesDocument ID
notesstring–Download expiry notes
statusstringyesExport status

No examples provided.

get_document_info ~37

Get a document's metadata: title, sharing state, URLs, timestamps, and word count.

NameTypeReqDescription
idstringyesDocument ID
NameTypeReqDescription
blocksintegeryesTop-level block count
createdAt––Creation timestamp from the Revise API
idstringyesDocument ID
isOwnerbooleanyesWhether the current user owns the document
isPublicbooleanyesWhether the document is publicly shared
pages–yesRendered page count, or null in pageless mode
publicUrl–yesPublic URL, when enabled
readOnlybooleanyesWhether the current user has read-only access
titlestringyesDocument title
updatedAt––Last update timestamp from the Revise API
urlstringyesEditor URL
wordsintegeryesWord count

No examples provided.

get_document_outline ~46

Get a document's heading outline with block ids and per-section word counts. Cheap way to orient in a long document before reading specific sections.

NameTypeReqDescription
idstringyesDocument ID
NameTypeReqDescription
blocksintegeryesTop-level block count
sectionsarrayyes–
title–yesDocument title
totalWordsintegeryesTotal word count

No examples provided.

get_recent_changes ~103

See what changed in a document since YOU last looked at it — e.g. edits the human (or another collaborator) made in between. Returns added, removed, and changed blocks (with block ids), all in the accepted/projected state. Great for catching up before continuing work ("how does it look now?"). The first call on a document just establishes a baseline. Each call advances your baseline to the current state.

NameTypeReqDescription
idstringyesDocument ID
NameTypeReqDescription
addedarray–Added blocks
baselineEstablishedboolean–True when this first call only established a baseline
changedarray–Changed blocks
notestring–Result note or truncation guidance
removedarray–Removed blocks
since––ISO timestamp for the previous baseline
summaryobject–Exact changed-block counts

No examples provided.

import_document ~230

Create a Revise document from a file at a public http(s) URL (.md, .markdown, .txt, .html, .htm, .docx, .rtf, .odt; PDFs/images not yet supported). The server fetches the URL — file bytes are never passed inline. For a LOCAL file, use upload_document instead (it streams the file to the server). Returns the new document id and URL. Returns url (give it to your user — they view the document and create a free account to keep it, in one step) and edit_token (your Bearer token for future edits). The document is private and deleted after 7 days if unclaimed.

NameTypeReqDescription
created_bystring–Your name (e.g. "Codex", "Claude") so the user sees who made the document. Recommended.
filenamestring–Filename override — its extension selects the converter (otherwise taken from the URL)
titlestring–Document title
urlstringyesPublic http(s) URL of the file for the server to fetch
NameTypeReqDescription
edit_tokenstringyesBearer token scoped to this document for future read/edit calls
idstringyesDocument ID
notesstringyesHuman-facing claim and retention notes
titlestringyesDocument title
unlock_morestringyesAgent-facing guidance for authenticating to unlock more tools
urlstringyesEditor URL

No examples provided.

insert_footnote ~289

Insert a footnote: a numbered superscript reference placed immediately after the anchor text inside a paragraph, plus the footnote body (shown at the bottom of the page, or as an endnote in pageless documents). On substantial documents this lands as a pending tracked change by default, like edit_document. Footnote bodies appear in read_document as [^n]: definitions with their own block ids — edit or remove them with the normal editing tools (removing a footnote body also removes its reference, and vice versa).

NameTypeReqDescription
block_idstringyesParagraph block that gets the reference (from read_document with_block_ids)
findstringyesAnchor text inside the block; the reference is inserted right after it. Pass an empty string to append at the end of the block.
idstringyesDocument ID
kindstring–Note stream: footnote (per-page bottom area, numbered 1,2,3 — default) or endnote (grouped on its own page at the document end, numbered i,ii,iii)
modestring–Omit for the default: suggest (pending tracked change) on documents with 20+ words, apply on shorter ones. Choose "apply" on a substantial document only when your user explicitly asked for direct edi…
textstringyesFootnote body text
NameTypeReqDescription
footnote_block_idstring–Block id of the footnote body (editable with block tools)
footnote_labelstring–Display label as it appears in the text: arabic for footnotes, lowercase roman for endnotes
footnote_numberinteger–Per-stream index of the new note
statusstringyesinserted directly, or left as a pending tracked change
suggestion_idstring–Pending suggestion id when status is suggested

No examples provided.

leave_comment ~493

Leave a review comment in a document WITHOUT changing its text — either a new thread anchored to one block, or a reply to an existing thread. Comments appear in the editor's margin attributed to you, where the owner can reply or resolve. Prefer this for passage-specific critique or questions; to propose an actual text change, use edit_document in "suggest" mode instead. To START a thread: target one block (from read_document with_block_ids: true) and exactly one anchor form — anchor_text (short text occurring exactly once in the block), anchor_start_text + anchor_end_text (boundaries of a longer range, without reproducing it), or whole_block: true (structural or empty blocks). To REPLY: pass reply_to_comment_id (a comment id from a <comment-thread> element in read_document format "html", or from an earlier leave_comment result) and no block/anchor fields. Text that already carries an unresolved <comment-thread> is already under discussion: reply to that thread rather than starting a second one over the same words, which is rejected unless you pass acknowledge_existing_thread_ids.

NameTypeReqDescription
acknowledge_existing_thread_idsarray–Only for a NEW thread that deliberately overlaps existing unresolved threads: list their ids to confirm you read them and are raising a genuinely different point. Without this, a new thread over text…
anchor_end_textstring–Exact text at the end of that range (pair with anchor_start_text)
anchor_start_textstring–Exact text at the start of a longer range (pair with anchor_end_text)
anchor_textstring–Short exact text that occurs exactly once in the block; the comment anchors to it
block_idstring–Target block for a NEW thread (from read_document with_block_ids: true). Required unless replying.
commentstringyesComment body (Markdown)
idstringyesDocument ID
reply_to_comment_idstring–Reply to an existing thread instead of starting a new one: any comment id in the thread (the reply attaches to the thread root). Omit block_id and anchors when replying.
whole_blockboolean–Anchor to the entire block instead of a text range (structural or empty blocks)
NameTypeReqDescription
anchored_text_rangeobject–Anchored character range within the block (text anchors only)
block_idstring–Block the comment is anchored to (new threads only)
comment_idstringyesID of the new comment or reply
notestring–Review guidance
statusstringyescommented: new thread started; replied: reply added to an existing thread
thread_idstring–Root comment id of the thread a reply was added to

No examples provided.

read_document ~355

Read a Revise document's content. Format "markdown" (default) is the simple dialect — best for plain prose; set with_block_ids to true to interleave <!-- block:xxxxxx --> anchors usable with edit_document. Format "html" is the full-fidelity dialect: compact HTML-like markup with a block id on every element plus everything markdown cannot express — rich marks, <latex> math, code block languages, merged table cells, page layout, and each comment thread inline as a <comment-thread transcript="..."> wrapper around its anchored text. Prefer html when a document uses rich features or has comments; edit_document accepts the same dialect in replacements. "text" is plain text. (For a styled, self-contained HTML file, use export_document instead.) view controls how pending tracked-change suggestions read: "final" (default, as if accepted) or "original" (as if rejected). Long documents are paginated: when a read exceeds the character budget it is cut at a block boundary and the response carries truncated: true, next_start_block, and a ready-to-run example call — repeat with start_block to continue. For a targeted read of a large document, prefer get_document_outline + search_within_document over paging through everything.

NameTypeReqDescription
formatstring––
idstringyesDocument ID
start_blockinteger–0-based top-level block index to start reading from (default 0). Use the previous response's next_start_block to continue a paginated read.
viewstring–Projection of pending suggestions: final = accepted (default), original = rejected
with_block_idsboolean–Interleave block id anchors (markdown format only)
NameTypeReqDescription
blocks_includedinteger–Top-level blocks included in this page
contentstringyesDocument content in the requested format
formatstringyesReturned format
idstringyesDocument ID
next_start_blockinteger–Pass as start_block to read the next page
notestring–Pagination guidance
start_blockinteger–First top-level block index included in this page
total_blocksinteger–Total top-level blocks in the document
truncatedboolean–True when the read was cut at a block boundary
with_block_idsboolean–Whether markdown block anchors were included

No examples provided.

rename_document ~33

Change a document's title.

NameTypeReqDescription
idstringyesDocument ID
titlestringyesNew document title
NameTypeReqDescription
statusstringyesRename status
titlestringyesNew title

No examples provided.

replace_document_content ~69

Replace the ENTIRE content of a document with new markdown. Destructive: existing content is removed (it remains recoverable via the document's revision history). Prefer edit_document for targeted changes.

NameTypeReqDescription
content_markdownstringyesNew full document content
idstringyesDocument ID
NameTypeReqDescription
blocksintegeryesNumber of blocks in the new content
statusstringyesReplacement status

No examples provided.

resolve_suggestions ~218

Accept or reject the tracked-change suggestions YOU made on a document — only your own, never the user's edits or another agent's suggestions. Use this when the user approves your suggested changes (e.g. they say "lgtm" / "looks good") to apply them on their behalf, or asks you to withdraw them. Covers the whole document by default; pass block_ids to limit to specific blocks. (Edits made with edit_document in "apply" mode are already applied — this is for edits left as suggestions in "suggest" mode.)

NameTypeReqDescription
actionstringyesaccept: apply your suggested changes; reject: withdraw them
block_idsarray–Limit to suggestions in these blocks (from read_document with_block_ids); omit to review the whole document
idstringyesDocument ID
kindstring–Limit to one kind of change (Word-style review filter): insert = added text/blocks, delete = removed text/blocks, format = formatting-only changes; omit for all kinds
NameTypeReqDescription
notestring–Why no suggestions were resolved
resolvedChangeRegionsinteger–Resolved change-region count
statusstringyesSuggestion resolution outcome

No examples provided.

search_within_document ~95

Find where a query matches inside one document. Returns the matching blocks as markdown with <!-- block:xxxxxx --> anchors (usable with edit_document), each with a few neighboring blocks for context. Case-insensitive.

NameTypeReqDescription
context_blocksinteger–Neighboring blocks to include on each side (default 2)
idstringyesDocument ID
querystringyesText to find (case-insensitive)
NameTypeReqDescription
groupsarray–Context groups containing matches
notestring–Result note or truncation guidance
querystringyesSearch query
returnedMatchingBlocksinteger–Number of matching blocks returned in this response
totalMatchingBlocksintegeryesMatching block count

No examples provided.

set_page_layout ~406

Set a document's page layout: page size, orientation, margins, page numbers, line/paragraph spacing, pageless mode, or the APA-7 preset. Length values are strings with explicit units (e.g. "1in", "2.54cm", "72px").

NameTypeReqDescription
block_spacingstring–Vertical spacing between blocks, e.g. "0.125in"
idstringyesDocument ID
line_numbering––Word-style line numbering in the left margin (pleading paper). Pass an object (possibly empty) to enable, null to disable
marginstring–Uniform margin for all sides, e.g. "1in"
margin_bottomstring––
margin_leftstring––
margin_rightstring––
margin_topstring––
note_modestring–Bulk-convert every note in the document to this stream: footnotes (per-page bottom areas, numbered 1,2,3) or endnotes (grouped on their own page at the end, numbered i,ii,iii). Individual notes choos…
orientationstring––
page_number_positionstring––
page_number_startinteger––
page_sizestring–Named page size
pagelessboolean–Enable pageless (continuous) mode
presetstring–Layout preset applied before other overrides
show_page_numbersboolean–Show/hide page numbers (managed as an automatic header/footer page-number field slot; hand-authored header/footer content is never overwritten)
watermark––Diagonal page watermark text painted on every page, e.g. "DRAFT" or "CONFIDENTIAL". Also accepts a JSON settings string {text, color?, opacity?, diagonal?, fontSizePx?}. Pass "" or null to remove the…
NameTypeReqDescription
appliedobjectyesApplied layout settings
statusstringyesLayout update status

No examples provided.

style_blocks ~277

Style existing content with forgiving CSS-lite selectors and values. Use this for bulk formatting instead of rewriting text. Block selectors include *, #blockId, p, h1-h6, li, lists, tables, and descendants. Inline selectors such as b/strong, i/em, u, s/strike/del, code, sup, sub, mark, and a target only matching formatted text ranges. Examples: set the entire document to Georgia with selectors="*" and attrs=[{"name":"fontFamily","value":"Georgia"}]; bold headings with selectors=["h1","h2","h3"] and attrs=[{"name":"fontWeight","value":"bold"}]. Formatting lands as pending tracked changes by default on substantial documents.

NameTypeReqDescription
attrsarrayyesStyle attributes to set
idstringyesDocument ID
modestring–Omit for the default: suggest (tracked formatting changes) on documents with 20+ words, apply on shorter ones. Choose "apply" on a substantial document only when the user explicitly asks for direct f…
selectors–yesCSS-lite selectors: *, #blockId, p, h1-h6, li, ul, ol, pre, latex, img, table, tr, td/th, div, inline formatting tags, descendants, and :nth-child(n)
NameTypeReqDescription
acceptedChangeRegionsinteger–Formatting change regions accepted immediately
attributesRequestedintegeryesNumber of style attributes in the request
notestring–Review guidance
pendingSuggestionIdsarray–Tracked formatting suggestion IDs
selectorsRequestedintegeryesNumber of selectors in the request
statusstringyesWhether formatting was suggested or directly applied

No examples provided.

upload_document ~190

Create a Revise document from a LOCAL file (docx, md, txt, html; PDFs/images not yet supported) without a Revise account and without putting its bytes in your context. Returns a one-time upload_url and a ready-to-run curl command — run the curl to stream the file. The curl response contains url (give it to your user — they view the document and create a free account to keep it, in one step) and edit_token (your Bearer token for future edits). For a public http(s) URL or a tiny inline file, use import_document instead. The document is private and deleted after 7 days if unclaimed.

NameTypeReqDescription
created_bystring–Your name (e.g. "Codex", "Claude") so the user sees who made the document. Recommended.
filenamestringyesThe file's name (its extension selects the converter)
NameTypeReqDescription
curlstringyesReady-to-run curl command for the upload
expires_inintegeryesSeconds until the upload URL expires
nextstringyesWhat to do after reserving the upload
upload_urlstringyesOne-time upload endpoint

No examples provided.

Common questions

What is the Revise MCP server?

Revise is an MCP server listed in the public MCP registry as io.revise/mcp-server. Collaborative word processor you can use with your agent. This page covers its hosted endpoint (https://mcp.revise.io/mcp).

Is the Revise MCP server safe to use?

Revise scores 38 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Revise MCP server expose?

Revise exposes 18 tools: create_document, import_document, upload_document, read_document, search_within_document, and 13 more. Their descriptions and schemas cost roughly 3,534 tokens of context every time the server is loaded.

Does the Revise MCP server require authentication?

Yes. Revise asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

Is the Revise MCP server still maintained?

Revise is still listed as active in the MCP registry. We last reached this channel on 3 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.