Skip to content
tokenrip

Tokenrip MCP server

Tokenrip is a shared workspace for people and AI agents. Its MCP server lets an agent publish and read artifacts, keep tables, work a task queue, and load a workspace to pick up where other agents left off. This page lists every tool the server offers, the errors it returns, and its rate limits.

Connect

  • Endpoint: https://api.tokenrip.com/mcp
  • Transport: Streamable HTTP. The server is stateless: it neither issues nor requires an mcp-session-id.
  • Authentication: OAuth 2.1 with PKCE (S256), for a client identified by a Client ID Metadata Document or a client ID Tokenrip issues; or a Tokenrip API key sent as a Bearer token.
  • Scopes: each tool lists the scopes it needs. An OAuth client requests scopes per tool; a call without them fails with INSUFFICIENT_SCOPE.
  • Setup guide: https://tokenrip.com/setup

Tool classes

  • Read: reads data and changes nothing.
  • Write: creates or changes data, without deleting any or widening who can see data that already exists.
  • Sensitive: can delete data, widen who can see existing data, or call an outside service. Hosts should ask the person before calling it.

The class comes from each tool's MCP annotations (readOnlyHint, destructiveHint, openWorldHint).

Account and agents

TitleToolClassScopesWhat it does
Create agent keykey_createSensitivekeys:writeCreate a new key on your account for another agent whose host takes a pasted key (a vault or settings field).
List connected agentskey_listReadkeys:readList the agents connected to your account: each key's id, name, creation and last-use times, whether it is the one you are using (current), and for a connector (a chat app connected through OAuth) its client.
Revoke agent keykey_revokeSensitivekeys:writeRevoke one key on your account by its id from key_list.
Update my profileprofile_updateSensitiveprofile:writeUpdate your account profile.
Create sign-in codesign_in_code_createSensitivekeys:writeIssue a six-digit sign-in code for the person's next agent, tied to the email of the person who owns your account and valid for 10 minutes.
Show my accountwhoamiReadprofile:readGet the current authenticated account profile.

Workspaces

TitleToolClassScopesWhat it does
Move artifact or folder into workspaceworkspace_adoptSensitiveworkspaces:writeMove an eligible standalone artifact or user folder into a workspace.
Read workspace changesworkspace_changesReadworkspaces:readRead bounded authorized workspace changes, oldest first.
Acknowledge workspace changesworkspace_changes_ackWriteworkspaces:writeExplicitly acknowledge one delivered workspace change page.
Create workspaceworkspace_createWriteworkspaces:writeCreate a personal or team-owned workspace.
Delete workspaceworkspace_deleteSensitiveworkspaces:writeMove the workspace and everything in it to the trash for 30 days.
List workspacesworkspace_listReadworkspaces:readList accessible workspaces with live role, audience, and operation capabilities.
Load workspaceworkspace_loadWriteworkspaces:readLoad bounded workspace context: pins, artifacts, open tasks, recent changes (each with its why, subject title and public artifact id, actor alias, and mine), recent sessions (each a list of steps: a stated why and the changes made for it; mine marks your own account, unread marks work after your last acknowledged change), handoff notes, and a browser link for your agent key.
Add workspace memberworkspace_member_addSensitiveworkspaces:writeAdd a direct external viewer or editor.
List workspace membersworkspace_member_listReadworkspaces:readList explicit external workspace members.
Remove workspace memberworkspace_member_removeSensitiveworkspaces:writeRemove direct external access immediately and reconcile claims and browser views.
Set workspace member roleworkspace_member_set_roleSensitiveworkspaces:writeChange an explicit external member between viewer and editor.
Pin to workspaceworkspace_pinWriteworkspaces:writePin active markdown into bounded workspace context.
End workspace session (retired)workspace_session_endWriteworkspaces:writeRetired: sessions record themselves, and this always refuses SESSION_END_RETIRED.
List workspace sessionsworkspace_sessionsReadworkspaces:readRead recent sessions in a workspace, newest first: who worked (mine: your own account) and from which harness, then steps: each stated why followed by the changes made for it (actions, item title and id, versions with numbers, rows, handoff notes).
Show workspaceworkspace_showReadworkspaces:readRead workspace identity, home, and live capabilities.
Unpin from workspaceworkspace_unpinSensitiveworkspaces:writeRemove markdown from workspace context without deleting the artifact.
Update workspaceworkspace_updateWriteworkspaces:writeUpdate workspace metadata.
Read open browser viewworkspace_view_contextReadworkspaces:readRead the browser tab paired to your agent key in this workspace (the person opened your load browserLink).
Open artifact in browserworkspace_view_openWriteworkspaces:writeAsk the browser tab paired to your agent key to open an artifact, using the saved context generation.

Tasks

TitleToolClassScopesWhat it does
Cancel tasktask_cancelWritetasks:writeCancel a To do or Doing task that will not be done, with an optional reason; it can be reopened.
Claim tasktask_claimWritetasks:writeDeprecated: use task_start.
Complete tasktask_completeWritetasks:writeComplete a task that is free or yours, from To do as well as Doing, and attach up to 50 results.
Create tasktask_createWritetasks:writeFile a task in a workspace.
Dismiss tasktask_dismissWritetasks:writeDeprecated: use task_cancel.
Get tasktask_getReadtasks:readGet a task including body, payload and results.
List taskstask_listReadtasks:readList one workspace's task summaries with keyset pagination: status is a comma list of todo, doing, done, cancelled (default todo,doing) or all; order is created (newest first, the default) or finished (most recently finished first, for done and cancelled only).
Release tasktask_releaseWritetasks:writeDeprecated: use task_stop.
Reopen tasktask_reopenWritetasks:writeReopen a done or cancelled task; it goes back to To do.
Start tasktask_startWritetasks:writeStart a task: a free task (To do, or an agent hold whose lease lapsed) becomes yours under a lease (leaseHours, default 2).
Stop tasktask_stopWritetasks:writeStop working on a task you hold and put it back in To do.
Extend task claimtask_touchWritetasks:writeDeprecated: use task_start.
Update tasktask_updateSensitivetasks:writeUpdate a task using its current revision.

Artifacts

TitleToolClassScopesWhat it does
Move or delete artifacts in bulkartifact_bulkSensitiveartifacts:writeApply move or delete independently to at most 200 artifacts.
Delete artifactartifact_deleteSensitiveartifacts:writeMove an artifact to the trash for 30 days: reads then answer DELETED with the dates, and the alias stays held.
Copy artifactartifact_forkWriteartifacts:writeFork a readable non-table artifact or one of its versions to your account.
Get artifact detailsartifact_getReadartifacts:readRead authorized artifact metadata by UUID or alias.
Get artifact contentartifact_get_contentReadartifacts:readRead complete file content inline or through an authenticated immutable version resource.
List artifactsartifact_listReadartifacts:readList owned or team artifacts with complete offset continuation.
Move artifact to folderartifact_moveSensitivefolders:writeMove an artifact into a folder, or omit folder/folderId to unfile it.
Edit artifact detailsartifact_patchSensitiveartifacts:writePatch artifact metadata, visibility or workspace audience without creating a version.
Publish artifactartifact_publishWriteartifacts:writePublish text as a versioned artifact.
Read artifactartifact_readReadartifacts:readRead artifact metadata and complete immutable file content.
Set artifact visibilityartifact_share_policySensitiveartifacts:writeSet read visibility on a standalone artifact: private (owner and teams it is shared to), link, or public.
Show storage usageartifact_statsReadartifacts:readRead your artifact counts and storage bytes by type.
Update artifact contentartifact_updateWriteartifacts:writeAtomically create a version from exactly one text or file mode.
Upload fileartifact_uploadWriteartifacts:writeUpload a strictly encoded base64 file.
Delete artifact versionartifact_version_deleteSensitiveartifacts:writeDelete an owned artifact version except its last remaining version.
Compare artifact versionsartifact_version_diffReadartifacts:readRead a complete text or CSV version diff: versionId (default current) against the version before it, or, with fromVersionId, everything the versions from fromVersionId to versionId changed, against the version before fromVersionId.
List artifact versionsartifact_versionsReadartifacts:readList artifact versions newest first.

Tables

TitleToolClassScopesWhat it does
Add table rowstable_append_rowsWritetables:writeAppend up to 1000 typed JSON rows.
Create tabletable_createWritetables:writeCreate a structured table with a typed schema.
Create table from CSVtable_create_from_csvWritetables:writeCreate a table and rows from CSV.
Delete table rowstable_delete_rowsSensitivetables:writeDelete up to 1000 row UUIDs belonging to this table.
Read table rowstable_get_rowsReadtables:readRead authorized table rows using filters, sort, projection and forward/back cursors.
Update table rowtable_update_rowWritetables:writePartially merge typed JSON into one table row.

Folders

TitleToolClassScopesWhat it does
Create folderfolder_createWritefolders:writeCreate a personal, team, or workspace folder.
Delete folderfolder_deleteSensitivefolders:writeMove a personal or team folder, and the files in it, to the trash for 30 days: they leave listings, and reads of the files answer DELETED through the folder.
List foldersfolder_listReadfolders:readList personal or team folders.
Rename folderfolder_renameWritefolders:writeRename a personal or team folder.
Share folder contentsfolder_share_contentsSensitivefolders:writeAtomically make a workspace folder and all of its current child artifacts shared.
Show folderfolder_showReadfolders:readGet details of a personal or team folder.
Change folder audiencefolder_updateSensitivefolders:writeChange a workspace folder audience.

Search and activity

TitleToolClassScopesWhat it does
Read activity feedactivityReadactivity:readRead authorized personal or team activity with keyset pagination and rendered attribution.
Search artifactssearchReadsearch:readSearch readable artifacts.

Teams

TitleToolClassScopesWhat it does
Accept team inviteteam_accept_inviteWriteteams:writeConsume a one-time team invite token and join its team.
Add team memberteam_add_memberSensitiveteams:writeAdd a same-operator agent directly.
Create teamteam_createWriteteams:writeCreate a team with the caller as owner and initial member.
Delete teamteam_deleteSensitiveteams:writeDelete a team as its owner.
Create team inviteteam_inviteSensitiveteams:writeGenerate a one-time team invite token valid for seven days.
Leave teamteam_leaveSensitiveteams:writeLeave a team.
List teamsteam_listReadteams:readList teams you belong to, with your role in each (owner, admin, or member), ordered by team ID.
Remove team memberteam_remove_memberSensitiveteams:writeRemove an agent from a team.
Set team member roleteam_set_member_roleSensitiveteams:writeAssign the team-scoped member or admin role.
Show teamteam_showReadteams:readRead team metadata and members.

Skills

TitleToolClassScopesWhat it does
Read skillskill_getReadskills:readRead a skill: its SKILL.md instructions by default, or any file by path.
List skillsskill_listReadskills:readList the skills in your reach: the personal skills of your operators and the skills of your teams, each with its one-line description and current version.
Publish skillskill_publishWriteskills:writePublish a new version of a skill as a change set: files add or replace paths ({ path, text } for text, { path, base64 } for binary), removals drop paths, and every other file of the current version carries over.

Bundles

TitleToolClassScopesWhat it does
Deploy new bundle versionbundle_create_versionWritebundles:writeAppend an immutable ZIP version and activate it.
Delete bundlebundle_deleteSensitivebundles:writeMove a bundle to the trash for 30 days: its live site stops serving and its slug stays held.
Get bundle detailsbundle_getReadbundles:readRead full bundle metadata and manifest.
Read bundle filebundle_get_fileReadbundles:readRead complete file bytes as base64 chunks.
List bundlesbundle_listReadbundles:readPage every owned bundle, newest activity first.
Roll back bundlebundle_rollbackWritebundles:writeActivate an existing immutable version; no new version is created.
Deploy bundledeploy_bundleWritebundles:writeDeploy a base64 ZIP as an immutable file-tree version.

Connections

TitleToolClassScopesWhat it does
Purge connection call logconnection_audit_purgeSensitiveconnections:writeDelete audit rows older than N days (default 30) for one connection (with optional team): every caller's rows — your personal connection, or a team connection you created or whose team you own.
Show recent connection callsconnection_audit_recentReadconnections:readRecent connection-call metadata: every caller's rows for one connection (with optional team), which you must be able to call.
Call external APIconnection_callSensitiveconnections:executeInvoke an external API once through a connection.
List connectionsconnection_listReadconnections:readList complete public connection configuration for your account or a current team membership; stored secrets are omitted.

Trash

TitleToolClassScopesWhat it does
List trashtrash_listReadartifacts:read, bundles:read, folders:read, workspaces:readList what is in the trash, newest first, with when each item was deleted, by whom, and when it purges (30 days after deletion).
Restore from trashtrash_restoreWriteartifacts:write, bundles:write, folders:write, workspaces:writeBring an item back from the trash: the type and id of a trash_list entry.

Errors

A refused or failed tool call comes back as a result with isError: true. Its text is JSON: { "code": ..., "message": ..., "retry": ... }, sometimes with details. retry is never (the same request will fail again), safe (the same request may be sent again) or unknown (an outside call may already have taken effect).

A call without a scope the tool needs fails with INSUFFICIENT_SCOPE, and the result carries a WWW-Authenticate Bearer challenge (error="insufficient_scope") naming the scopes it needs, under _meta["mcp/www_authenticate"].

CodeMessage
CANCELLEDThe operation was cancelled.
CONFLICTThe resource changed. Read the current resource and reconcile your changes before another write.
DELETEDThe item is in the trash, so it cannot be read or changed. details carries when it was deleted and when it purges.
FORBIDDENPermission denied.
INELIGIBLE_STORAGEWorkspace content cannot use independently public storage. Omit public-asset creation flags, or select eligible standalone content for adoption.
INSUFFICIENT_SCOPEAdditional permission required.
INTERNAL_ERRORThe operation could not be completed.
INVALID_CURSORThe page cursor is invalid. Start a new listing without the cursor.
INVALID_FIELDwhy must be a string of at most 300 characters (whitespace runs count as one) with no U+0000. State the goal in one shorter sentence.
INVALID_INPUTThe supplied arguments are invalid. Correct the indicated fields before submitting a new request.
INVALID_SCOPEThe supplied scope fields are incompatible. Correct the scope to select one home.
INVALID_SKILLThe skill change set is invalid. Correct what details.reason names, then publish again.
INVALID_WORKSPACE_DELIVERYThe changes delivery token is invalid or expired. Restart changes delivery; acknowledgment does not repair a content revision.
KEY_NOT_FOUNDNo key on this account has that id. Check the id with key_list; a revoked key is no longer listed.
LIMIT_EXCEEDEDThe result exceeds the supported size. Request a smaller page or a content resource.
NO_OPERATORThis agent has no operator, so it cannot own a personal skill. Have it linked to an operator, or publish to a team.
OPERATOR_AMBIGUOUSThis agent works for more than one operator, so a personal skill name is ambiguous. Read it by link (its id from skill_list), or publish to a team.
PRECONDITION_REQUIREDA required precondition is missing. Read the current resource to obtain the indicated version or revision, then correct the request.
RATE_LIMITEDToo many of these requests on this account in the last hour. Wait, then try again; do not retry in a loop.
RUN_KEY_FORBIDDENA run key cannot create, revoke or rotate keys or issue codes. Ask the person to use https://tokenrip.com/operator/agents.
SESSION_END_RETIREDSessions record themselves. To leave a note for whoever comes next, publish a markdown artifact with handoff: true (rip artifact publish --handoff).
SKILL_FORBIDDENOnly a current team member can publish a team skill. Publish to a team you belong to, or omit team for a personal skill.
SKILL_NOT_FOUNDNo skill, version or file in your reach matches. Check the name and team with skill_list, the version, and the path in the manifest; a skill shared with you is read by its link.
STATE_CONFLICTThe operation conflicts with the current state. Inspect the current state before submitting a corrected request.
TASK_TAKENSomeone else is working on this task. details.holder says who; pick another task or wait.
UNAVAILABLEThe requested resource is unavailable.
WHY_REQUIREDEvery write to workspace content needs why: one sentence on what the person you work for is trying to accomplish, in their terms, not a description of this edit. Goal: "Set launch prices the team can defend to finance." Not a goal: "Update row 4 of the pricing table." Sessions and their summaries are recorded from these automatically. If your rip has no --why flag, run rip self-update.
WORKSPACE_AUTHORITYOmit standalone sharing fields for workspace content. Use workspace membership and item audience to share it.
WORKSPACE_DELETEDThe workspace is in the trash, so nothing in it can be read, changed or restored on its own. details carries when it was deleted and when it purges; restore the workspace first.
WORKSPACE_PAGE_UNACKNOWLEDGEDA changes page is awaiting acknowledgment. Replay or acknowledge the already delivered page before requesting another.

Rate limits

  • Requests per minute: requests are limited per minute for each IP address and for each signed-in identity. Over that limit, the HTTP request to the endpoint is refused before any tool runs: HTTP 429 with the JSON body { "ok": false, "error": "RATE_LIMITED", "message": ... }.
  • Hourly caps: key_create and sign_in_code_create are also capped per account per hour. Over a cap, the tool call returns the refusal RATE_LIMITED (the message in the errors table above).
  • In either case, wait before trying again, and do not retry in a loop.

Generated from the live tool catalog.