SHIP

ai.letsshipPublished by letsship.aiOfficial publisherv0.24.0Updated Oct 24, 2026

Assign Linear, Jira or GitHub issues to an AI coding agent team that plans, builds, reviews, tests.

Overview

AI-generated overview

SHIP hands Linear, Jira or GitHub issues to an AI agent team that plans, builds, reviews and tests the change and opens a pull request.

What you can do
  • File and start missions from an existing tracker issue or from scratch, and hand off a plan or an existing pull request
  • Follow missions: list, inspect stages, verdicts, agent runs, logs and proof artifacts such as test traces and screenshots
  • Steer missions: send follow-up instructions or notes, pause, resume, stop, raise a credit ceiling, merge or decline the pull request, set auto-merge, archive
  • Manage projects, per-mission agent overrides, preview environments and custom sandboxes
  • Create and run recurring scheduled tasks and read their run history
  • Read credit balance, ledger and offers, open a checkout page, change the plan, and read or dismiss workspace notices
When to use it
Use it when you want an assistant to turn tracker issues into reviewed, tested pull requests without leaving the chat, and to monitor or steer those runs. Also useful for recurring agent work on a schedule and for checking credit spend before dispatching.
Requirements
A remote Streamable HTTP endpoint; no local runtime needed. Sign in with OAuth 2.1 from a client that supports MCP authorization, or send a SHIP personal access token as an Authorization bearer header, ideally bound to one project. A SHIP workspace with connected tracker and GitHub, and credits to start missions.
Before you install
Starting a mission costs one credit, and approving a mission ceiling spends more; checkout and subscription tools open payment pages and change billing. Merge, decline, stop, archive and delete tools change or remove data, and merges cannot be undone from here. The Authorization token grants access to your workspace, so scope it to one project. Sandbox registry credentials are stored by SHIP.

Installation

In SourceWeft

  1. Open SHIP in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/ai.letsship%2Fship/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "ship": {
      "type": "http",
      "url": "https://mcp.letsship.ai/mcp"
    }
  }
}

README

[SHIP]

SHIP MCP server

[MCP Registry] [Transport] [Auth] [Docs] [Smithery]

Assign Linear, Jira or GitHub issues to an AI coding agent team. Its coding agents plan and build each change, run code review and tests, and open a pull request in your GitHub repository. With this MCP server, your assistant can file missions, follow them, send instructions and read the proof of each run.

SHIP runs an agentic SDLC as a headless AI software factory. You operate the whole mission from your coding agent or AI assistant. Start it, send instructions, read its code review and test reports, and approve the pull request. A Planner, a Builder, a Reviewer and a Tester each do one stage, and your CI is a gate between them. Each role runs the coding agent and the model that you choose: Claude Code, Codex, OpenCode, Kilo Code or the pi coding agent.

[Install in VS Code] [Install in VS Code Insiders] [Add to Cursor]

Endpoint

text
https://mcp.letsship.ai/mcp

The transport is Streamable HTTP. The server is stateless, so a client can reconnect at any time and lose nothing.

Sign in

OAuth 2.1. A client that supports MCP authorization finds the sign-in automatically. If a request needs a token and has no valid token, the server answers 401 with a WWW-Authenticate header. The header points to https://mcp.letsship.ai/.well-known/oauth-protected-resource/mcp. SHIP supports dynamic client registration and client ID metadata documents, so you do not have to register a client first. You approve the sign-in in the SHIP console.

Personal access token. A client without OAuth sends Authorization: Bearer pat_.... Create a token at https://letsship.ai/settings/tokens. Bind it to one project, so that it can reach only that project.

Install

Claude Code

bash
claude mcp add --transport http ship https://mcp.letsship.ai/mcp

Claude and ChatGPT. Add a custom connector with the URL https://mcp.letsship.ai/mcp. Sign in when the app asks.

Cursor. Use the button above, or add this to .cursor/mcp.json:

json
{  "mcpServers": {    "ship": {      "url": "https://mcp.letsship.ai/mcp"    }  }}

VS Code. Use the buttons above, or add this to .vscode/mcp.json:

json
{  "servers": {    "ship": {      "type": "http",      "url": "https://mcp.letsship.ai/mcp"    }  }}

Codex. Add this to ~/.codex/config.toml:

toml
[mcp_servers.ship]url = "https://mcp.letsship.ai/mcp"

Grok. Open grok.com/connectors. Select New Connector, then Custom. Paste the URL https://mcp.letsship.ai/mcp. Then sign in.

xAI API. Pass the URL as a remote MCP tool, with a token in headers:

json
{  "type": "mcp",  "server_url": "https://mcp.letsship.ai/mcp",  "server_label": "ship",  "headers": {    "Authorization": "Bearer pat_your_token_here"  }}

A client that supports only stdio connects through mcp-remote:

json
{  "mcpServers": {    "ship": {      "command": "npx",      "args": [        "-y",        "mcp-remote",        "https://mcp.letsship.ai/mcp"      ]    }  }}

With a token. Add the header to any of the HTTP entries above:

json
{  "mcpServers": {    "ship": {      "url": "https://mcp.letsship.ai/mcp",      "headers": {        "Authorization": "Bearer pat_your_token_here"      }    }  }}

Tools

Each tool declares readOnlyHint, destructiveHint and openWorldHint. With these hints, your client can run a read-only tool immediately. It can also ask you before it runs a tool that removes or replaces something, or opens a payment page. The scopes of the token decide what each tool can do, and a refusal names the scope that the token does not have.

[!IMPORTANT] start_mission, create_mission and run_scheduled_task start a mission, and each mission start costs one credit. Messages to an active mission are free.

Missions

ToolKindWhat it does
start_missionreaches outside SHIPGive an issue that is already in your tracker to the agent team. By default, the mission starts at the Planner. With a plan, it starts at the Builder. With an open pull request, it starts at the Reviewer or the Tester
create_missionreaches outside SHIPCreate the issue and start the mission in one call, for work that has no issue yet
send_mission_instructionreaches outside SHIPTell an active mission what to change, or record a note for the agent that runs next
inspect_missionreadsThe full record of a mission: its stages, verdicts, provenance and session logs
list_missionsreadsThe missions of your projects, with what each mission does now
get_missionreadsOne mission: its stage, its review and test results, its pull request, its agent runs and the run with the proof. With view: "full", also its events and the outcome of each stage
pause_missionwritesHold a mission before its next stage. The stage that runs now finishes
resume_missionreaches outside SHIPContinue a paused mission. When a checkpoint holds the mission, this approves the result of that stage
stop_missionremovesStop a mission and every agent run of it. The pull request stays open
approve_mission_ceilingreaches outside SHIPLet a mission continue after it stops at its credit limit. The mission then uses more credits
merge_missionremovesMerge the pull request of a mission, with the merge method of the repository. On a merge conflict, SHIP starts the Builder to fix the conflict and merges later
decline_missionremovesClose the pull request of a mission without a merge
set_agents_overridereplacesChange the harness, model, prompt or checkpoint of one role for one mission. The override goes on top of ship.yml and does not change the file
get_agents_overridereadsRead the override that applies to a mission now
clear_agents_overrideremovesRemove the override, so the mission uses the project's configuration again
set_mission_auto_mergereaches outside SHIPTurn auto-merge on or off for one mission. For that mission, the setting replaces the auto-merge of the project
archive_missionwritesHide a mission from the board and from list_missions. Only an owner or an admin can archive a mission
unarchive_missionwritesShow an archived mission on the board again
set_mission_dispositionwritesRecord why a mission ended, for example a test or work that another mission replaced, or clear the value. The delivery statistics use this value

Projects and proof

ToolKindWhat it does
list_projectsreadsThe projects that the token can reach
get_projectreadsThe configuration and connections of one project
update_projectreaches outside SHIPChange the name, status, auto-merge, issue code, default sandbox or connections of a project
list_artifactsreadsThe proof that a run produced, such as test traces and screenshots
get_artifactreadsOne artifact, with a link to open it

Scheduled tasks

ToolKindWhat it does
list_scheduled_tasksreadsThe missions that a project runs on a schedule
get_scheduled_taskreadsOne scheduled task, with its schedule and prompt
create_scheduled_taskwritesAdd a mission that runs on a schedule
update_scheduled_taskreplacesChange the schedule or prompt of a scheduled task, or disable it
run_scheduled_taskreaches outside SHIPRun a scheduled task now, outside its schedule
list_scheduled_task_runsreadsWhat past runs did, and what they cost
list_scheduled_task_templatesreadsTemplates that you can copy to start a scheduled task
delete_scheduled_taskremovesDelete a scheduled task and its run history. Missions that the task started continue

MCP servers for your agents

ToolKindWhat it does
list_mcp_serversreadsThe servers that the MCP file of a project declares, each with its binding and status
list_mcp_bindingsreadsEach binding in the projects of your organization, so you can see where each credential is used
bind_mcp_serverreplacesChoose the agents, transport, approved tools and credential for one server
unbind_mcp_serverremovesRemove a binding and delete its credential
refresh_mcp_server_toolsremovesRead the current tool list of the server, so that you can approve tools
start_mcp_server_oauthreaches outside SHIPGet a sign-in link for a remote server, for a person to open in their browser
set_mcp_config_pathwritesSet a different MCP file for a project, such as .cursor/mcp.json

Agent runs

ToolKindWhat it does
list_agent_runsreadsAgent runs, live and finished, for one mission, one role or one status
get_agent_runreadsThe detail and resource use of one run
get_agent_run_logsreadsWhat an agent did inside a run
watch_agent_runreadsWait on one run and follow its events, until the run ends or its mission moves to another stage
stop_agent_runremovesStop the agent in one run before it finishes

Preview environments

ToolKindWhat it does
list_environmentsreadsPreview environments that SHIP deployed for open pull requests
get_environmentreadsOne preview environment, with its URL
destroy_environmentremovesRemove a preview environment early

Credits and notices

ToolKindWhat it does
get_billingreadsThe credit balance, the credit limit for each mission and the recent use. Read it before you send work
list_billing_ledgerreadsWhere the credits went, with the newest entry first
list_credit_offersreadsThe credit packs and the monthly plans, with their prices
start_credit_checkoutreaches outside SHIPOpen a payment page for a credit pack, a monthly plan or more credits on a plan, and return its URL
update_team_subscriptionremovesChange the monthly plan from the next renewal, or cancel it at the end of the month that you paid for
request_more_creditsreaches outside SHIPAsk for more credits. The answer says who has the request
get_noticesreadsWhat needs attention in the workspace, such as a tracker that you must connect again
dismiss_noticewritesClose a notice that you can close, such as a low balance

Custom sandboxes

ToolKindWhat it does
list_sandbox_templatesreadsThe sandboxes of your organization, with the active version and the latest build of each
list_sandbox_startersreadsSandbox definitions for Python, Java, Go, Rust and Ruby that you can start from
save_sandbox_templatewritesCreate a sandbox or change one. A change makes a new version and starts its build
list_sandbox_template_versionsreadsEach saved version of a sandbox, with the active version marked
activate_sandbox_template_versionwritesMake a version the one that missions use from their next run
build_sandbox_templatewritesBuild the active version now
get_sandbox_build_logreadsOne page of a build log
list_sandbox_registriesreadsThe private package registries that sandboxes install from. A secret is never returned
save_sandbox_registryreplacesStore or replace the credential for a registry. The credential never enters a sandbox
get_sandbox_capacityreadsHow many agents your missions run at once, against the limit of your organization
delete_sandbox_templateremovesDelete a sandbox. The API refuses a sandbox that an agent or the default of a project uses
delete_sandbox_registryremovesRemove the credential of a private registry

Platform operators

ToolKindWhat it does
list_orgsreadsEach organization on the platform. Only a SHIP operator token can call it

Identity

ToolKindWhat it does
whoamireadsThe principal behind the token and the scopes of the token
get_setup_progressreadsWhat the workspace has set up so far and the next step, as the console's setup checklist shows it
healthzreadsThe status, environment and version of the API

Example: file a fix and answer the review

  1. Call list_projects to get the project id.
  2. Call create_mission to file the issue and start the mission. Write the acceptance criteria as checkboxes, because the Tester uses them to test the work.
  3. The agents plan the change, build it and open a pull request. Then they wait for your CI, review the change, deploy a preview and test it. This takes tens of minutes, and your assistant does not have to wait.
  4. Call inspect_mission to read the stage and the verdicts. To disagree with a review, call send_mission_instruction with kind: "follow_up". The Builder then works on the pull request again and follows your instruction.

To send feedback, use send_mission_instruction. Do not call start_mission again, because a restart does not take a message.

Troubleshooting

What you seeWhat to do
401 and no sign-in windowYour client does not support MCP OAuth. Send a personal access token in the Authorization header.
A tool refuses with a scope nameThe token does not have that scope. Create a token that has the scope, or ask an owner for a role that allows it.
create_mission refuses with credits_exhaustedThe workspace has no credits left. get_billing shows the balance.
The tool list is empty, or each tool call gets 401The client did not finish sign-in. Sign in again from the MCP menu of your client, or remove the server and add it again.
whoami names another projectThe token is bound to that project. Use a token for the project you want.

Skills for your coding agent

The SHIP skills teach a coding agent to hand work to SHIP from the terminal. To install them, see letsship/skills or run npx skills add https://letsship.ai.

Learn more

Links

License

The files in this repository are under the MIT license. The SHIP service is under the SHIP terms.

Source: README.md at commit e3b112b

Tools

72

healthz

API health probe

Returns the upstream API status, environment, and version.

Takes no parameters.

whoami

Identify the calling principal

Returns the caller's identity, org, role, role-derived RBAC capabilities, and token scopes. Use this to check whether the current token may perform an action (e.g. config:write) before attempting it.

Takes no parameters.

get_setup_progress

Get setup progress

Read what the workspace has set up with SHIP so far, as the console's setup checklist shows it: up to 13 milestones in three groups, taken in order (get started, make it yours, make it autonomous). `activeGroup` names the group to work on now, and each group carries its own count. Each milestone says whether it is reached and, when a console page takes it and the caller's role can, the page that does it. `next` names the first milestone not reached yet. Use it to suggest the next step to a person.

Takes no parameters.

get_billing

Get workspace credits

Read the workspace's credit balance by source and expiry, whether a new mission would start now, the per-mission credit ceiling, the project allowance and recent usage. Check it before dispatching work.

Takes no parameters.

list_billing_ledger

List workspace credit ledger

List where the workspace's credits went, newest first: one entry per mission (its start, each further 3 agent-hours, and messages charged before messages became free), per grant, per adjustment and per expiry. Pass nextCursor back as cursor for the next page. Owners and admins only.

Parameterslimitcursor

list_credit_offers

List credit packs, the monthly plans and Enterprise

List what SHIP sells: the credit packs (credits, the price in US dollars before tax, which checkout adds for the buyer's location, and the price per credit), the monthly plans under `team.plans` (Starter and Scale: each its credits a month, monthly price, price per credit, which credits added on top also cost, and agents at once), the range of credits a workspace on a plan can add at once, Enterprise under `enterprise` (the minimum yearly credit commitment, the highest and lowest price per credit, and the agents at once at the minimum; contracts are sold by SHIP, not through checkout), what Free and the packs allow (`limits`), plus the trial size. The same catalog the pricing page shows.

Takes no parameters.

start_credit_checkout

Start buying credits or a monthly plan

Opens a payment page and returns its URL. Nothing is charged until the buyer pays on that page. It sells one credit pack, a monthly plan (offer team, with teamPlan starter or scale, a subscription that renews until cancelled), or extra credits for a workspace already on a plan (offer team_credits, for quantity credits at that plan's own price per credit, paid once, expiring with the plan month). Only a workspace on a plan can use team_credits. Only owners and admins can open a page. The server refuses the request while startNow is false, and the same idempotencyKey returns the same page.

ParametersofferrequiredquantitystartNowrequiredteamPlanidempotencyKey

update_team_subscription

Change the monthly plan subscription

Change the workspace's monthly plan subscription: plan switches between starter and scale from the next renewal on (nothing is charged or refunded for the current month; passing the current plan drops a waiting switch), or cancelAtPeriodEnd true ends it when the month already paid for ends, false resumes it before then. Pass at least one. Owners and admins only. The answer is the subscription as it now stands, with any waiting switch under nextPlan.

ParametersplancancelAtPeriodEnd

request_more_credits

Ask for more credits

Ask for more credits for the workspace, saying what they are for. Any member may ask. The answer says who has the request: SHIP for a sponsored or Enterprise workspace, its owners and admins otherwise. A message sent while a request is open joins it.

Parametersmessagerequired

get_notices

Get workspace notices

Read what needs attention in the workspace, critical first: a tracker connection its vendor no longer accepts (missions cannot start or report back until someone reconnects it), or credits running out. Each notice has a stable id and kind, a message and, when the caller can act, an action URL to hand to a person. A notice the caller dismissed is left out. Check it before dispatching work.

Takes no parameters.

dismiss_notice

Dismiss a workspace notice

Close a notice for the person this token acts for, as the console's close button does. Only a notice with dismissible: true can be closed (a low balance). It stays closed while its id lasts: a low balance that a top-up ends and a later spend brings back has a new id and shows again. Critical notices cannot be closed.

ParametersnoticeIdrequired

mark_setup_step

Mark a setup step

Mark a step of the setup checklist completed or skipped for the person this token acts for, as the console's Mark as complete and Skip controls do; open removes the mark. Give step for one milestone, or group to mark every open step of that group (the console's Skip all). A marked step counts as done on that person's checklist and its status says how; reached stays false until SHIP sees the step done. Returns the checklist as it now stands. A token that acts for no person is refused.

Parametersmarkrequiredstepgroup

list_projects

List projects

List the projects accessible to the calling principal. Returns id, slug, name, status, createdAt for each.

Parameterslimitcursor

get_project

Get project

Fetch a single project by its UUID. Returns 404 if the project is not in the caller's org.

ParametersprojectIdrequired

update_project

Change a project's settings

Change the settings of one project; a field you leave out keeps its value. status paused or archived stops new missions in the project, and active starts them again. autoMerge sets whether SHIP merges a ready pull request by itself. defaultSandboxTemplateId sets the sandbox the agents start in (null for the platform base). repoFullName, linearTeamKey and jiraProjectId connect the project to another repository, Linear team or Jira project through the organization's existing connections. Change only what a person asked for. Answers the project as it now stands. Requires the projects:admin scope and the config:write capability.

ParametersnamestatusautoMergeissueCodeprojectIdrequiredrepoFullNamejiraProjectIdlinearTeamKeydefaultSandboxTemplateId

start_mission

Start a mission

Hand a mission off to the AI agent team. Omit startAt for the default full run (planner first); pass startAt='builder' with a plan to skip straight to coding; pass startAt='reviewer' or startAt='qa' with an existing prNumber to hand off an existing build. Requires the missions:run token scope.

ParametersplanagentsissueIdrequiredstartAtprNumberprojectIdrequired

create_mission

Create a mission

Create the tracker issue AND start the run in one call, for work that has no issue yet. Pass entryStartAt='builder' with an entryPlan to hand over a plan you already wrote; pass entryStartAt='reviewer'/'qa' with entryPrNumber to hand over an existing build — in which case title may be omitted and the pull request's own title names the mission. This tool calls the SHIP API, documented at https://letsship.ai/docs/api. Requires the missions:run token scope.

ParameterstitleagentslabelsentryPlanprojectIdrequireddescriptionentryStartAtentryPrNumber

set_agents_override

Set a per-issue agents-override for one role

Patch one role's harness/model/effort/prompt for a single mission, layered over ship.yml per-field (a role or field this call omits keeps resolving from ship.yml — SHIP-337). Use promptContent or promptPath(+promptRef) to run an ephemeral prompt experiment (spec D9) without committing to the target repo. Read-modify-write: this call is merged onto the previously stored override record (via get_agents_override), so a prior set for a DIFFERENT role — or a different field on this same role, e.g. an earlier harness pin — survives; the underlying PUT is a full-record replace and would otherwise silently drop it. This tool calls the SHIP API, documented at https://letsship.ai/docs/api.

ParametersrolerequiredsizemodeleffortharnessissueIdrequiredsandboxrejectOnprojectIdrequiredpromptRefbaseBranchcheckpoint+3 more

get_agents_override

Read a mission's agents-override

Read the per-issue agents/baseBranch override record for one mission, or null when unset.

ParametersissueIdrequiredprojectIdrequired

send_mission_instruction

Send a follow-up instruction to a mission

Tell a mission what to change. Use kind='follow_up' (the default) to ask for a change: the instruction reaches the agents AND dispatches the builder against the mission's open pull request, overriding cached review and QA verdicts. Use kind='note' to record context for whatever runs next without starting any work. A restart is a different thing: it re-evaluates an unchanged pull request against its cached verdicts, and so changes nothing. Returns a receipt saying what was recorded and what it will cause. This tool calls the SHIP API, documented at https://letsship.ai/docs/api. Requires the missions:write token scope.

ParametersbodyrequiredkindissueIdrequired

clear_agents_override

Clear a mission's agents-override

Delete the per-issue agents/baseBranch override — the mission resolves from ship.yml again.

ParametersissueIdrequiredprojectIdrequired

list_missions

List missions

List missions in the caller's accessible projects, newest activity first, with total for paging. Each has issueId, title, activity (what it does now), pipelineProgress, review/check/test state, PR, cost and paused. Archived missions are left out. Requires the missions:read scope.

ParameterslimitoffsetsearchactivityprojectId

get_mission

Get mission detail

Fetch one mission. view='summary' (the default, small enough to poll) returns its summary (activity, stage, review/check/test state, PR, paused and pauseSource, cost), its agent runs (sandboxId, role, status, harness, model, cost) and proofRunSandboxId (pass it to list_artifacts as sandboxId for the proof). view='full' adds its stages, events, stats and the plan/review/QA outcomes. pauseSource 'checkpoint:<role>' means a checkpoint holds it: resume_mission approves that stage. Requires the missions:read scope.

ParametersviewissueIdrequiredorgSlugprojectId

pause_mission

Pause a mission

Hold a mission before its next stage. The stage that runs now finishes; no agent is stopped. Use resume_mission to continue. Requires the missions:write scope and a role that can control missions.

ParametersissueIdrequired

resume_mission

Resume a mission

Continue a paused mission. When a checkpoint holds it (get_mission shows pauseSource 'checkpoint:<role>'), this approves that stage's result and starts the next stage. To ask for changes to the result instead, use send_mission_instruction. Requires the missions:write scope.

ParametersissueIdrequired

stop_mission

Stop a mission

Hard-stop a mission: every agent run of it stops and its work in progress is lost. The pull request stays open, and start_mission starts the mission again. To stop one agent run only, use stop_agent_run. Requires the missions:write scope.

ParametersissueIdrequired

approve_mission_ceiling

Let a mission continue past its credit limit

A mission that reached its credit limit pauses until a member lets it continue. This raises the mission's limit by one step and runs the stage that stopped again, so it spends credits: ask the person first. Returns the new limit. Answers 409 when the mission is not at its limit. Requires the missions:run scope.

ParametersissueIdrequiredprojectIdrequired

merge_mission

Merge a mission's pull request

Merge the mission's open pull request on GitHub with the repository's own merge method; the mission then becomes done, and the merge cannot be undone from here. When the branch is out of date with its base, answers 202 with status 'updating_branch' and a message: SHIP updates the branch and merges once CI passes, with no further call. Answers 409 with the reason for any other blocker (missing reviews, failing checks, another branch protection). On a merge conflict SHIP starts the builder to fix it and merges once the mission is ready again, with no further call. Requires the missions:write scope.

ParametersissueIdrequired

decline_mission

Decline a mission's pull request

Close the mission's open pull request on GitHub without merging it; the mission becomes declined, and no call here reopens it. Requires the missions:write scope.

ParametersissueIdrequired

set_mission_auto_merge

Turn auto-merge on or off for one mission

Set whether SHIP merges this mission's pull request by itself once the checks, the review and the test pass. The setting is for this mission only and replaces the project's auto-merge for it; get_project shows the project's. While it is on, SHIP merges without asking again. Requires the missions:write scope.

ParametersenabledrequiredissueIdrequired

archive_mission

Archive a mission

Hide a finished mission from list_missions and the board. Nothing else changes: unarchive_mission shows it again. Requires the missions:write scope and the config:write capability (an owner or admin).

ParametersissueIdrequired

unarchive_mission

Unarchive a mission

Show an archived mission in list_missions and on the board again. Requires the missions:write scope and the config:write capability.

ParametersissueIdrequired

set_mission_disposition

Record why a mission ended

Record a person's reason for how a mission ended, which the delivery statistics use: product (real work, judged on its merits), probe (a test on purpose), superseded (another mission replaced it: give supersededBy) or takeover (a person finished the work outside SHIP); null clears it. Set it only with the person's answer, never from your own guess. Requires the missions:write scope and the config:write capability.

ParametersissueIdrequireddispositionrequiredsupersededBy

list_scheduled_tasks

List scheduled tasks

List recurring agent missions (scheduled tasks) across the caller's accessible projects — schedule, enabled state, and next/last fire time for each. Pass projectId for the tasks of one project.

ParametersprojectId

list_scheduled_task_templates

List scheduled task templates

Read-only gallery of curated scheduled task templates — a prepared prompt plus a suggested cadence. A template is content, not a code path: pass its key as templateKey on create_scheduled_task for attribution, or copy its prompt/schedule into a hand-written scheduled task.

Takes no parameters.

get_scheduled_task

Get scheduled task

Fetch one scheduled task by id: its project, name, prompt, triggers (schedule), labels, template key, skip-if-previous-open setting, enabled state, and next/last run times. An id outside the caller's accessible projects returns not found. For what each fire produced, use list_scheduled_task_runs.

ParametersscheduledTaskIdrequired

create_scheduled_task

Create a scheduled task

Create a recurring agent mission. Firing it — on schedule, or immediately via run_scheduled_task — creates an ordinary tracker issue assigned to the agent, which drives a normal pipeline run: a scheduled task is a stored mission request, not a new execution mode. This tool calls the SHIP API, documented at https://letsship.ai/docs/api. Requires the config:write capability.

ParametersnamerequiredtimerequiredlabelspromptrequiredenabledweekdayintervalrequiredtimezonerequiredprojectIdrequireddayOfMonthtemplateKeyskipIfPreviousOpen

update_scheduled_task

Update a scheduled task

Patch a scheduled task's name, prompt, schedule, skip-guard, or enabled state — only the fields passed are changed. To change the schedule, set interval/time/timezone together (plus weekday or dayOfMonth as the interval requires). This tool calls the SHIP API, documented at https://letsship.ai/docs/api. Requires the config:write capability.

ParametersnametimelabelspromptenabledweekdayintervaltimezonedayOfMonthscheduledTaskIdrequiredskipIfPreviousOpen

run_scheduled_task

Run a scheduled task now

Fire a scheduled task immediately, bypassing both its schedule and the skip-if-previous-open guard — an explicit run always creates a new issue even while a prior fire's mission is still open. Requires the pipeline:control capability and, for a token caller, the missions:run scope — the same authorization starting a mission by hand requires, because it is the same act.

ParametersscheduledTaskIdrequired

list_scheduled_task_runs

List a scheduled task's run history

Run history for one scheduled task, each row's status (dispatching/dispatched/skipped/failed) and, once its issue exists, the joined mission progress/cost. A 'dispatched' status means the issue was created and the mission started — never that the work succeeded; read the joined mission state for that. Newest first; when older runs exist, pass nextCursor back as cursor for the next page.

ParameterslimitcursorscheduledTaskIdrequired

delete_scheduled_task

Delete a scheduled task

Delete a scheduled task and its run history, which no call can bring back. Missions it already started continue. Setting enabled to false stops new runs and keeps the task and its history. Requires the scheduled-tasks:write scope and the config:write capability.

ParametersscheduledTaskIdrequired

list_mcp_servers

List a project's MCP servers

The MCP servers a project's repository declares in its MCP file (.mcp.json by default), each with its binding: enabled roles, transport, status, approved tools, per-role effective tool counts (null when the server runs inside the sandbox and the role gets every tool it exposes), and the NAMES of the credential fields set (never values). Also reports whether the file could be read (configStatus).

ParametersprojectIdrequired

list_mcp_bindings

List the org's MCP bindings

Every MCP server binding across the projects you can see in your org: project, server, transport, status, enabled roles, how it authenticates, and the NAMES of the credential fields set (never values). Use it to find where a credential is used; use list_mcp_servers for one project's full detail.

Takes no parameters.

set_mcp_config_path

Set a project's MCP file path

Point the project at the repository file that declares its MCP servers, e.g. .cursor/mcp.json or .vscode/mcp.json. null restores the default (.mcp.json). The file is read, never edited. When the repository's ship.yml sets mcp.config, that wins and this call is refused (409); list_mcp_servers reports which one applies as configPathSource. Requires the config:write capability.

ParametersprojectIdrequiredconfigPathrequired

bind_mcp_server

Bind an MCP server

Create or update the binding for a server the repository declares. roles is the full set of pipeline roles that may use it (reviewer and qa only ever receive read-only tools, and cannot use a server that runs inside the sandbox). transport: 'remote' (the gateway proxies to the server's URL), 'isolate' (the gateway runs the server's npm package in isolation, for a command that needs a secret) or 'local' (the command runs inside the sandbox, no credential). Omit transport and remoteUrl on an update to keep the server the binding is pinned to, with its credential (a roles, tools or credential edit); set them only to bind or re-point the server. Requires the config:write capability.

ParametersrolesrequiredprojectIdrequiredremoteUrltransportcredentialserverNamerequiredapprovedTools

unbind_mcp_server

Remove an MCP server binding

Delete a binding and its stored credential: no role receives the server from its next run. The repository's MCP file is not changed, so the server can be bound again. Requires config:write.

ParametersprojectIdrequiredserverNamerequired

refresh_mcp_server_tools

Refresh an MCP server's tool list

Snapshot the bound server's current tools (with their readOnlyHint / destructiveHint annotations) for approval. Approvals of tools that no longer exist are dropped. The binding must be ready; a server inside the sandbox has no gateway tool list. Requires config:write.

ParametersprojectIdrequiredserverNamerequired

start_mcp_server_oauth

Start OAuth for a remote MCP server

Begin the OAuth consent for a server bound as remote. Returns an authorizeUrl that a HUMAN must open in a browser signed in to the SHIP console as the same user this token acts for; the provider returns to the console, which stores the credential. The link is single-use and expires (expiresAt). An agent cannot complete the consent itself. Requires config:write.

ParametersscopereturnToprojectIdrequiredserverNamerequired

list_agent_runs

List agent runs

List the agent runs, live and finished, in the caller's accessible projects, newest first. Each run is one agent in its own sandbox. Returns id (the run's sandbox id), issueId, role, harness, status, instance type, and latest CPU/memory/disk metrics. When more runs match, nextCursor is set: pass it back as cursor, with the same filters, for the next page.

ParametersrolelimitcursorstatusissueIdprojectId

get_agent_run

Get agent run detail

Fetch one agent run: its run record, metric series (CPU/mem/disk over time), and the agent session summaries (role, outcome, cost, sessionId). sessions lists every session of the run's role on the mission; runSessionId names this run's own, so read its log and cost from that one.

ParameterssandboxIdrequired

get_agent_run_logs

Get agent run logs

Fetch a session's log content from one agent run. part=session is the agent stream-json (reasoning + tool calls); part=system is the container/runner stdout (clone, dependency install, validation gate, git, callback); part=prompt is the assembled input prompt. The role and sessionId are fields of the agent run's own record. A log longer than 40,000 characters returns its end, from a whole line, with a note.

ParameterspartrolerequiredsandboxIdrequiredsessionIdrequired

watch_agent_run

Watch an agent run

Wait on one agent run and follow what its agent does, instead of polling get_agent_run. The call returns when the run ends, when its mission moves to another stage, or after maxSeconds. While it waits, each agent event (a thought, a tool call, a plan update, an error) is sent as a progress notification when the request has a progress token. The result has the status of the run, the stage of its mission, ended, the reason it returned, the last 20 events and a cursor. When the run is still running, call it again with since set to the cursor. A run that already ended returns at once. If your client ends a call after 60 seconds, set maxSeconds below that.

ParameterssincesandboxIdrequiredmaxSeconds

stop_agent_run

Stop an agent run

Stop the agent in one run before it finishes. Its work in progress is lost, and the run's status becomes stopped a few seconds later. Needs an org admin and the sandboxes:stop scope. This stops one agent run, not the mission: to stop the whole mission, use POST /v1/missions/{issueId}/stop.

ParameterssandboxIdrequired

list_sandbox_templates

List custom sandboxes

List the org's sandboxes (definitions agents start in), with each one's active version, size and latest build status.

Takes no parameters.

get_sandbox_capacity

Read how many agents are running

How many agents the org's missions are running at once against its limit (null while the org is unclassified), which missions wait for an agent slot and why, and whether every slot on the platform is taken. Read from the platform's once-a-minute capacity check.

ParametersorgId

list_sandbox_starters

List sandbox starters

Ready-made sandbox definitions (Python, Java, Go, Rust, Ruby) to create a sandbox from.

Takes no parameters.

list_sandbox_template_versions

List a sandbox's versions

Every saved version of a sandbox, newest first, with the active one marked and each one's latest build.

ParameterstemplateIdrequired

get_sandbox_build_log

Read a sandbox build's log

A page of a build's log after sequence number `after`. Call again with after = nextAfter until done is true.

ParametersafterbuildIdrequiredtemplateIdrequired

save_sandbox_template

Create or update a sandbox

Create a sandbox (omit templateId) or change one. A definition is Dockerfile steps on the platform base (RUN, ENV, ARG, WORKDIR, USER; no FROM). A changed definition or size becomes a new version and is built at once; the response carries that build. Refusals name the line or the size bound.

ParametersnamesizestarterIddockerfiletemplateId

activate_sandbox_template_version

Roll a sandbox back (or forward) to a version

Make a version the one missions use from their next dispatch. It is rebuilt only if its snapshot is gone; the response says which.

ParametersversionIdrequiredtemplateIdrequired

build_sandbox_template

Build a sandbox now

Build the sandbox's active version, or return the build already running for it.

ParameterstemplateIdrequired

list_sandbox_registries

List private registries

The org's private package registries sandboxes install from: host, auth scheme, username. Never the secret.

Takes no parameters.

save_sandbox_registry

Store a private registry credential

Store (or replace) the credential for a registry host. The platform attaches it to sandbox requests for that host only; it never enters a sandbox and is never returned.

Parametershostrequiredschemerequiredsecretrequiredusername

delete_sandbox_template

Delete a sandbox

Delete a sandbox with all its versions and builds. Answers 409 while an agent or a project's default sandbox uses it: point those at another sandbox first (update_project with defaultSandboxTemplateId). Missions that run in it now finish. Requires the agents:write scope and the config:write capability.

ParameterstemplateIdrequired

delete_sandbox_registry

Remove a private registry credential

Delete the stored credential of a private registry (an id from list_sandbox_registries). A sandbox build that installs from that host then gets no credential. Requires the connectors:write scope and the config:write capability.

ParametersregistryIdrequired

list_environments

List preview environments

List per-mission preview environments for the caller's accessible projects. Returns id, issueId, projectId, prNumber, workerName, and lifecycle status.

ParameterslimitstatusissueIdprojectId

get_environment

Get preview environment detail

Fetch one preview environment's registry row (status, worker name, timestamps).

ParametersenvironmentIdrequired

destroy_environment

Destroy a preview environment

Request teardown of a preview environment (its deployed Worker(s) + every provisioned datastore). Enqueues to the orchestrator; requires project write capability.

ParametersenvironmentIdrequired

list_artifacts

List artifacts

List proof-of-work artifacts (QA screenshots/video/traces) for the caller's accessible projects. Each row carries kind, content type, caption, the acceptance criterion it proves, the sandboxId of the agent run that produced it, and a long-lived signed serving url. Filter by issueId to get one ticket's evidence: the artifacts of every run, superseded QA attempts included, up to limit; a note says when more exist. For the mission's proof of work specifically, read proofRunSandboxId from GET /v1/missions/{id} and pass it as sandboxId.

ParameterslimitissueIdprojectIdsandboxId

get_artifact

Get artifact

Fetch one artifact's metadata + a long-lived signed serving url (open it to view the screenshot/video).

Parametersidrequired

inspect_mission

Inspect mission

Fetch the typed platform-inspection report for a mission, by its issue id. Returns per-section KV/D1/R2 state: task state, retry reason, dispatch error, latest review + QA verdicts, run index, per-attempt provenance, running sandboxes, and session-log heads. Requires the inspect:read scope.

ParametersissueIdrequiredorgSlugsectionsprojectId

list_orgs

List every org (cross-tenant)

List every organization on the platform with its owner email, member count, and pending invite status. Requires platform-admin (cross_org) access. Cursor-paginated (default page size 50) — feed the response's nextCursor back as the cursor input to reach the next page; a null nextCursor means there are no more pages.

Parameterslimitcursor

Version history

1
  1. v0.24.0LatestOct 12, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts