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 (3 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 →
request_more_credits Ask for more credits ~75
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.
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | yes | What the credits are for. |
No output schema declared.
No examples provided.
resume_mission Resume a mission ~97
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.
| 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.
run_scheduled_task Run a scheduled task now ~99
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.
| Name | Type | Req | Description |
|---|---|---|---|
| scheduledTaskId | string | yes | Scheduled task id to fire |
No output schema declared.
No examples provided.
save_sandbox_registry Store a private registry credential ~114
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.
| Name | Type | Req | Description |
|---|---|---|---|
| host | string | yes | Registry host or URL, e.g. npm.pkg.github.com |
| scheme | string | yes | How the registry takes the credential: 'bearer' sends secret as a token, 'basic' sends username and secret |
| secret | string | yes | Token or password |
| username | string | – | Required for basic |
No output schema declared.
No examples provided.
save_sandbox_template Create or update a sandbox ~201
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.
| Name | Type | Req | Description |
|---|---|---|---|
| dockerfile | string | – | The Dockerfile that builds the sandbox image. Give this or starterId to create; it replaces the file on an update |
| name | string | – | Required when creating |
| size | – | – | A tier, or { vcpu, memoryMib, diskMb } within 1-4 vCPU, >=3072 MiB per vCPU, <=12288 MiB, 8000-20000 MB |
| starterId | string | – | Create from a starter's definition and size |
| templateId | string | – | Sandbox id (sbt_...) |
No output schema declared.
No examples provided.
send_mission_instruction Send a follow-up instruction to a mission ~214
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.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | yes | What the agents should do. Travels verbatim into the prompt |
| issueId | string | yes | Issue id the mission is tracked under, e.g. SHIP-244 or GH-1280 |
| kind | string | – | follow_up (default) dispatches the builder; note records context and dispatches nothing |
No output schema declared.
No examples provided.
set_agents_override Set a per-issue agents-override for one role ~624
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.
| Name | Type | Req | Description |
|---|---|---|---|
| baseBranch | string | – | Override the pipeline's fork/target branch for this mission |
| checkpoint | boolean | – | Pause the pipeline after this role's stage completes |
| effort | string | – | Reasoning effort for this role, mapped to the harness's own control at dispatch: low, medium, high or xhigh, and also max on claude-code. A value the harness does not take is refused at dispatch. |
| harness | string | – | The code harness this role runs on for this mission |
| issueId | string | yes | The mission's issue id: a Linear key or a GitHub Issues id, e.g. SHIP-353 or WEB-42 |
| model | string | – | The model id this role uses for this mission. The harness must support it |
| projectId | string | yes | Project id the mission belongs to |
| promptContent | string | – | Inline prompt-experiment body, capped at 30,000 characters. Mutually exclusive with promptPath. |
| promptMode | string | – | How this prompt relates to the repo's own .ship/agents/<role>.md (or ship.yml-pointed) layer. replace (default) makes this the role's only role-prompt layer; extend resolves the repo's layer first an… |
| promptPath | string | – | Repo-relative path to an L2 prompt file. Without promptRef this is the SHIP-347 pointer form (resolved at the pinned base branch); with promptRef it's a path+ref experiment resolved at that ref. |
| promptRef | string | – | Git ref for promptPath — only meaningful alongside promptPath. |
| rejectOn | string | – | Review rejection threshold — only meaningful on the reviewer role |
| role | string | yes | The role this override entry patches |
| sandbox | string | – | Sandbox name or id this role starts in for this mission (beats ship.yml and the project default) |
| size | – | – | Container size for this role on this mission |
No output schema declared.
No examples provided.
set_mcp_config_path Set a project's MCP file path ~127
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.
| Name | Type | Req | Description |
|---|---|---|---|
| configPath | – | yes | Repository-relative path, or null |
| projectId | string | yes | Project id, e.g. from list_projects |
No output schema declared.
No examples provided.
set_mission_auto_merge Turn auto-merge on or off for one mission ~131
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.
| Name | Type | Req | Description |
|---|---|---|---|
| enabled | boolean | yes | true merges the pull request once it is ready; false leaves the merge to a person |
| 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.
set_mission_disposition Record why a mission ended ~177
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.
| Name | Type | Req | Description |
|---|---|---|---|
| disposition | – | yes | product, probe, superseded or takeover; null clears a disposition set by mistake |
| issueId | string | yes | The mission's issue id: a Linear key or a GitHub Issues id, e.g. SHIP-412 |
| supersededBy | string | – | The issue id of the mission that replaced this one, for disposition superseded only |
No output schema declared.
No examples provided.
start_credit_checkout Start buying credits or a monthly plan ~322
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.
| Name | Type | Req | Description |
|---|---|---|---|
| idempotencyKey | string | – | Reuse on retry to get the same page back. |
| offer | string | yes | A pack, team or team_credits, from list_credit_offers. |
| quantity | integer | – | Credits for team_credits, within the range list_credit_offers gives; omit for a pack or a plan. |
| startNow | boolean | yes | Records the buyer's own consent to start the credits at once, during the withdrawal period, against this text: "Start my credits now, so they can be used during the 14-day withdrawal period. If I wit… |
| teamPlan | string | – | The plan to start, for offer team only: starter or scale, from list_credit_offers. |
No output schema declared.
No examples provided.
start_mcp_server_oauth Start OAuth for a remote MCP server ~168
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.
| Name | Type | Req | Description |
|---|---|---|---|
| projectId | string | yes | Project id, e.g. from list_projects |
| returnTo | string | – | Console path to land on after consent, e.g. /projects/<id> |
| scope | string | – | Requested scope; defaults to the server's own hint |
| serverName | string | yes | Server name as the repository's MCP file declares it (see list_mcp_servers) |
No output schema declared.
No examples provided.
start_mission Start a mission ~219
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.
| Name | Type | Req | Description |
|---|---|---|---|
| agents | object | – | Per-role harness/model override for THIS mission only; overrides ship.yml without changing it |
| issueId | string | yes | The mission's issue id: a Linear key or a GitHub Issues id, e.g. SHIP-244 or WEB-42 |
| plan | string | – | Hand-off plan markdown, for startAt='builder' |
| prNumber | integer | – | Existing open PR number, required for startAt='reviewer' or startAt='qa' |
| projectId | string | yes | Project id the mission belongs to |
| startAt | string | – | Pipeline stage to enter at; omit for the default full run starting at the planner |
No output schema declared.
No examples provided.
stop_agent_run Stop an agent run ~101
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.
| 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.
stop_mission Stop a mission ~93
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.
| 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.
unarchive_mission Unarchive a mission ~68
Show an archived mission in list_missions and on the board again. Requires the missions:write scope and the config:write capability.
| 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.
unbind_mcp_server Remove an MCP server binding ~92
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.
| 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.
update_project Change a project's settings ~279
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 and linearTeamKey connect the project to another repository or Linear team 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.
| Name | Type | Req | Description |
|---|---|---|---|
| autoMerge | boolean | – | true merges a ready pull request without a person |
| defaultSandboxTemplateId | – | – | A sandbox id (sbt_...) from list_sandbox_templates, or null for the platform base |
| issueCode | string | – | A GitHub Issues project's issue id prefix, 2-5 characters; only new ids use it |
| linearTeamKey | string | – | The key of the Linear team to connect, e.g. ENG |
| name | string | – | A new name |
| projectId | string | yes | Project id, from list_projects |
| repoFullName | string | – | owner/repo of the repository to connect, through the organization's GitHub connection |
| status | string | – | active, paused or archived |
No output schema declared.
No examples provided.
update_scheduled_task Update a scheduled task ~368
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.
| 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 | – | Set false to pause the schedule without deleting the scheduled task |
| interval | string | – | Fire cadence. 'weekly' requires weekday; 'monthly' requires dayOfMonth. |
| labels | array | – | Tracker label names put on every issue this scheduled task files (replaces the list; [] clears it). The label must ALREADY exist in the project's tracker team — the platform attaches labels but canno… |
| name | string | – | Scheduled task name, shown in the console and used in the issue title |
| prompt | string | – | Replaces the issue description verbatim |
| scheduledTaskId | string | yes | Scheduled task id to update |
| 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) |
| time | string | – | 24-hour wall-clock time in `timezone`, e.g. '09:00'. |
| timezone | string | – | IANA timezone id, e.g. 'Europe/Amsterdam'. |
| weekday | string | – | Day of week — required when interval is 'weekly'. |
No output schema declared.
No examples provided.
update_team_subscription Change the monthly plan subscription ~147
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.
| Name | Type | Req | Description |
|---|---|---|---|
| cancelAtPeriodEnd | boolean | – | true ends the subscription at the end of the paid month; false resumes it. |
| plan | string | – | The plan from the next renewal on: starter or scale, from list_credit_offers. |
No output schema declared.
No examples provided.
watch_agent_run Watch an agent run ~231
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.
| Name | Type | Req | Description |
|---|---|---|---|
| maxSeconds | integer | – | The longest time to wait, in seconds (default 300, at most 600) |
| sandboxId | string | yes | Agent run id: the run's sandbox id, from list_agent_runs or get_mission |
| since | integer | – | The cursor from an earlier result. Only the events after it are sent |
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | – | yes | The id of the last event. Give it as since to continue |
| ended | boolean | yes | True when the run is no longer running |
| events | array | yes | The last 20 events at most, oldest first |
| hint | string | – | What to do next, when the run is still running |
| reason | string | yes | Why the call returned: the run ended, its mission moved to another stage, or maxSeconds passed |
| sandboxId | string | yes | – |
| stage | – | yes | The stage of the run's mission when the call returned |
| status | string | yes | The status of the run when the call returned |
No examples provided.
whoami Identify the calling principal ~52
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.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| capabilities | array | yes | – |
| orgId | string|null | yes | – |
| principalType | string | yes | agent: a self-registered agent nobody has claimed yet. It has no user, org, role or scopes, and reaches only /me and /scopes until a person claims it. |
| projectId | string|null | yes | The project this credential is bound to, or null when it is org-wide. A bound token can read and act only on that project, and on nothing org-wide - so a caller can see the boundary it works within r… |
| role | string|null | yes | – |
| scopes | array | yes | – |
| userId | string|null | yes | – |
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.