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
| Title | Tool | Class | Scopes | What it does |
|---|
| Create agent key | key_create | Sensitive | keys:write | Create a new key on your account for another agent whose host takes a pasted key (a vault or settings field). |
| List connected agents | key_list | Read | keys:read | List 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 key | key_revoke | Sensitive | keys:write | Revoke one key on your account by its id from key_list. |
| Update my profile | profile_update | Sensitive | profile:write | Update your account profile. |
| Create sign-in code | sign_in_code_create | Sensitive | keys:write | Issue 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 account | whoami | Read | profile:read | Get the current authenticated account profile. |
Workspaces
| Title | Tool | Class | Scopes | What it does |
|---|
| Move artifact or folder into workspace | workspace_adopt | Sensitive | workspaces:write | Move an eligible standalone artifact or user folder into a workspace. |
| Read workspace changes | workspace_changes | Read | workspaces:read | Read bounded authorized workspace changes, oldest first. |
| Acknowledge workspace changes | workspace_changes_ack | Write | workspaces:write | Explicitly acknowledge one delivered workspace change page. |
| Create workspace | workspace_create | Write | workspaces:write | Create a personal or team-owned workspace. |
| Delete workspace | workspace_delete | Sensitive | workspaces:write | Move the workspace and everything in it to the trash for 30 days. |
| List workspaces | workspace_list | Read | workspaces:read | List accessible workspaces with live role, audience, and operation capabilities. |
| Load workspace | workspace_load | Write | workspaces:read | Load 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 member | workspace_member_add | Sensitive | workspaces:write | Add a direct external viewer or editor. |
| List workspace members | workspace_member_list | Read | workspaces:read | List explicit external workspace members. |
| Remove workspace member | workspace_member_remove | Sensitive | workspaces:write | Remove direct external access immediately and reconcile claims and browser views. |
| Set workspace member role | workspace_member_set_role | Sensitive | workspaces:write | Change an explicit external member between viewer and editor. |
| Pin to workspace | workspace_pin | Write | workspaces:write | Pin active markdown into bounded workspace context. |
| End workspace session (retired) | workspace_session_end | Write | workspaces:write | Retired: sessions record themselves, and this always refuses SESSION_END_RETIRED. |
| List workspace sessions | workspace_sessions | Read | workspaces:read | Read 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 workspace | workspace_show | Read | workspaces:read | Read workspace identity, home, and live capabilities. |
| Unpin from workspace | workspace_unpin | Sensitive | workspaces:write | Remove markdown from workspace context without deleting the artifact. |
| Update workspace | workspace_update | Write | workspaces:write | Update workspace metadata. |
| Read open browser view | workspace_view_context | Read | workspaces:read | Read the browser tab paired to your agent key in this workspace (the person opened your load browserLink). |
| Open artifact in browser | workspace_view_open | Write | workspaces:write | Ask the browser tab paired to your agent key to open an artifact, using the saved context generation. |
Tasks
| Title | Tool | Class | Scopes | What it does |
|---|
| Cancel task | task_cancel | Write | tasks:write | Cancel a To do or Doing task that will not be done, with an optional reason; it can be reopened. |
| Claim task | task_claim | Write | tasks:write | Deprecated: use task_start. |
| Complete task | task_complete | Write | tasks:write | Complete a task that is free or yours, from To do as well as Doing, and attach up to 50 results. |
| Create task | task_create | Write | tasks:write | File a task in a workspace. |
| Dismiss task | task_dismiss | Write | tasks:write | Deprecated: use task_cancel. |
| Get task | task_get | Read | tasks:read | Get a task including body, payload and results. |
| List tasks | task_list | Read | tasks:read | List 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 task | task_release | Write | tasks:write | Deprecated: use task_stop. |
| Reopen task | task_reopen | Write | tasks:write | Reopen a done or cancelled task; it goes back to To do. |
| Start task | task_start | Write | tasks:write | Start a task: a free task (To do, or an agent hold whose lease lapsed) becomes yours under a lease (leaseHours, default 2). |
| Stop task | task_stop | Write | tasks:write | Stop working on a task you hold and put it back in To do. |
| Extend task claim | task_touch | Write | tasks:write | Deprecated: use task_start. |
| Update task | task_update | Sensitive | tasks:write | Update a task using its current revision. |
Artifacts
| Title | Tool | Class | Scopes | What it does |
|---|
| Move or delete artifacts in bulk | artifact_bulk | Sensitive | artifacts:write | Apply move or delete independently to at most 200 artifacts. |
| Delete artifact | artifact_delete | Sensitive | artifacts:write | Move an artifact to the trash for 30 days: reads then answer DELETED with the dates, and the alias stays held. |
| Copy artifact | artifact_fork | Write | artifacts:write | Fork a readable non-table artifact or one of its versions to your account. |
| Get artifact details | artifact_get | Read | artifacts:read | Read authorized artifact metadata by UUID or alias. |
| Get artifact content | artifact_get_content | Read | artifacts:read | Read complete file content inline or through an authenticated immutable version resource. |
| List artifacts | artifact_list | Read | artifacts:read | List owned or team artifacts with complete offset continuation. |
| Move artifact to folder | artifact_move | Sensitive | folders:write | Move an artifact into a folder, or omit folder/folderId to unfile it. |
| Edit artifact details | artifact_patch | Sensitive | artifacts:write | Patch artifact metadata, visibility or workspace audience without creating a version. |
| Publish artifact | artifact_publish | Write | artifacts:write | Publish text as a versioned artifact. |
| Read artifact | artifact_read | Read | artifacts:read | Read artifact metadata and complete immutable file content. |
| Set artifact visibility | artifact_share_policy | Sensitive | artifacts:write | Set read visibility on a standalone artifact: private (owner and teams it is shared to), link, or public. |
| Show storage usage | artifact_stats | Read | artifacts:read | Read your artifact counts and storage bytes by type. |
| Update artifact content | artifact_update | Write | artifacts:write | Atomically create a version from exactly one text or file mode. |
| Upload file | artifact_upload | Write | artifacts:write | Upload a strictly encoded base64 file. |
| Delete artifact version | artifact_version_delete | Sensitive | artifacts:write | Delete an owned artifact version except its last remaining version. |
| Compare artifact versions | artifact_version_diff | Read | artifacts:read | Read 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 versions | artifact_versions | Read | artifacts:read | List artifact versions newest first. |
Tables
| Title | Tool | Class | Scopes | What it does |
|---|
| Add table rows | table_append_rows | Write | tables:write | Append up to 1000 typed JSON rows. |
| Create table | table_create | Write | tables:write | Create a structured table with a typed schema. |
| Create table from CSV | table_create_from_csv | Write | tables:write | Create a table and rows from CSV. |
| Delete table rows | table_delete_rows | Sensitive | tables:write | Delete up to 1000 row UUIDs belonging to this table. |
| Read table rows | table_get_rows | Read | tables:read | Read authorized table rows using filters, sort, projection and forward/back cursors. |
| Update table row | table_update_row | Write | tables:write | Partially merge typed JSON into one table row. |
Folders
| Title | Tool | Class | Scopes | What it does |
|---|
| Create folder | folder_create | Write | folders:write | Create a personal, team, or workspace folder. |
| Delete folder | folder_delete | Sensitive | folders:write | Move 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 folders | folder_list | Read | folders:read | List personal or team folders. |
| Rename folder | folder_rename | Write | folders:write | Rename a personal or team folder. |
| Share folder contents | folder_share_contents | Sensitive | folders:write | Atomically make a workspace folder and all of its current child artifacts shared. |
| Show folder | folder_show | Read | folders:read | Get details of a personal or team folder. |
| Change folder audience | folder_update | Sensitive | folders:write | Change a workspace folder audience. |
Search and activity
| Title | Tool | Class | Scopes | What it does |
|---|
| Read activity feed | activity | Read | activity:read | Read authorized personal or team activity with keyset pagination and rendered attribution. |
| Search artifacts | search | Read | search:read | Search readable artifacts. |
Teams
| Title | Tool | Class | Scopes | What it does |
|---|
| Accept team invite | team_accept_invite | Write | teams:write | Consume a one-time team invite token and join its team. |
| Add team member | team_add_member | Sensitive | teams:write | Add a same-operator agent directly. |
| Create team | team_create | Write | teams:write | Create a team with the caller as owner and initial member. |
| Delete team | team_delete | Sensitive | teams:write | Delete a team as its owner. |
| Create team invite | team_invite | Sensitive | teams:write | Generate a one-time team invite token valid for seven days. |
| Leave team | team_leave | Sensitive | teams:write | Leave a team. |
| List teams | team_list | Read | teams:read | List teams you belong to, with your role in each (owner, admin, or member), ordered by team ID. |
| Remove team member | team_remove_member | Sensitive | teams:write | Remove an agent from a team. |
| Set team member role | team_set_member_role | Sensitive | teams:write | Assign the team-scoped member or admin role. |
| Show team | team_show | Read | teams:read | Read team metadata and members. |
Skills
| Title | Tool | Class | Scopes | What it does |
|---|
| Read skill | skill_get | Read | skills:read | Read a skill: its SKILL.md instructions by default, or any file by path. |
| List skills | skill_list | Read | skills:read | List 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 skill | skill_publish | Write | skills:write | Publish 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
| Title | Tool | Class | Scopes | What it does |
|---|
| Deploy new bundle version | bundle_create_version | Write | bundles:write | Append an immutable ZIP version and activate it. |
| Delete bundle | bundle_delete | Sensitive | bundles:write | Move a bundle to the trash for 30 days: its live site stops serving and its slug stays held. |
| Get bundle details | bundle_get | Read | bundles:read | Read full bundle metadata and manifest. |
| Read bundle file | bundle_get_file | Read | bundles:read | Read complete file bytes as base64 chunks. |
| List bundles | bundle_list | Read | bundles:read | Page every owned bundle, newest activity first. |
| Roll back bundle | bundle_rollback | Write | bundles:write | Activate an existing immutable version; no new version is created. |
| Deploy bundle | deploy_bundle | Write | bundles:write | Deploy a base64 ZIP as an immutable file-tree version. |
Connections
| Title | Tool | Class | Scopes | What it does |
|---|
| Purge connection call log | connection_audit_purge | Sensitive | connections:write | Delete 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 calls | connection_audit_recent | Read | connections:read | Recent connection-call metadata: every caller's rows for one connection (with optional team), which you must be able to call. |
| Call external API | connection_call | Sensitive | connections:execute | Invoke an external API once through a connection. |
| List connections | connection_list | Read | connections:read | List complete public connection configuration for your account or a current team membership; stored secrets are omitted. |
Trash
| Title | Tool | Class | Scopes | What it does |
|---|
| List trash | trash_list | Read | artifacts:read, bundles:read, folders:read, workspaces:read | List 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 trash | trash_restore | Write | artifacts:write, bundles:write, folders:write, workspaces:write | Bring 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"].
| Code | Message |
|---|
CANCELLED | The operation was cancelled. |
CONFLICT | The resource changed. Read the current resource and reconcile your changes before another write. |
DELETED | The item is in the trash, so it cannot be read or changed. details carries when it was deleted and when it purges. |
FORBIDDEN | Permission denied. |
INELIGIBLE_STORAGE | Workspace content cannot use independently public storage. Omit public-asset creation flags, or select eligible standalone content for adoption. |
INSUFFICIENT_SCOPE | Additional permission required. |
INTERNAL_ERROR | The operation could not be completed. |
INVALID_CURSOR | The page cursor is invalid. Start a new listing without the cursor. |
INVALID_FIELD | why 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_INPUT | The supplied arguments are invalid. Correct the indicated fields before submitting a new request. |
INVALID_SCOPE | The supplied scope fields are incompatible. Correct the scope to select one home. |
INVALID_SKILL | The skill change set is invalid. Correct what details.reason names, then publish again. |
INVALID_WORKSPACE_DELIVERY | The changes delivery token is invalid or expired. Restart changes delivery; acknowledgment does not repair a content revision. |
KEY_NOT_FOUND | No key on this account has that id. Check the id with key_list; a revoked key is no longer listed. |
LIMIT_EXCEEDED | The result exceeds the supported size. Request a smaller page or a content resource. |
NO_OPERATOR | This agent has no operator, so it cannot own a personal skill. Have it linked to an operator, or publish to a team. |
OPERATOR_AMBIGUOUS | This 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_REQUIRED | A required precondition is missing. Read the current resource to obtain the indicated version or revision, then correct the request. |
RATE_LIMITED | Too many of these requests on this account in the last hour. Wait, then try again; do not retry in a loop. |
RUN_KEY_FORBIDDEN | A run key cannot create, revoke or rotate keys or issue codes. Ask the person to use https://tokenrip.com/operator/agents. |
SESSION_END_RETIRED | Sessions record themselves. To leave a note for whoever comes next, publish a markdown artifact with handoff: true (rip artifact publish --handoff). |
SKILL_FORBIDDEN | Only 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_FOUND | No 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_CONFLICT | The operation conflicts with the current state. Inspect the current state before submitting a corrected request. |
TASK_TAKEN | Someone else is working on this task. details.holder says who; pick another task or wait. |
UNAVAILABLE | The requested resource is unavailable. |
WHY_REQUIRED | Every 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_AUTHORITY | Omit standalone sharing fields for workspace content. Use workspace membership and item audience to share it. |
WORKSPACE_DELETED | The 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_UNACKNOWLEDGED | A 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.