Cross-agent artifact workspace with provenance across Claude Code, Codex, Cursor, LangGraph.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Bearer <AgentDrive API key>. Get one free at https://app.agentdrive.sh (no credit card).
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Get recent activity in a workspace (file writes, comments, shares).
Workspace ID
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Get recent activity in a workspace (file writes, comments, shares).
| Argument | Type | Description |
|---|---|---|
| workspace_id* | string | Workspace ID |
{
"type": "object",
"required": [
"workspace_id"
],
"properties": {
"workspace_id": {
"type": "string",
"description": "Workspace ID"
}
},
"additionalProperties": false
}Add a comment to a file.
| Argument | Type | Description |
|---|---|---|
| body* | string | Comment text |
| file_id* | string | File ID to comment on |
| line_end | number | End line number (optional) |
| line_start | number | Start line number (optional) |
| workspace_id* | string | Workspace ID |
{
"type": "object",
"required": [
"workspace_id",
"file_id",
"body"
],
"properties": {
"body": {
"type": "string",
"description": "Comment text"
},
"file_id": {
"type": "string",
"description": "File ID to comment on"
},
"line_end": {
"type": "number",
"description": "End line number (optional)"
},
"line_start": {
"type": "number",
"description": "Start line number (optional)"
},
"workspace_id": {
"type": "string",
"description": "Workspace ID"
}
},
"additionalProperties": false
}Auto-pull the most relevant artifacts from prior agent sessions for the task you are about to do. Combines semantic relevance with recency. Call this at the START of any non-trivial task to ground the agent in prior context — replaces manual copy-paste of artifacts between sessions.
| Argument | Type | Description |
|---|---|---|
| task* | string | What you are about to do — used to rank prior artifacts by relevance |
| limit | integer | Max artifacts to return (default 5, max 20) |
| workspace_id | string | Scope to a single workspace; omit for org-wide context |
{
"type": "object",
"required": [
"task"
],
"properties": {
"task": {
"type": "string",
"maxLength": 2000,
"minLength": 1,
"description": "What you are about to do — used to rank prior artifacts by relevance"
},
"limit": {
"type": "integer",
"maximum": 20,
"description": "Max artifacts to return (default 5, max 20)",
"exclusiveMinimum": 0
},
"workspace_id": {
"type": "string",
"description": "Scope to a single workspace; omit for org-wide context"
}
},
"additionalProperties": false
}Delete a file from a workspace.
| Argument | Type | Description |
|---|---|---|
| file_id* | string | File ID to delete |
| workspace_id* | string | Workspace ID |
{
"type": "object",
"required": [
"workspace_id",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"description": "File ID to delete"
},
"workspace_id": {
"type": "string",
"description": "Workspace ID"
}
},
"additionalProperties": false
}Read human comments on a file. Use this to check if humans have left feedback.
| Argument | Type | Description |
|---|---|---|
| file_id* | string | File ID to read comments from |
| workspace_id* | string | Workspace ID |
{
"type": "object",
"required": [
"workspace_id",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"description": "File ID to read comments from"
},
"workspace_id": {
"type": "string",
"description": "Workspace ID"
}
},
"additionalProperties": false
}Invite a human to your organization by email. They will receive a verification code to join.
| Argument | Type | Description |
|---|---|---|
| role | string | Role in the organization (default: member) |
| email* | string | Email address of the human to invite to your organization |
{
"type": "object",
"required": [
"email"
],
"properties": {
"role": {
"enum": [
"owner",
"admin",
"member"
],
"type": "string",
"default": "member",
"description": "Role in the organization (default: member)"
},
"email": {
"type": "string",
"description": "Email address of the human to invite to your organization"
}
},
"additionalProperties": false
}List files in a workspace, optionally filtered by path prefix.
| Argument | Type | Description |
|---|---|---|
| prefix | string | Path prefix filter (e.g. "notes/") |
| workspace_id* | string | Workspace ID |
{
"type": "object",
"required": [
"workspace_id"
],
"properties": {
"prefix": {
"type": "string",
"description": "Path prefix filter (e.g. \"notes/\")"
},
"workspace_id": {
"type": "string",
"description": "Workspace ID"
}
},
"additionalProperties": false
}Log an agent run to AgentDrive's provenance store. Captures task, status, referenced/produced artifacts, and cross-platform identity (which agent on which tool). Used for retrospective context retrieval and team-wide audit.
| Argument | Type | Description |
|---|---|---|
| task* | string | What the agent did or is doing (free text) |
| run_id | string | Existing run ID to update; omit to let server allocate |
| status | string | Run outcome (default success) |
| metadata | object | Free-form key/value metadata |
| duration_ms | integer | Wall-clock duration in milliseconds |
| artifacts_produced | array | Paths of artifacts the run wrote |
| artifacts_referenced | array | Paths of artifacts the run read |
{
"type": "object",
"required": [
"task"
],
"properties": {
"task": {
"type": "string",
"minLength": 1,
"description": "What the agent did or is doing (free text)"
},
"run_id": {
"type": "string",
"description": "Existing run ID to update; omit to let server allocate"
},
"status": {
"enum": [
"success",
"failure",
"partial",
"in_progress"
],
"type": "string",
"description": "Run outcome (default success)"
},
"metadata": {
"type": "object",
"description": "Free-form key/value metadata",
"additionalProperties": {}
},
"duration_ms": {
"type": "integer",
"minimum": 0,
"description": "Wall-clock duration in milliseconds"
},
"artifacts_produced": {
"type": "array",
"items": {
"type": "string"
},
"description": "Paths of artifacts the run wrote"
},
"artifacts_referenced": {
"type": "array",
"items": {
"type": "string"
},
"description": "Paths of artifacts the run read"
}
},
"additionalProperties": false
}View your organization details: agents, members, plan, and usage.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Read a file's content from a workspace.
| Argument | Type | Description |
|---|---|---|
| file_id* | string | File ID to read |
| workspace_id* | string | Workspace ID |
{
"type": "object",
"required": [
"workspace_id",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"description": "File ID to read"
},
"workspace_id": {
"type": "string",
"description": "Workspace ID"
}
},
"additionalProperties": false
}Recall persistent facts and preferences your agents have written. In v1 this returns semantic search results across artifacts; v1.5 will narrow to auto-extracted facts (preferences, decisions, key entities).
| Argument | Type | Description |
|---|---|---|
| query* | string | Recall query — what fact, preference, or decision are you trying to remember? |
| top_k | integer | Max results (default 5, max 20) |
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"maxLength": 2000,
"minLength": 1,
"description": "Recall query — what fact, preference, or decision are you trying to remember?"
},
"top_k": {
"type": "integer",
"maximum": 20,
"description": "Max results (default 5, max 20)",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}Load a compact handoff brief (goal, files touched, recent turns) from a prior session, by default the latest one from a different harness, so you can continue that work.
| Argument | Type | Description |
|---|---|---|
| platform | string | When session_id is omitted, only consider sessions from this harness |
| max_chars | integer | Handoff size budget in characters (default 12000) |
| session_id | string | Session run id from drive_sessions (e.g. codex:abc123); omit to pick the latest session from another harness |
{
"type": "object",
"properties": {
"platform": {
"type": "string",
"description": "When session_id is omitted, only consider sessions from this harness"
},
"max_chars": {
"type": "integer",
"maximum": 50000,
"minimum": 1000,
"description": "Handoff size budget in characters (default 12000)"
},
"session_id": {
"type": "string",
"description": "Session run id from drive_sessions (e.g. codex:abc123); omit to pick the latest session from another harness"
}
},
"additionalProperties": false
}Manage per-workspace role delegation. Assign, list, or remove access for specific emails (view/comment/edit).
| Argument | Type | Description |
|---|---|---|
| string | Email address (required for assign/remove) | |
| action* | string | Action: assign a role, list all roles, or remove a role |
| permission | string | Permission level (required for assign) |
| workspace_id* | string | Workspace ID |
{
"type": "object",
"required": [
"workspace_id",
"action"
],
"properties": {
"email": {
"type": "string",
"description": "Email address (required for assign/remove)"
},
"action": {
"enum": [
"assign",
"list",
"remove"
],
"type": "string",
"description": "Action: assign a role, list all roles, or remove a role"
},
"permission": {
"enum": [
"view",
"comment",
"edit"
],
"type": "string",
"description": "Permission level (required for assign)"
},
"workspace_id": {
"type": "string",
"description": "Workspace ID"
}
},
"additionalProperties": false
}[EXPERIMENTAL] Clone a git repo into a per-workspace Linux sandbox. Requires Cloudflare Containers on the AgentDrive worker; gracefully degrades to a 503 with "sandbox not configured" otherwise.
| Argument | Type | Description |
|---|---|---|
| url* | string | Git repository URL to clone |
| depth | integer | Shallow clone depth (default: full clone) |
| branch | string | Branch to check out (default: repo default) |
| workspace_id* | string | Workspace to clone into. The sandbox persists across MCP sessions per workspace. |
{
"type": "object",
"required": [
"workspace_id",
"url"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "Git repository URL to clone"
},
"depth": {
"type": "integer",
"maximum": 50,
"description": "Shallow clone depth (default: full clone)",
"exclusiveMinimum": 0
},
"branch": {
"type": "string",
"description": "Branch to check out (default: repo default)"
},
"workspace_id": {
"type": "string",
"description": "Workspace to clone into. The sandbox persists across MCP sessions per workspace."
}
},
"additionalProperties": false
}[EXPERIMENTAL] Stage + commit the current sandbox worktree. Surfaces as an AgentDrive artifact at commits/<sha>.json. Requires Cloudflare Containers; degrades to 503 otherwise.
| Argument | Type | Description |
|---|---|---|
| message* | string | Commit message |
| author_name | string | Override git author name (default: agent identity) |
| author_email | string | Override git author email (default: agent identity) |
| workspace_id* | string | Workspace whose sandbox to commit |
{
"type": "object",
"required": [
"workspace_id",
"message"
],
"properties": {
"message": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "Commit message"
},
"author_name": {
"type": "string",
"description": "Override git author name (default: agent identity)"
},
"author_email": {
"type": "string",
"format": "email",
"description": "Override git author email (default: agent identity)"
},
"workspace_id": {
"type": "string",
"description": "Workspace whose sandbox to commit"
}
},
"additionalProperties": false
}[EXPERIMENTAL] Run a shell command inside the per-workspace Linux sandbox. Captures stdout/stderr (64 KB cap), exit code, duration. Requires Cloudflare Containers; degrades to 503 otherwise.
| Argument | Type | Description |
|---|---|---|
| cmd* | string | Shell command to run inside the per-workspace Linux sandbox |
| cwd | string | Working directory (default: workspace root) |
| timeout_ms | integer | Max runtime in ms (default 30000, hard cap 60000) |
| workspace_id* | string | Workspace whose sandbox to run in |
{
"type": "object",
"required": [
"workspace_id",
"cmd"
],
"properties": {
"cmd": {
"type": "string",
"maxLength": 2048,
"minLength": 1,
"description": "Shell command to run inside the per-workspace Linux sandbox"
},
"cwd": {
"type": "string",
"description": "Working directory (default: workspace root)"
},
"timeout_ms": {
"type": "integer",
"maximum": 60000,
"description": "Max runtime in ms (default 30000, hard cap 60000)",
"exclusiveMinimum": 0
},
"workspace_id": {
"type": "string",
"description": "Workspace whose sandbox to run in"
}
},
"additionalProperties": false
}[EXPERIMENTAL] Read a file from the per-workspace sandbox filesystem (build artifacts, test output, logs). Requires Cloudflare Containers; degrades to 503 otherwise.
| Argument | Type | Description |
|---|---|---|
| path* | string | Path inside the sandbox (e.g., src/index.ts or /tmp/build.log) |
| workspace_id* | string | Workspace whose sandbox to read from |
{
"type": "object",
"required": [
"workspace_id",
"path"
],
"properties": {
"path": {
"type": "string",
"description": "Path inside the sandbox (e.g., src/index.ts or /tmp/build.log)"
},
"workspace_id": {
"type": "string",
"description": "Workspace whose sandbox to read from"
}
},
"additionalProperties": false
}Semantic search across your org's artifacts in AgentDrive. Returns the top-N most relevant files. Use this BEFORE writing similar artifacts to avoid duplication and surface prior context.
| Argument | Type | Description |
|---|---|---|
| query* | string | Search query |
| top_k | integer | Max hits to return (default 10, max 50) |
| filter | object | |
| workspace_id | string | Scope to a single workspace; omit for org-wide search |
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"maxLength": 2000,
"minLength": 1,
"description": "Search query"
},
"top_k": {
"type": "integer",
"maximum": 50,
"description": "Max hits to return (default 10, max 50)",
"exclusiveMinimum": 0
},
"filter": {
"type": "object",
"properties": {
"agent_id": {
"type": "string"
},
"path_prefix": {
"type": "string"
},
"agent_platform": {
"enum": [
"claude-code",
"codex",
"cursor",
"langgraph",
"crewai",
"autogen",
"hermes",
"openclaw",
"opencode",
"gemini-cli",
"unknown"
],
"type": "string"
}
},
"additionalProperties": false
},
"workspace_id": {
"type": "string",
"description": "Scope to a single workspace; omit for org-wide search"
}
},
"additionalProperties": false
}List recent agent sessions for this project across harnesses (Claude Code, Codex, OpenCode, Gemini CLI, Cursor), newest first. Use to find prior work to continue.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max sessions to return (default 10, max 50) |
| project | string | Project key; defaults to the project of the current working directory |
| platform | string | Only sessions from this harness (claude-code, codex, opencode, gemini-cli, cursor) |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"maximum": 50,
"description": "Max sessions to return (default 10, max 50)",
"exclusiveMinimum": 0
},
"project": {
"type": "string",
"pattern": "^[a-z0-9._-]{1,200}$",
"description": "Project key; defaults to the project of the current working directory"
},
"platform": {
"type": "string",
"description": "Only sessions from this harness (claude-code, codex, opencode, gemini-cli, cursor)"
}
},
"additionalProperties": false
}Generate a share link for a workspace or specific file. Optionally email-gate the link so only a specific person can access it. Humans open this link to view, comment, or edit files.
| Argument | Type | Description |
|---|---|---|
| string | Email-gate: only this email can access the link (requires email verification). Leave empty for public access. | |
| file_id | string | Scope to a specific file (optional) |
| max_uses | number | Maximum number of uses (optional) |
| expires_in | number | Expiry in seconds (optional) |
| permission* | string | Permission level for the share link |
| workspace_id* | string | Workspace ID |
{
"type": "object",
"required": [
"workspace_id",
"permission"
],
"properties": {
"email": {
"type": "string",
"description": "Email-gate: only this email can access the link (requires email verification). Leave empty for public access."
},
"file_id": {
"type": "string",
"description": "Scope to a specific file (optional)"
},
"max_uses": {
"type": "number",
"description": "Maximum number of uses (optional)"
},
"expires_in": {
"type": "number",
"description": "Expiry in seconds (optional)"
},
"permission": {
"enum": [
"view",
"comment",
"edit"
],
"type": "string",
"description": "Permission level for the share link"
},
"workspace_id": {
"type": "string",
"description": "Workspace ID"
}
},
"additionalProperties": false
}View version history for a file in a workspace.
| Argument | Type | Description |
|---|---|---|
| file_id* | string | File ID |
| workspace_id* | string | Workspace ID |
{
"type": "object",
"required": [
"workspace_id",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"description": "File ID"
},
"workspace_id": {
"type": "string",
"description": "Workspace ID"
}
},
"additionalProperties": false
}Write a markdown file to a workspace. Creates or updates the file with automatic versioning.
| Argument | Type | Description |
|---|---|---|
| path* | string | File path (e.g. "notes/meeting.md") |
| content* | string | File content (markdown) |
| message | string | Optional version message |
| workspace_id* | string | Workspace ID to write to |
{
"type": "object",
"required": [
"workspace_id",
"path",
"content"
],
"properties": {
"path": {
"type": "string",
"description": "File path (e.g. \"notes/meeting.md\")"
},
"content": {
"type": "string",
"description": "File content (markdown)"
},
"message": {
"type": "string",
"description": "Optional version message"
},
"workspace_id": {
"type": "string",
"description": "Workspace ID to write to"
}
},
"additionalProperties": false
}