SHIP
REMOTE · MCP.LETSSHIP.AI
Assign Linear, Jira or GitHub issues to an AI coding agent team that plans, builds, reviews, tests.
Available components
Last scanned (2 hours ago)
Scores higher than 85% of remote servers
Reachable. Last reached 17 Oct 2026.
Category CI/CD and DevOps
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security92
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. View diagnostics → Pass
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
- The authorisation server supports Client ID Metadata Documents, the current MCP client-registration mechanism. View diagnostics → Pass
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability71
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 9851 tokens (~136/item across 72 items; 72 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management17
- Stability observed for 5 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (14% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 8 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 73 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 17 Oct 26 +1
- Server version: 0.25.0 → 0.26.0 functional
- New tool “mark_setup_step” functional
- 16 Oct 26 0
- Server version: 0.24.4 → 0.25.0 functional
- 14 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.
- 13 Oct 26 0
- Tool “set_mission_disposition” is now declared destructive security
- Stability: unverified → 0.03 ▲ functional
- Server version: 0.24.2 → 0.24.4 functional
- “bind_mcp_server” reworded the description of “transport” cosmetic
- “save_sandbox_registry” reworded the description of “scheme” cosmetic
- “save_sandbox_template” reworded the description of “dockerfile” cosmetic
- “set_agents_override” reworded the description of “effort” cosmetic
- “set_agents_override” reworded the description of “harness” cosmetic
- “set_agents_override” reworded the description of “model” cosmetic
- “update_scheduled_task” reworded the description of “name” cosmetic
- “update_scheduled_task” reworded the description of “skipIfPreviousOpen” cosmetic
- 12 Oct 26 78
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 17 Oct 2026 · Probed https://mcp.letsship.ai/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=letsship.ai | CN=WE1,O=Google Trust Services,C=US | 25 Sept 2026 | 24 Dec 2026 | ECDSA 256 | ECDSA-SHA256 | d07dc1faa13400ba13dc07f04424ca70 |
| SANs: letsship.ai, *.letsship.ai, *.api.letsship.ai, *.internal.api.letsship.ai, *.agent.letsship.ai, *.traces.letsship.ai, *.artifacts.letsship.ai, *.mcp.letsship.ai, *.preview.letsship.ai | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of mcp.letsship.ai. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| ai. | present | 3799 | 8 | Verified |
| letsship.ai. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Enforced and verified
The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.
| Result | Enforced and verified |
|---|---|
| Enforced | On tool calls |
| HTTP status | 200 |
WWW-Authenticate challenge Bearer resource_metadata="https://mcp.letsship.ai/.well-known/oauth-protected-resource/mcp", scope="projects:read missions:read missions:run missions:write artifacts:read"
Bearer resource_metadata="https://mcp.letsship.ai/.well-known/oauth-protected-resource/mcp", scope="projects:read missions:read missions:run missions:write artifacts:read" Protected resource metadata
| Document | https://mcp.letsship.ai/.well-known/oauth-protected-resource/mcp |
|---|---|
| Retrieved | Yes |
| Resource | https://mcp.letsship.ai/mcp |
| Authorisation server | https://letsship.ai |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://mcp.letsship.ai/mcp | Verified | 200 | |
| http (plaintext) | http://mcp.letsship.ai/mcp | HTTPS enforced | 301 | https://mcp.letsship.ai/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
activate_sandbox_template_version Roll a sandbox back (or forward) to a version ~65
Make a version the one missions use from their next dispatch. It is rebuilt only if its snapshot is gone; the response says which.
| Name | Type | Req | Description |
|---|---|---|---|
| templateId | string | yes | Sandbox id (sbt_...) |
| versionId | string | yes | Version id (stv_...) |
No output schema declared.
No examples provided.
approve_mission_ceiling Let a mission continue past its credit limit ~130
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.
| Name | Type | Req | Description |
|---|---|---|---|
| issueId | string | yes | The mission's issue id: a Linear key or a GitHub Issues id, e.g. SHIP-412 |
| projectId | string | yes | Project id the mission belongs to (get_mission's summary.projectId) |
No output schema declared.
No examples provided.
archive_mission Archive a mission ~82
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).
| Name | Type | Req | Description |
|---|---|---|---|
| issueId | string | yes | The mission's issue id: a Linear key or a GitHub Issues id, e.g. SHIP-412 |
No output schema declared.
No examples provided.
bind_mcp_server Bind an MCP server ~394
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.
| Name | Type | Req | Description |
|---|---|---|---|
| approvedTools | array | – | The approved subset of the tool snapshot (refresh_mcp_server_tools first). Omit to keep it. |
| credential | – | – | Write-only credential the gateway attaches; agents never receive it. Omit to keep the stored one. OAuth credentials are not set here: bind as remote with kind 'none', then start_mcp_server_oauth. |
| projectId | string | yes | Project id, e.g. from list_projects |
| remoteUrl | string | – | A fixed https URL: a hosted endpoint for a command server, or an override for a URL server |
| roles | array | yes | Every role that may use the server ([] disables it) |
| serverName | string | yes | Server name as the repository's MCP file declares it (see list_mcp_servers) |
| transport | string | – | How the gateway reaches the server: 'remote' proxies to remoteUrl, 'isolate' runs the server's npm package away from the sandbox so a secret stays out of it, and 'local' runs the command inside the s… |
No output schema declared.
No examples provided.
build_sandbox_template Build a sandbox now ~40
Build the sandbox's active version, or return the build already running for it.
| Name | Type | Req | Description |
|---|---|---|---|
| templateId | string | yes | Sandbox id (sbt_...) |
No output schema declared.
No examples provided.
clear_agents_override Clear a mission's agents-override ~76
Delete the per-issue agents/baseBranch override — the mission resolves from ship.yml again.
| Name | Type | Req | Description |
|---|---|---|---|
| issueId | string | yes | The mission's issue id: a Linear key or a GitHub Issues id, e.g. SHIP-353 or WEB-42 |
| projectId | string | yes | Project id the mission belongs to |
No output schema declared.
No examples provided.
create_mission Create a mission ~284
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.
| Name | Type | Req | Description |
|---|---|---|---|
| agents | object | – | Per-role harness/model override for THIS mission only; overrides ship.yml without changing it |
| description | string | – | Issue body; acceptance criteria written here are parsed as they would be on any issue |
| entryPlan | string | – | Hand-off plan markdown, for entryStartAt='builder' |
| entryPrNumber | integer | – | Existing open PR number, required for entryStartAt='reviewer' or 'qa' |
| entryStartAt | string | – | Pipeline stage to enter at; omit for the default full run starting at the planner |
| labels | array | – | Tracker labels to apply |
| projectId | string | yes | Project id the mission belongs to |
| title | string | – | Issue title. Omit ONLY with entryPrNumber — the pull request's own title is then used |
No output schema declared.
No examples provided.
create_scheduled_task Create a scheduled task ~392
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.
| Name | Type | Req | Description |
|---|---|---|---|
| dayOfMonth | integer | – | Day of month, 1-28 — required when interval is 'monthly' (capped at 28 so every month has the day). |
| enabled | boolean | – | Whether the schedule is armed (default true) |
| interval | string | yes | Fire cadence. 'weekly' requires weekday; 'monthly' requires dayOfMonth. |
| labels | array | – | Tracker label names put on every issue this scheduled task files (default none). The label must ALREADY exist in the project's tracker team — the platform attaches labels but cannot create them, so a… |
| name | string | yes | Scheduled task name, shown in the console and used in the issue title |
| projectId | string | yes | Project id the scheduled task belongs to |
| prompt | string | yes | Becomes the created issue's description verbatim on every fire |
| skipIfPreviousOpen | boolean | – | Skip a scheduled fire while the previous fire's mission is still open (default true — the guardrail is opt-out, not opt-in) |
| templateKey | string | – | Attribution only, when authored from a template — see list_scheduled_task_templates |
| time | string | yes | 24-hour wall-clock time in `timezone`, e.g. '09:00'. |
| timezone | string | yes | IANA timezone id, e.g. 'Europe/Amsterdam'. |
| weekday | string | – | Day of week — required when interval is 'weekly'. |
No output schema declared.
No examples provided.
decline_mission Decline a mission's pull request ~74
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.
| Name | Type | Req | Description |
|---|---|---|---|
| issueId | string | yes | The mission's issue id: a Linear key or a GitHub Issues id, e.g. SHIP-412 |
No output schema declared.
No examples provided.
delete_sandbox_registry Remove a private registry credential ~74
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.
| Name | Type | Req | Description |
|---|---|---|---|
| registryId | string | yes | Registry credential id, from list_sandbox_registries |
No output schema declared.
No examples provided.
delete_sandbox_template Delete a sandbox ~84
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.
| Name | Type | Req | Description |
|---|---|---|---|
| templateId | string | yes | Sandbox id (sbt_...) |
No output schema declared.
No examples provided.
delete_scheduled_task Delete a scheduled task ~76
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.
| Name | Type | Req | Description |
|---|---|---|---|
| scheduledTaskId | string | yes | Scheduled task id to delete |
No output schema declared.
No examples provided.
destroy_environment Destroy a preview environment ~51
Request teardown of a preview environment (its deployed Worker(s) + every provisioned datastore). Enqueues to the orchestrator; requires project write capability.
| Name | Type | Req | Description |
|---|---|---|---|
| environmentId | string | yes | Environment id to tear down |
No output schema declared.
No examples provided.
dismiss_notice Dismiss a workspace notice ~103
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.
| Name | Type | Req | Description |
|---|---|---|---|
| noticeId | string | yes | The notice's id from get_notices, e.g. credits_low:<grant> |
No output schema declared.
No examples provided.
get_agent_run Get agent run detail ~98
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.
| Name | Type | Req | Description |
|---|---|---|---|
| sandboxId | string | yes | Agent run id: the run's sandbox id, from list_agent_runs |
No output schema declared.
No examples provided.
get_agent_run_logs Get agent run logs ~166
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.
| Name | Type | Req | Description |
|---|---|---|---|
| part | string | – | Which log stream to read |
| role | string | yes | Agent role: planner | builder | reviewer | qa |
| sandboxId | string | yes | Agent run id: the run's sandbox id |
| sessionId | string | yes | Session id from get_agent_run's sessions list |
No output schema declared.
No examples provided.
get_agents_override Read a mission's agents-override ~77
Read the per-issue agents/baseBranch override record for one mission, or null when unset.
| Name | Type | Req | Description |
|---|---|---|---|
| issueId | string | yes | The mission's issue id: a Linear key or a GitHub Issues id, e.g. SHIP-353 or WEB-42 |
| projectId | string | yes | Project id the mission belongs to |
No output schema declared.
No examples provided.
get_artifact Get artifact ~44
Fetch one artifact's metadata + a long-lived signed serving url (open it to view the screenshot/video).
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Artifact id (from list_artifacts) |
| Name | Type | Req | Description |
|---|---|---|---|
| caption | string|null | yes | – |
| contentType | string | yes | – |
| createdAt | string | yes | – |
| criterion | string|null | yes | – |
| criterionPassed | boolean|null | yes | – |
| expiresAt | string|null | yes | – |
| id | string | yes | – |
| issueId | string | yes | – |
| kind | string | yes | – |
| projectId | string | yes | – |
| role | string | yes | – |
| sandboxId | string|null | yes | – |
| sessionId | string|null | yes | – |
| sizeBytes | integer | yes | – |
| traceViewerUrl | string|null | yes | – |
| url | string | yes | – |
No examples provided.
get_billing Get workspace credits ~49
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_environment Get preview environment detail ~38
Fetch one preview environment's registry row (status, worker name, timestamps).
| Name | Type | Req | Description |
|---|---|---|---|
| environmentId | string | yes | Environment id (from list_environments) |
| Name | Type | Req | Description |
|---|---|---|---|
| environment | object | yes | – |
No examples provided.
get_mission Get mission detail ~221
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.
| Name | Type | Req | Description |
|---|---|---|---|
| issueId | string | yes | The mission's issue id: a Linear key or a GitHub Issues id, e.g. SHIP-412 |
| orgSlug | string | – | Narrow an issue id to one org |
| projectId | string | – | Narrow an issue id that two projects share |
| view | string | – | summary (default) for the state, runs and proof run; full for every stage, event and outcome |
No output schema declared.
No examples provided.
get_notices Get workspace notices ~90
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_project Get project ~40
Fetch a single project by its UUID. Returns 404 if the project is not in the caller's org.
| Name | Type | Req | Description |
|---|---|---|---|
| projectId | string | yes | Project UUID |
| Name | Type | Req | Description |
|---|---|---|---|
| autoMerge | boolean | yes | – |
| createdAt | integer | yes | – |
| defaultSandboxTemplateId | string|null | yes | – |
| id | string | yes | – |
| issueCode | string|null | yes | – |
| llmConnectorId | string | yes | – |
| missingConnectorKinds | array | – | – |
| name | string | yes | – |
| orgId | string | yes | – |
| scmConnectorId | string | yes | – |
| scmOwner | string | yes | – |
| scmRepo | string | yes | – |
| slug | string | yes | – |
| status | string | yes | – |
| tracker | string | yes | – |
| trackerConnectorId | string|null | yes | – |
| trackerProjectId | string|null | yes | – |
| trackerTeamId | string|null | yes | – |
No examples provided.
get_sandbox_build_log Read a sandbox build's log ~81
A page of a build's log after sequence number `after`. Call again with after = nextAfter until done is true.
| Name | Type | Req | Description |
|---|---|---|---|
| after | integer | – | Return chunks after this sequence number (default 0) |
| buildId | string | yes | Build id (tbd_...) |
| templateId | string | yes | Sandbox id (sbt_...) |
No output schema declared.
No examples provided.
get_sandbox_capacity Read how many agents are running ~81
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.
| Name | Type | Req | Description |
|---|---|---|---|
| orgId | string | – | Required only for a caller in several orgs |
No output schema declared.
No examples provided.
get_scheduled_task Get scheduled task ~96
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.
| Name | Type | Req | Description |
|---|---|---|---|
| scheduledTaskId | string | yes | Scheduled task id, e.g. from list_scheduled_tasks |
No output schema declared.
No examples provided.
get_setup_progress Get setup progress ~125
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.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| activeGroup | string|null | yes | – |
| activeGroupProgress | object|null | yes | – |
| complete | boolean | yes | – |
| firstMission | object|null | yes | – |
| groups | array | yes | – |
| guides | array | yes | – |
| next | string|null | yes | – |
| orgId | string | yes | – |
| reachedCount | integer | yes | – |
| totalCount | integer | yes | – |
No examples provided.
healthz API health probe ~19
Returns the upstream API status, environment, and version.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
inspect_mission Inspect mission ~166
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.
| Name | Type | Req | Description |
|---|---|---|---|
| issueId | string | yes | The mission's issue id: a Linear key or a GitHub Issues id, e.g. SHIP-199 or WEB-42 |
| orgSlug | string | – | Narrow an ambiguous issue code to one org |
| projectId | string | – | Scope to a specific project id |
| sections | string | – | Comma-separated section filter (default all): taskState,retryReason,provenance,… |
No output schema declared.
No examples provided.
list_agent_runs List agent runs ~233
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.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | nextCursor from the previous page; omit for the newest runs |
| issueId | string | – | Only the runs of this mission, by its issue id, e.g. SHIP-412 |
| limit | integer | – | Max results (default 50). Narrow with projectId, issueId, role or status before raising it. |
| projectId | string | – | Filter to one project id |
| role | string | – | Only the runs of this agent role |
| status | string | – | Filter by how the run stands: running, completed (finished), stopped (ended on purpose before it finished), failed, or stale (closed without a report) |
| Name | Type | Req | Description |
|---|---|---|---|
| data | array | yes | – |
| nextCursor | string|null | yes | – |
No examples provided.
list_artifacts List artifacts ~211
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.
| Name | Type | Req | Description |
|---|---|---|---|
| issueId | string | – | Filter to one issue (e.g. SHIP-133) |
| limit | integer | – | Max results (default 50). Narrow with issueId or sandboxId before raising it. |
| projectId | string | – | Filter to one project id |
| sandboxId | string | – | Filter to ONE agent run's artifacts (e.g. the mission's proofRunSandboxId) |
| Name | Type | Req | Description |
|---|---|---|---|
| data | array | yes | – |
| nextCursor | string|null | yes | – |
No examples provided.
list_billing_ledger List workspace credit ledger ~108
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.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | nextCursor from the previous page; omit for the newest entries. |
| limit | integer | – | Entries per page, 1-100 (default 50). |
No output schema declared.
No examples provided.
list_credit_offers List credit packs, the monthly plans and Enterprise ~152
List what SHIP sells: the credit packs (credits, the tax-inclusive price in US dollars 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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_environments List preview environments ~104
List per-mission preview environments for the caller's accessible projects. Returns id, issueId, projectId, prNumber, workerName, and lifecycle status.
| Name | Type | Req | Description |
|---|---|---|---|
| issueId | string | – | Filter to one issue id |
| limit | integer | – | Max results (default 50). Narrow with issueId, projectId or status before raising it. |
| projectId | string | – | Filter to one project id |
| status | string | – | Filter by lifecycle status |
| Name | Type | Req | Description |
|---|---|---|---|
| data | array | yes | – |
| nextCursor | string|null | yes | – |
No examples provided.
list_mcp_bindings List the org's MCP bindings ~75
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_mcp_servers List a project's MCP servers ~108
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).
| Name | Type | Req | Description |
|---|---|---|---|
| projectId | string | yes | Project id, e.g. from list_projects |
No output schema declared.
No examples provided.
list_missions List missions ~152
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.
| Name | Type | Req | Description |
|---|---|---|---|
| activity | string | – | Filter by what the mission does now |
| limit | integer | – | Page size (default 25). Narrow with projectId, activity or search before raising it. |
| offset | integer | – | Rows to skip, for the next page |
| projectId | string | – | Filter to one project id |
| search | string | – | Match the issue id, title, owner or repository |
No output schema declared.
No examples provided.
list_orgs List every org (cross-tenant) ~117
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.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | Opaque page cursor, echoed back as nextCursor by a prior call |
| limit | integer | – | Page size, 1-100 (API default 50) |
No output schema declared.
No examples provided.
list_projects List projects ~59
List the projects accessible to the calling principal. Returns id, slug, name, status, createdAt for each.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | Opaque pagination cursor from a previous call |
| limit | integer | – | Max results (default 20) |
| Name | Type | Req | Description |
|---|---|---|---|
| data | array | yes | – |
| nextCursor | string|null | yes | – |
No examples provided.
list_sandbox_registries List private registries ~35
The org's private package registries sandboxes install from: host, auth scheme, username. Never the secret.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_sandbox_starters List sandbox starters ~32
Ready-made sandbox definitions (Python, Java, Go, Rust, Ruby) to create a sandbox from.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_sandbox_template_versions List a sandbox's versions ~46
Every saved version of a sandbox, newest first, with the active one marked and each one's latest build.
| Name | Type | Req | Description |
|---|---|---|---|
| templateId | string | yes | Sandbox id (sbt_...) |
No output schema declared.
No examples provided.
list_sandbox_templates List custom sandboxes ~34
List the org's sandboxes (definitions agents start in), with each one's active version, size and latest build status.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_scheduled_task_runs List a scheduled task's run history ~146
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.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | nextCursor from the previous page; omit for the newest runs |
| limit | integer | – | Runs per page, 1-200 (default 50) |
| scheduledTaskId | string | yes | Scheduled task id |
No output schema declared.
No examples provided.
list_scheduled_task_templates List scheduled task templates ~65
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_scheduled_tasks List scheduled tasks ~64
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.
| Name | Type | Req | Description |
|---|---|---|---|
| projectId | string | – | Only the scheduled tasks of this project |
No output schema declared.
No examples provided.
mark_setup_step Mark a setup step ~162
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.
| Name | Type | Req | Description |
|---|---|---|---|
| group | string | – | A group id: marks every open step of the group. |
| mark | string | yes | open removes the caller's mark. |
| step | string | – | The milestone id from get_setup_progress. Give step or group. |
No output schema declared.
No examples provided.
merge_mission Merge a mission's pull request ~119
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. Answers 409 with the reason when the pull request cannot merge. 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.
| Name | Type | Req | Description |
|---|---|---|---|
| issueId | string | yes | The mission's issue id: a Linear key or a GitHub Issues id, e.g. SHIP-412 |
No output schema declared.
No examples provided.
pause_mission Pause a mission ~81
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.
| Name | Type | Req | Description |
|---|---|---|---|
| issueId | string | yes | The mission's issue id: a Linear key or a GitHub Issues id, e.g. SHIP-412 |
No output schema declared.
No examples provided.
refresh_mcp_server_tools Refresh an MCP server's tool list ~106
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.
| Name | Type | Req | Description |
|---|---|---|---|
| projectId | string | yes | Project id, e.g. from list_projects |
| serverName | string | yes | Server name as the repository's MCP file declares it (see list_mcp_servers) |
No output schema declared.
No examples provided.
How do I install the SHIP MCP server?
SHIP is a hosted endpoint at https://mcp.letsship.ai/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · mcp.letsship.ai
claude mcp add --transport http ai-letsship-ship 'https://mcp.letsship.ai/mcp'
What is the SHIP MCP server?
SHIP is an MCP server listed in the public MCP registry as ai.letsship/ship. Assign Linear, Jira or GitHub issues to an AI coding agent team that plans, builds, reviews, tests. This page covers its hosted endpoint (https://mcp.letsship.ai/mcp).
Is the SHIP MCP server safe to use?
SHIP scores 80 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the SHIP MCP server expose?
SHIP exposes 72 tools: healthz, whoami, get_setup_progress, get_billing, list_billing_ledger, and 67 more. Their descriptions and schemas cost roughly 9,524 tokens of context every time the server is loaded.
Does the SHIP MCP server require authentication?
Yes. SHIP asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.
Is the SHIP MCP server still maintained?
SHIP is still listed as active in the MCP registry. We last reached this channel on 17 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.