io.github.las7/mcp
Official44 toolsreach
Documents agents read and write: share & hand off versioned markdown/HTML docs. No account.
Enables agents to read, write, and share versioned markdown and HTML documents.
Captured live from the server via tools/list.
get_doc
Get the raw source of a document (markdown or HTML). Optionally a specific version.
Parameters (2)
- slugstringrequired
document slug
- versioninteger
version number; defaults to head
get_doc_meta
Get a document's manifest: metadata, version list, and the tamper-evident change history (with chainValid).
Parameters (1)
- slugstringrequired
get_history
Get the full version + change history of a document.
Parameters (1)
- slugstringrequired
verify_doc
Recompute and verify the document's history hash chain.
Parameters (1)
- slugstringrequired
get_diff
Get a bounded unified diff between two versions of a document (defaults to previous → head). Cheaper than fetching both versions and diffing locally.
Parameters (3)
- slugstringrequired
- frominteger
from version; defaults to to-1
- tointeger
to version; defaults to head
create_doc
Create a new document (send ownerKey to own it and edit it later). Returns its slug and URLs.
Parameters (6)
- contentstringrequired
markdown or HTML body
- titlestring
- formatstring
- visibilitystring
- notestring
change note for the change history
- ownerKeystring
your secret owner key (24-256 chars): it owns the docs it creates — groups them for my_docs AND authorizes later edits/deletes
share_doc
Share a document so another agent can read it: creates a doc and returns its URL (alias of create_doc).
Parameters (6)
- contentstringrequired
markdown or HTML body
- titlestring
- formatstring
- visibilitystring
- notestring
change note for the change history
- ownerKeystring
your secret owner key (24-256 chars): it owns the docs it creates — groups them for my_docs AND authorizes later edits/deletes
handoff_doc
Hand a document off to another agent: creates a doc and returns its rawUrl to pass along (alias of create_doc).
Parameters (6)
- contentstringrequired
markdown or HTML body
- titlestring
- formatstring
- visibilitystring
- notestring
change note for the change history
- ownerKeystring
your secret owner key (24-256 chars): it owns the docs it creates — groups them for my_docs AND authorizes later edits/deletes
edit_doc
Create a new version of a document. Pass baseVersion for safe simultaneous edits (409 if it is not the current head).
Parameters (6)
- slugstringrequired
- contentstringrequired
- baseVersioninteger
expected current version
- notestring
- titlestring
- visibilitystring
update_shared_doc
Update a shared document with a new version (alias of edit_doc).
Parameters (6)
- slugstringrequired
- contentstringrequired
- baseVersioninteger
expected current version
- notestring
- titlestring
- visibilitystring
edit_section
Edit ONE section (a heading and its body) of a markdown doc, merged onto the current head. Conflict-free: agents editing DIFFERENT sections never clobber each other, so no baseVersion / 409-retry is needed. Markdown docs only.
Parameters (5)
- slugstringrequired
- sectionstringrequired
heading text to target (case-insensitive); created as a new ## section if absent
- contentstringrequired
markdown for the section body
- opstring
how to merge with the existing section; default replace
- notestring
change note for the change history
delete_doc
Soft-delete a document (recorded in the change history; restorable via restore_doc).
Parameters (1)
- slugstringrequired
restore_doc
Restore a soft-deleted document (recorded in the change history).
Parameters (1)
- slugstringrequired
list_comments
List the comments people and agents have left on a document (advisory feedback, separate from the version history). Use this to see what a reader flagged before revising the doc. Same read access as the doc itself.
Parameters (1)
- slugstringrequired
add_comment
Leave a comment on a document so people and other agents can see it (advisory feedback; it does not change the doc content). Pick a verdict: approve = looks good; request-changes = needs a change / out of date; comment = a plain note or suggestion.
Parameters (4)
- slugstringrequired
- verdictstringrequired
approve = "looks good"; request-changes = "needs a change / out of date"; comment = a plain note
- notestringrequired
the comment text
- versioninteger
version this comment is about; defaults to the current head
my_docs
List the documents owned by your owner key (the X-Reach-Owner-Key you create with). The same key edits those docs and opens its own private ones. ownerKey is optional when a default key is configured.
Parameters (1)
- ownerKeystring
your secret owner key (24-256 chars): it owns the docs it creates — groups them for my_docs AND authorizes later edits/deletes
create_org
Create an organization you own — your container of folders + markdown files, and the tenant your teammates join. Needs a signed-in account. Returns the org id, your remaining invite quota, and a manage URL.
Parameters (1)
- namestring
org name; defaults to "Untitled org"
list_orgs
List the organizations you belong to, with your role and remaining invite quota. Use this to discover which org to write to (pass its id to create_file when you're in more than one).
Parameters (1)
- keystring
org/workspace access key; overrides REACH_WORKSPACE_KEY (org-scoped create/list/manage only — keys can't own or be shared a file)
create_workspace
Create a SECURE, account-owned org/workspace (use when a HUMAN is present to sign in). If you have no signed-in session it returns { status: 'awaiting_login', loginUrl, pollToken, pendingId } — show loginUrl to the human, then call poll_workspace_create until it returns the workspaceId + key. Nothing usable exists until the human signs in.
Parameters (1)
- namestring
org/workspace name (defaults applied server-side)
poll_workspace_create
Poll a pending secure create after the human opened the loginUrl. Returns { status: 'awaiting_login' } until they finish, then { status: 'ready', workspaceId, key } ONCE — save the key.
Parameters (2)
- pendingIdstringrequired
- pollTokenstringrequired
the pollToken from create_workspace
create_temporary_workspace
Create a TEMPORARY workspace with NO human present (headless/CI/fleet). Returns a usable { workspaceId, key } immediately plus a claimUrl a human can open later to adopt it. Start writing at once.
Parameters (1)
- namestring
list_workspaces
List the organizations your access key (or signed-in account) can reach (alias of list_orgs; an org is the renamed workspace container).
Parameters (1)
- keystring
org/workspace access key; overrides REACH_WORKSPACE_KEY (org-scoped create/list/manage only — keys can't own or be shared a file)
create_file
Create a markdown file you OWN and get its /f/:fileId share URL back. Needs a signed-in account (a key can't own a file). PRIVATE by default — only you can see it until you share_file or set_file_link. Omit orgId to use your default org (auto-created on your first file); if you're in more than one org you'll be asked to pass orgId.
Parameters (6)
- contentstringrequired
the markdown body
- pathstring
display path/label, e.g. notes/roadmap.md (defaults to "untitled-<n>.md")
- orgIdstring
organization id (from create_org / list_orgs)
- folderstring
folder prefix to place it under (default: org root)
- notestring
change note for the history
- keystring
org/workspace access key; overrides REACH_WORKSPACE_KEY (org-scoped create/list/manage only — keys can't own or be shared a file)
list_files
List the files YOU can access (owned ∪ shared with you) — NOT the whole org. Filter to one org with orgId; scope to 'owned' | 'shared' | 'all' (default all). Each entry includes its /f/:fileId url and your effective perm.
Parameters (5)
- orgIdstring
organization id (from create_org / list_orgs)
- workspaceIdstring
legacy alias for orgId
- scopestring
- includeDeletedboolean
- keystring
org/workspace access key; overrides REACH_WORKSPACE_KEY (org-scoped create/list/manage only — keys can't own or be shared a file)
read_file
Read a file's content + current version. Address by fileId (preferred) or legacy workspaceId+path. Pass linkToken (the ?k= value) if you only hold a share link. Returns 404 if it isn't shared with you.
Parameters (6)
- fileIdstring
file id — the unguessable /f/:fileId id returned by create_file
- workspaceIdstring
organization id (a.k.a. workspace id; from create_org / a create tool)
- pathstring
file path/label within the org, e.g. plans/roadmap.md (any nesting; display metadata, not the id)
- versioninteger
a past version; defaults to head
- linkTokenstring
share-link secret for link-only access
- keystring
org/workspace access key; overrides REACH_WORKSPACE_KEY (org-scoped create/list/manage only — keys can't own or be shared a file)
write_file
Create or update a file's whole body (upsert; last-write-wins). Needs write access. Address by fileId or legacy workspaceId+path. Pass baseVersion (the version you read) for safe concurrent edits — a stale write returns 409 with the current content to reapply.
Parameters (8)
- fileIdstring
file id — the unguessable /f/:fileId id returned by create_file
- workspaceIdstring
organization id (a.k.a. workspace id; from create_org / a create tool)
- pathstring
file path/label within the org, e.g. plans/roadmap.md (any nesting; display metadata, not the id)
- contentstringrequired
- baseVersioninteger
- notestring
change note
- linkTokenstring
- keystring
org/workspace access key; overrides REACH_WORKSPACE_KEY (org-scoped create/list/manage only — keys can't own or be shared a file)
edit_file_section
Edit ONE markdown section (heading + body), merged onto head — conflict-free for agents editing DIFFERENT sections (no baseVersion needed). Needs write access. Address by fileId or legacy workspaceId+path.
Parameters (9)
- fileIdstring
file id — the unguessable /f/:fileId id returned by create_file
- workspaceIdstring
organization id (a.k.a. workspace id; from create_org / a create tool)
- pathstring
file path/label within the org, e.g. plans/roadmap.md (any nesting; display metadata, not the id)
- sectionstringrequired
- contentstringrequired
- opstring
- notestring
- linkTokenstring
- keystring
org/workspace access key; overrides REACH_WORKSPACE_KEY (org-scoped create/list/manage only — keys can't own or be shared a file)
share_file
Share a file you OWN with a person by email (read or write). Owner only. Pass remove:true to unshare. The recipient reaches it at /f/:fileId once signed in — the URL never changes.
Parameters (4)
- fileIdstringrequired
file id — the unguessable /f/:fileId id returned by create_file
- emailstringrequired
the person's email
- permstring
default read
- removeboolean
true to revoke this person's access
set_file_link
Set 'anyone with the link' access for a file you OWN: none | view | edit. Owner only. Enabling returns the tokenized URL (/f/:fileId?k=...) to paste; disabling rotates the token so already-shared links stop working.
Parameters (2)
- fileIdstringrequired
file id — the unguessable /f/:fileId id returned by create_file
- modestringrequired
delete_file
Soft-delete a file (recoverable via restore_file; history preserved). Needs write/owner access. Address by fileId or legacy workspaceId+path.
Parameters (4)
- fileIdstring
file id — the unguessable /f/:fileId id returned by create_file
- workspaceIdstring
organization id (a.k.a. workspace id; from create_org / a create tool)
- pathstring
file path/label within the org, e.g. plans/roadmap.md (any nesting; display metadata, not the id)
- keystring
org/workspace access key; overrides REACH_WORKSPACE_KEY (org-scoped create/list/manage only — keys can't own or be shared a file)
restore_file
Restore a soft-deleted file with its history + sharing intact. Address by fileId or legacy workspaceId+path.
Parameters (4)
- fileIdstring
file id — the unguessable /f/:fileId id returned by create_file
- workspaceIdstring
organization id (a.k.a. workspace id; from create_org / a create tool)
- pathstring
file path/label within the org, e.g. plans/roadmap.md (any nesting; display metadata, not the id)
- keystring
org/workspace access key; overrides REACH_WORKSPACE_KEY (org-scoped create/list/manage only — keys can't own or be shared a file)
move_file
Rename/move a file to a new path. Identity-preserving: the fileId, history, and all sharing survive — the /f/:fileId URL keeps working. Address by fileId+to, or legacy workspaceId+from+to.
Parameters (5)
- fileIdstring
file id — the unguessable /f/:fileId id returned by create_file
- tostring
file path/label within the org, e.g. plans/roadmap.md (any nesting; display metadata, not the id)
- workspaceIdstring
organization id (a.k.a. workspace id; from create_org / a create tool)
- fromstring
file path/label within the org, e.g. plans/roadmap.md (any nesting; display metadata, not the id)
- keystring
org/workspace access key; overrides REACH_WORKSPACE_KEY (org-scoped create/list/manage only — keys can't own or be shared a file)
file_history
Get a file's full version + change history (with chainValid for the tamper-evident ledger). Address by fileId or legacy workspaceId+path.
Parameters (4)
- fileIdstring
file id — the unguessable /f/:fileId id returned by create_file
- workspaceIdstring
organization id (a.k.a. workspace id; from create_org / a create tool)
- pathstring
file path/label within the org, e.g. plans/roadmap.md (any nesting; display metadata, not the id)
- keystring
org/workspace access key; overrides REACH_WORKSPACE_KEY (org-scoped create/list/manage only — keys can't own or be shared a file)
diff_file
Bounded unified diff between two versions of a file (defaults previous → head). Address by fileId or legacy workspaceId+path.
Parameters (6)
- fileIdstring
file id — the unguessable /f/:fileId id returned by create_file
- workspaceIdstring
organization id (a.k.a. workspace id; from create_org / a create tool)
- pathstring
file path/label within the org, e.g. plans/roadmap.md (any nesting; display metadata, not the id)
- frominteger
- tointeger
- keystring
org/workspace access key; overrides REACH_WORKSPACE_KEY (org-scoped create/list/manage only — keys can't own or be shared a file)
verify_file
Verify a single file's tamper-evident hash chain. Address by fileId or legacy workspaceId+path.
Parameters (4)
- fileIdstring
file id — the unguessable /f/:fileId id returned by create_file
- workspaceIdstring
organization id (a.k.a. workspace id; from create_org / a create tool)
- pathstring
file path/label within the org, e.g. plans/roadmap.md (any nesting; display metadata, not the id)
- keystring
org/workspace access key; overrides REACH_WORKSPACE_KEY (org-scoped create/list/manage only — keys can't own or be shared a file)
verify_org
Verify an org's tamper-evident history: every accessible file's hash chain + the structural audit log.
Parameters (3)
- orgIdstring
organization id (from create_org / list_orgs)
- workspaceIdstring
organization id (a.k.a. workspace id; from create_org / a create tool)
- keystring
org/workspace access key; overrides REACH_WORKSPACE_KEY (org-scoped create/list/manage only — keys can't own or be shared a file)
verify_workspace
Verify an org's tamper-evident history (alias of verify_org).
Parameters (2)
- workspaceIdstringrequired
organization id (a.k.a. workspace id; from create_org / a create tool)
- keystring
org/workspace access key; overrides REACH_WORKSPACE_KEY (org-scoped create/list/manage only — keys can't own or be shared a file)
mint_key
Mint another access key for the workspace (e.g. to share with a teammate's agent or drop in a KMS). The secret is returned once. Requires manage capability.
Parameters (5)
- workspaceIdstringrequired
organization id (a.k.a. workspace id; from create_org / a create tool)
- labelstring
- actorstring
attribution recorded in the ledger when this key writes (defaults to the workspace actor)
- ttlSecondsinteger
- keystring
org/workspace access key; overrides REACH_WORKSPACE_KEY (org-scoped create/list/manage only — keys can't own or be shared a file)
list_keys
List the (non-secret) access keys on a workspace. Requires manage capability.
Parameters (2)
- workspaceIdstringrequired
organization id (a.k.a. workspace id; from create_org / a create tool)
- keystring
org/workspace access key; overrides REACH_WORKSPACE_KEY (org-scoped create/list/manage only — keys can't own or be shared a file)
revoke_key
Revoke an access key by id; other keys and members are unaffected. Requires manage capability.
Parameters (3)
- workspaceIdstringrequired
organization id (a.k.a. workspace id; from create_org / a create tool)
- idstringrequired
key id from list_keys
- keystring
org/workspace access key; overrides REACH_WORKSPACE_KEY (org-scoped create/list/manage only — keys can't own or be shared a file)
invite_to_org
Invite a person by email into an org (quota-bounded — requirement b). Returns the accept link + your remaining invite quota; if you're out of invites it tells you so. Default role 'member'. Requires manage capability.
Parameters (4)
- orgIdstringrequired
organization id (from create_org / list_orgs)
- emailstringrequired
invitee email
- rolestring
default member
- keystring
org/workspace access key; overrides REACH_WORKSPACE_KEY (org-scoped create/list/manage only — keys can't own or be shared a file)
invite_member
Invite a person by email into an org/workspace (alias of invite_to_org; now quota-aware). Returns an inviteUrl they open to accept. Requires manage capability.
Parameters (4)
- workspaceIdstringrequired
organization id (a.k.a. workspace id; from create_org / a create tool)
- emailstringrequired
invitee email
- rolestring
- keystring
org/workspace access key; overrides REACH_WORKSPACE_KEY (org-scoped create/list/manage only — keys can't own or be shared a file)
list_members
List a workspace's members. Requires manage capability.
Parameters (2)
- workspaceIdstringrequired
organization id (a.k.a. workspace id; from create_org / a create tool)
- keystring
org/workspace access key; overrides REACH_WORKSPACE_KEY (org-scoped create/list/manage only — keys can't own or be shared a file)
remove_member
Remove a member by accountId (their access is revoked promptly; the owner cannot be removed). Requires manage capability.
Parameters (3)
- workspaceIdstringrequired
organization id (a.k.a. workspace id; from create_org / a create tool)
- accountIdstringrequired
- keystring
org/workspace access key; overrides REACH_WORKSPACE_KEY (org-scoped create/list/manage only — keys can't own or be shared a file)
README not available yet.
Install
Configuration
REACH_BASE_URLdefault https://reachpad.devreach instance to target
REACH_WRITE_TOKENsecretbearer token for create/edit/delete (optional; creation is open)
REACH_READ_TOKENsecretbearer token for reading private docs
REACH_ACTORattribution label recorded in the ledger
claude_desktop_config.json
{
"mcpServers": {
"mcp": {
"command": "npx",
"args": [
"-y",
"@reachpad/mcp@2.0.3"
],
"env": {
"REACH_BASE_URL": "https://reachpad.dev",
"REACH_WRITE_TOKEN": "<YOUR_REACH_WRITE_TOKEN>",
"REACH_READ_TOKEN": "<YOUR_REACH_READ_TOKEN>",
"REACH_ACTOR": "<YOUR_REACH_ACTOR>"
}
}
}
}