{"data":{"name":"ai.letsship/ship","title":"SHIP","description":"Assign Linear, Jira or GitHub issues to an AI coding agent team that plans, builds, reviews, tests.","version":"0.24.0","websiteUrl":"https://letsship.ai/docs/mcp","repositoryUrl":"https://github.com/letsship/mcp","remotes":[{"url":"https://mcp.letsship.ai/mcp","type":"streamable-http","headers":[{"name":"Authorization","value":"Bearer {token}","isSecret":true,"variables":{"token":{"isSecret":true,"isRequired":true,"description":"The token value. It starts with pat_.","placeholder":"pat_..."}},"description":"A SHIP personal access token, sent as a bearer token. Create one at https://letsship.ai/settings/tokens. Leave it out to sign in with OAuth instead."}]}],"packages":[],"status":"active","isLatest":true,"publishedAt":"2026-10-12T13:24:10.416Z","updatedAt":"2026-10-12T13:24:10.416Z","source":"official-registry","verification":"official","confidence":100,"stars":null,"sources":[{"stars":null,"title":"SHIP","source":"official-registry","sourceId":"ai.letsship/ship","updatedAt":"2026-10-12T13:24:10.416Z","confidence":100,"websiteUrl":"https://letsship.ai/docs/mcp","description":"Assign Linear, Jira or GitHub issues to an AI coding agent team that plans, builds, reviews, tests.","verification":"official","repositoryUrl":"https://github.com/letsship/mcp"}],"toolIndex":{"tools":[{"serverName":"ai.letsship/ship","endpointFingerprint":"f334d2a5f75a090c462a009a25bb7327bbb47216116ae963a0088485b5d29e2d","name":"answer_qa_checkpoint","title":"Answer the QA checkpoint of a mission","description":"A mission waits at the QA checkpoint (get_mission shows pauseSource 'qa-unverifiable') when QA could not check some acceptance criteria, so no code change can move it. A person checks those criteria another way, then answers. 'accept' counts QA as passed, 'reject' ends the mission as failed, and 'rerun' runs QA again on the same commit. Send only the decision the person made. Answers 409 when the mission does not wait at the QA checkpoint. Requires the missions:write scope.","inputSchema":{"type":"object","properties":{"issueId":{"type":"string","description":"The mission's issue id: a Linear key or a GitHub Issues id, e.g. SHIP-412"},"decision":{"type":"string","enum":["accept","reject","rerun"],"description":"accept (QA counts as passed), reject (the mission fails) or rerun (QA runs again)"}},"required":["issueId","decision"],"$schema":"https://json-schema.org/draft/2020-12/schema"},"annotations":{"title":"Answer the QA checkpoint of a mission","readOnlyHint":false,"destructiveHint":true,"idempotentHint":true,"openWorldHint":true},"definitionHash":"df3e4902b5b174b6955f2e914e7a19f7bcaae62ef6c68f4ebc533e8add73e249","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T05:46:18.438Z","metadataTrust":"untrusted"},{"serverName":"ai.letsship/ship","endpointFingerprint":"f334d2a5f75a090c462a009a25bb7327bbb47216116ae963a0088485b5d29e2d","name":"approve_mission_ceiling","title":"Let a mission continue past its credit limit","description":"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.","inputSchema":{"type":"object","properties":{"issueId":{"type":"string","description":"The mission's issue id: a Linear key or a GitHub Issues id, e.g. SHIP-412"},"projectId":{"type":"string","description":"Project id the mission belongs to (get_mission's summary.projectId)"}},"required":["issueId","projectId"],"$schema":"https://json-schema.org/draft/2020-12/schema"},"annotations":{"title":"Let a mission continue past its credit limit","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true},"definitionHash":"b4edffa55d66f04f68dc7b71dbf729ac202cdf0337110349254e8538da166fea","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T05:46:18.438Z","metadataTrust":"untrusted"},{"serverName":"ai.letsship/ship","endpointFingerprint":"f334d2a5f75a090c462a009a25bb7327bbb47216116ae963a0088485b5d29e2d","name":"archive_mission","title":"Archive a mission","description":"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).","inputSchema":{"type":"object","properties":{"issueId":{"type":"string","description":"The mission's issue id: a Linear key or a GitHub Issues id, e.g. SHIP-412"}},"required":["issueId"],"$schema":"https://json-schema.org/draft/2020-12/schema"},"annotations":{"title":"Archive a mission","readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"c1351892184a0b375a53b7e7471ab1d43c9484e213304d929a6c068fc82a8e87","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T05:46:18.438Z","metadataTrust":"untrusted"},{"serverName":"ai.letsship/ship","endpointFingerprint":"f334d2a5f75a090c462a009a25bb7327bbb47216116ae963a0088485b5d29e2d","name":"bind_mcp_server","title":"Bind an MCP server","description":"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.","inputSchema":{"type":"object","properties":{"projectId":{"type":"string","minLength":1,"description":"Project id, e.g. from list_projects"},"serverName":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$","description":"Server name as the repository's MCP file declares it (see list_mcp_servers)"},"roles":{"maxItems":4,"type":"array","items":{"type":"string","enum":["planner","builder","reviewer","qa"]},"description":"Every role that may use the server ([] disables it)"},"transport":{"description":"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 sandbox with no credential. Omit it on an update to keep the server the binding is pinned to.","type":"string","enum":["remote","isolate","local"]},"remoteUrl":{"description":"A fixed https URL: a hosted endpoint for a command server, or an override for a URL server","type":"string","maxLength":2048,"format":"uri"},"credential":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"none"}},"required":["kind"]},{"type":"object","properties":{"kind":{"type":"string","const":"headers"},"headers":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","minLength":1,"maxLength":4096},"description":"Header name to value, 1-10 entries, e.g. { Authorization: 'Bearer ...' }. Remote servers only."}},"required":["kind","headers"]},{"type":"object","properties":{"kind":{"type":"string","const":"isolate-env"},"env":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","minLength":1,"maxLength":4096},"description":"Environment variable to value, 1-20 entries. Isolated servers only."},"allowedHosts":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"string","minLength":1,"maxLength":253},"description":"Exact hostnames the isolated server may reach; the credential can go nowhere else."}},"required":["kind","env","allowedHosts"]}],"description":"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."},"approvedTools":{"description":"The approved subset of the tool snapshot (refresh_mcp_server_tools first). Omit to keep it.","maxItems":200,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":128},"attestedReadOnly":{"description":"Owner attestation that an UNANNOTATED tool only reads; lets reviewer and qa use it","type":"boolean"}},"required":["name"]}}},"required":["projectId","serverName","roles"],"$schema":"https://json-schema.org/draft/2020-12/schema"},"annotations":{"title":"Bind an MCP server","readOnlyHint":false,"destructiveHint":true,"idempotentHint":true,"openWorldHint":false},"definitionHash":"6df3a1c74c046d4189191404a343123375c741bc221b2c620c62e07d7039d7b5","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T05:46:18.438Z","metadataTrust":"untrusted"},{"serverName":"ai.letsship/ship","endpointFingerprint":"f334d2a5f75a090c462a009a25bb7327bbb47216116ae963a0088485b5d29e2d","name":"clear_agents_override","title":"Clear a mission's agents-override","description":"Delete the per-issue agents/baseBranch override — the mission resolves from ship.yml again.","inputSchema":{"type":"object","properties":{"issueId":{"type":"string","description":"The mission's issue id: a Linear key or a GitHub Issues id, e.g. SHIP-353 or WEB-42"},"projectId":{"type":"string","description":"Project id the mission belongs to"}},"required":["issueId","projectId"],"$schema":"https://json-schema.org/draft/2020-12/schema"},"annotations":{"title":"Clear a mission's agents-override","readOnlyHint":false,"destructiveHint":true,"idempotentHint":true,"openWorldHint":false},"definitionHash":"336cfc049d239717c0ea652a9f1f1fb0beb0cb5f383f4560a0911ceb2896342b","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T05:46:18.438Z","metadataTrust":"untrusted"},{"serverName":"ai.letsship/ship","endpointFingerprint":"f334d2a5f75a090c462a009a25bb7327bbb47216116ae963a0088485b5d29e2d","name":"create_mission","title":"Create a mission","description":"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.","inputSchema":{"type":"object","properties":{"projectId":{"type":"string","description":"Project id the mission belongs to"},"title":{"description":"Issue title. Omit ONLY with entryPrNumber — the pull request's own title is then used","type":"string","minLength":1,"maxLength":200},"description":{"description":"Issue body; acceptance criteria written here are parsed as they would be on any issue","type":"string","maxLength":10000},"labels":{"description":"Tracker labels to apply","maxItems":10,"type":"array","items":{"type":"string"}},"entryStartAt":{"description":"Pipeline stage to enter at; omit for the default full run starting at the planner","type":"string","enum":["builder","reviewer","qa"]},"entryPlan":{"description":"Hand-off plan markdown, for entryStartAt='builder'","type":"string"},"entryPrNumber":{"description":"Existing open PR number, required for entryStartAt='reviewer' or 'qa'","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"agents":{"description":"Per-role harness/model override for THIS mission only; overrides ship.yml without changing it","type":"object","properties":{"planner":{"type":"object","properties":{"harness":{"type":"string","enum":["claude-code","codex","pi","kilo-code","open-code"]},"model":{"type":"string","minLength":1}},"additionalProperties":false},"builder":{"type":"object","properties":{"harness":{"type":"string","enum":["claude-code","codex","pi","kilo-code","open-code"]},"model":{"type":"string","minLength":1}},"additionalProperties":false},"reviewer":{"type":"object","properties":{"harness":{"type":"string","enum":["claude-code","codex","pi","kilo-code","open-code"]},"model":{"type":"string","minLength":1}},"additionalProperties":false},"qa":{"type":"object","properties":{"harness":{"type":"string","enum":["claude-code","codex","pi","kilo-code","open-code"]},"model":{"type":"string","minLength":1}},"additionalProperties":false}},"additionalProperties":false}},"required":["projectId"],"$schema":"https://json-schema.org/draft/2020-12/schema"},"annotations":{"title":"Create a mission","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true},"definitionHash":"0c849f918fd93263ff7637726707c0dc34c14135bde59010422c8e51e730c7cf","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T05:46:18.438Z","metadataTrust":"untrusted"},{"serverName":"ai.letsship/ship","endpointFingerprint":"f334d2a5f75a090c462a009a25bb7327bbb47216116ae963a0088485b5d29e2d","name":"create_scheduled_task","title":"Create a scheduled task","description":"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.","inputSchema":{"type":"object","properties":{"projectId":{"type":"string","minLength":1,"description":"Project id the scheduled task belongs to"},"name":{"type":"string","minLength":1,"maxLength":120,"description":"Scheduled task name, shown in the console and used in the issue title"},"prompt":{"type":"string","minLength":1,"maxLength":20000,"description":"Becomes the created issue's description verbatim on every fire"},"interval":{"type":"string","enum":["daily","weekly","monthly"],"description":"Fire cadence. 'weekly' requires weekday; 'monthly' requires dayOfMonth."},"time":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","description":"24-hour wall-clock time in `timezone`, e.g. '09:00'."},"timezone":{"type":"string","minLength":1,"description":"IANA timezone id, e.g. 'Europe/Amsterdam'."},"weekday":{"type":"string","enum":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"],"description":"Day of week — required when interval is 'weekly'."},"dayOfMonth":{"type":"integer","minimum":1,"maximum":28,"description":"Day of month, 1-28 — required when interval is 'monthly' (capped at 28 so every month has the day)."},"labels":{"description":"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 the workspace does not have is dropped.","maxItems":10,"type":"array","items":{"type":"string","minLength":1,"maxLength":100}},"templateKey":{"description":"Attribution only, when authored from a template — see list_scheduled_task_templates","type":"string","minLength":1,"maxLength":120},"skipIfPreviousOpen":{"description":"Skip a scheduled fire while the previous fire's mission is still open (default true — the guardrail is opt-out, not opt-in)","type":"boolean"},"enabled":{"description":"Whether the schedule is armed (default true)","type":"boolean"}},"required":["projectId","name","prompt","interval","time","timezone"],"$schema":"https://json-schema.org/draft/2020-12/schema"},"annotations":{"title":"Create a scheduled task","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"definitionHash":"d4c5adf7df938e6977e65a00740ce6a82acb29f08c269c0d075e22aea0dbf082","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T05:46:18.438Z","metadataTrust":"untrusted"},{"serverName":"ai.letsship/ship","endpointFingerprint":"f334d2a5f75a090c462a009a25bb7327bbb47216116ae963a0088485b5d29e2d","name":"decline_mission","title":"Decline a mission's pull request","description":"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.","inputSchema":{"type":"object","properties":{"issueId":{"type":"string","description":"The mission's issue id: a Linear key or a GitHub Issues id, e.g. SHIP-412"}},"required":["issueId"],"$schema":"https://json-schema.org/draft/2020-12/schema"},"annotations":{"title":"Decline a mission's pull request","readOnlyHint":false,"destructiveHint":true,"idempotentHint":true,"openWorldHint":true},"definitionHash":"7bb342ad7cba317925ff584213c5edb33cca35f5960fb2325e23e4061920f5c0","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T05:46:18.438Z","metadataTrust":"untrusted"},{"serverName":"ai.letsship/ship","endpointFingerprint":"f334d2a5f75a090c462a009a25bb7327bbb47216116ae963a0088485b5d29e2d","name":"delete_scheduled_task","title":"Delete a scheduled task","description":"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.","inputSchema":{"type":"object","properties":{"scheduledTaskId":{"type":"string","description":"Scheduled task id to delete"}},"required":["scheduledTaskId"],"$schema":"https://json-schema.org/draft/2020-12/schema"},"annotations":{"title":"Delete a scheduled task","readOnlyHint":false,"destructiveHint":true,"idempotentHint":true,"openWorldHint":false},"definitionHash":"84aa748d2585e744d015e89c88075f9d16a54102426aa7340d5a3a83041a12ee","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T05:46:18.438Z","metadataTrust":"untrusted"},{"serverName":"ai.letsship/ship","endpointFingerprint":"f334d2a5f75a090c462a009a25bb7327bbb47216116ae963a0088485b5d29e2d","name":"dismiss_notice","title":"Dismiss a workspace notice","description":"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.","inputSchema":{"type":"object","properties":{"noticeId":{"type":"string","description":"The notice's id from get_notices, e.g. credits_low:<grant>"}},"required":["noticeId"],"$schema":"https://json-schema.org/draft/2020-12/schema"},"annotations":{"title":"Dismiss a workspace notice","readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"d4487b7847f6581e930b0165e5f614c274f0284cac4c394aac7ea47569fa16af","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T05:46:18.438Z","metadataTrust":"untrusted"},{"serverName":"ai.letsship/ship","endpointFingerprint":"f334d2a5f75a090c462a009a25bb7327bbb47216116ae963a0088485b5d29e2d","name":"get_agents_override","title":"Read a mission's agents-override","description":"Read the per-issue agents/baseBranch override record for one mission, or null when unset.","inputSchema":{"type":"object","properties":{"issueId":{"type":"string","description":"The mission's issue id: a Linear key or a GitHub Issues id, e.g. SHIP-353 or WEB-42"},"projectId":{"type":"string","description":"Project id the mission belongs to"}},"required":["issueId","projectId"],"$schema":"https://json-schema.org/draft/2020-12/schema"},"annotations":{"title":"Read a mission's agents-override","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"4e4a3f11b18bdedb4440f17f7e21c01b7538c2e00b7e9114c783a7e4f0a08eca","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T05:46:18.438Z","metadataTrust":"untrusted"},{"serverName":"ai.letsship/ship","endpointFingerprint":"f334d2a5f75a090c462a009a25bb7327bbb47216116ae963a0088485b5d29e2d","name":"get_billing","title":"Get workspace credits","description":"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.","inputSchema":{"type":"object","properties":{},"$schema":"https://json-schema.org/draft/2020-12/schema"},"annotations":{"title":"Get workspace credits","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"8227fc2a44eecb56d64ee2982e68d60ea50268537054a639b3b02d15aac89dc4","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T05:46:18.438Z","metadataTrust":"untrusted"},{"serverName":"ai.letsship/ship","endpointFingerprint":"f334d2a5f75a090c462a009a25bb7327bbb47216116ae963a0088485b5d29e2d","name":"get_mission","title":"Get mission detail","description":"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. pauseSource 'qa-unverifiable' means QA could not check some acceptance criteria: answer_qa_checkpoint answers it. For a mission that needs attention, summary.escalation says whether an error or a platform judgement stopped it and summary.escalationCause holds the whole error. Requires the missions:read scope.","inputSchema":{"type":"object","properties":{"issueId":{"type":"string","description":"The mission's issue id: a Linear key or a GitHub Issues id, e.g. SHIP-412"},"projectId":{"description":"Narrow an issue id that two projects share","type":"string"},"orgSlug":{"description":"Narrow an issue id to one org","type":"string"},"view":{"default":"summary","description":"summary (default) for the state, runs and proof run; full for every stage, event and outcome","type":"string","enum":["summary","full"]}},"required":["issueId"],"$schema":"https://json-schema.org/draft/2020-12/schema"},"annotations":{"title":"Get mission detail","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"9417990861783e45f1ed000528242942284d426b3a0bae63f423e7d98c65cc5e","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T05:46:18.438Z","metadataTrust":"untrusted"},{"serverName":"ai.letsship/ship","endpointFingerprint":"f334d2a5f75a090c462a009a25bb7327bbb47216116ae963a0088485b5d29e2d","name":"get_notices","title":"Get workspace notices","description":"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.","inputSchema":{"type":"object","properties":{},"$schema":"https://json-schema.org/draft/2020-12/schema"},"annotations":{"title":"Get workspace notices","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"4b4799d74fbc1315b73457d53f1238fa7db6ff06789ba53bed1a22ea0517dbba","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T05:46:18.438Z","metadataTrust":"untrusted"},{"serverName":"ai.letsship/ship","endpointFingerprint":"f334d2a5f75a090c462a009a25bb7327bbb47216116ae963a0088485b5d29e2d","name":"get_project","title":"Get project","description":"Fetch a single project by its UUID. Returns 404 if the project is not in the caller's org.","inputSchema":{"type":"object","properties":{"projectId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Project UUID"}},"required":["projectId"],"$schema":"https://json-schema.org/draft/2020-12/schema"},"annotations":{"title":"Get project","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"e62d27ac15b404a73d562e4cfcb10fd7a42beaf4f31ac2353f1d4b27ec9cad0e","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T05:46:18.438Z","metadataTrust":"untrusted"},{"serverName":"ai.letsship/ship","endpointFingerprint":"f334d2a5f75a090c462a009a25bb7327bbb47216116ae963a0088485b5d29e2d","name":"get_scheduled_task","title":"Get scheduled task","description":"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.","inputSchema":{"type":"object","properties":{"scheduledTaskId":{"type":"string","description":"Scheduled task id, e.g. from list_scheduled_tasks"}},"required":["scheduledTaskId"],"$schema":"https://json-schema.org/draft/2020-12/schema"},"annotations":{"title":"Get scheduled task","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"3e6e7dce40340f69ceeec841700aaadb7e35ab1355eeee89e3417c0b5ac32efb","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T05:46:18.438Z","metadataTrust":"untrusted"},{"serverName":"ai.letsship/ship","endpointFingerprint":"f334d2a5f75a090c462a009a25bb7327bbb47216116ae963a0088485b5d29e2d","name":"get_setup_progress","title":"Get setup progress","description":"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. If they say they will not finish setup, ask why and record it with report_setup_blocker.","inputSchema":{"type":"object","properties":{},"$schema":"https://json-schema.org/draft/2020-12/schema"},"annotations":{"title":"Get setup progress","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"257532f42a779c1a4a945315760506ebbde15d93623da29e3a736bd8910774ce","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T05:46:18.438Z","metadataTrust":"untrusted"},{"serverName":"ai.letsship/ship","endpointFingerprint":"f334d2a5f75a090c462a009a25bb7327bbb47216116ae963a0088485b5d29e2d","name":"healthz","title":"API health probe","description":"Returns the upstream API status, environment, and version.","inputSchema":{"type":"object","properties":{},"$schema":"https://json-schema.org/draft/2020-12/schema"},"annotations":{"title":"API health probe","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"81f837c3c0823f7f3e78e16e116a16c2d527abe29f607ff5e7e69a41f2b9e21d","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T05:46:18.438Z","metadataTrust":"untrusted"},{"serverName":"ai.letsship/ship","endpointFingerprint":"f334d2a5f75a090c462a009a25bb7327bbb47216116ae963a0088485b5d29e2d","name":"list_billing_ledger","title":"List workspace credit ledger","description":"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.","inputSchema":{"type":"object","properties":{"cursor":{"description":"nextCursor from the previous page; omit for the newest entries.","type":"string"},"limit":{"description":"Entries per page, 1-100 (default 50).","type":"integer","minimum":1,"maximum":100}},"$schema":"https://json-schema.org/draft/2020-12/schema"},"annotations":{"title":"List workspace credit ledger","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"2a3959423d6fe06f6c19d976d14d7eb02e6b2830a4a49722e8ab51d6ffa13d6a","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T05:46:18.438Z","metadataTrust":"untrusted"},{"serverName":"ai.letsship/ship","endpointFingerprint":"f334d2a5f75a090c462a009a25bb7327bbb47216116ae963a0088485b5d29e2d","name":"list_credit_offers","title":"List credit packs, the monthly plans and Enterprise","description":"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.","inputSchema":{"type":"object","properties":{},"$schema":"https://json-schema.org/draft/2020-12/schema"},"annotations":{"title":"List credit packs, the monthly plans and Enterprise","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"eb3f4162d0013ef531e774490f7ab4f227847afac503a24e555006588af4cf8f","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T05:46:18.438Z","metadataTrust":"untrusted"},{"serverName":"ai.letsship/ship","endpointFingerprint":"f334d2a5f75a090c462a009a25bb7327bbb47216116ae963a0088485b5d29e2d","name":"list_mcp_bindings","title":"List the org's MCP bindings","description":"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.","inputSchema":{"type":"object","properties":{},"$schema":"https://json-schema.org/draft/2020-12/schema"},"annotations":{"title":"List the org's MCP bindings","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"96127e0c3d02341ca7664f72380d6e6d455734452c68d4f45b24375c02c58d52","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T05:46:18.438Z","metadataTrust":"untrusted"},{"serverName":"ai.letsship/ship","endpointFingerprint":"f334d2a5f75a090c462a009a25bb7327bbb47216116ae963a0088485b5d29e2d","name":"list_mcp_servers","title":"List a project's MCP servers","description":"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).","inputSchema":{"type":"object","properties":{"projectId":{"type":"string","minLength":1,"description":"Project id, e.g. from list_projects"}},"required":["projectId"],"$schema":"https://json-schema.org/draft/2020-12/schema"},"annotations":{"title":"List a project's MCP servers","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"22409f9a9133e03e5edc6ad61c2dc9af87c623bc7a9492d5650070aa4aef3b52","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T05:46:18.438Z","metadataTrust":"untrusted"},{"serverName":"ai.letsship/ship","endpointFingerprint":"f334d2a5f75a090c462a009a25bb7327bbb47216116ae963a0088485b5d29e2d","name":"list_missions","title":"List missions","description":"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.","inputSchema":{"type":"object","properties":{"projectId":{"description":"Filter to one project id","type":"string"},"activity":{"description":"Filter by what the mission does now","type":"string","enum":["queued","planning","building","fixing_ci","addressing_review","addressing_qa","ci_running","ci_failed","reviewing","changes_requested","deploying","testing","qa_failed","ready_to_merge","auto_merging","needs_attention","merged","auto_merged","declined","pausing","paused","stopped"]},"search":{"description":"Match the issue id, title, owner or repository","type":"string"},"limit":{"default":25,"description":"Page size (default 25). Narrow with projectId, activity or search before raising it.","type":"integer","minimum":1,"maximum":100},"offset":{"description":"Rows to skip, for the next page","type":"integer","minimum":0,"maximum":9007199254740991}},"$schema":"https://json-schema.org/draft/2020-12/schema"},"annotations":{"title":"List missions","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"071cd591724ebe5e76f5225879c63329a7cfef1202aa876bdcc89393711968bc","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T05:46:18.438Z","metadataTrust":"untrusted"},{"serverName":"ai.letsship/ship","endpointFingerprint":"f334d2a5f75a090c462a009a25bb7327bbb47216116ae963a0088485b5d29e2d","name":"list_projects","title":"List projects","description":"List the projects accessible to the calling principal. Returns id, slug, name, status, createdAt for each. An empty list means the workspace is not set up yet: no mission can run until the person connects GitHub and a model key and creates a project in the SHIP console. Call get_setup_progress and give the person the console page of its next step.","inputSchema":{"type":"object","properties":{"limit":{"description":"Max results (default 20)","type":"integer","minimum":1,"maximum":100},"cursor":{"description":"Opaque pagination cursor from a previous call","type":"string"}},"$schema":"https://json-schema.org/draft/2020-12/schema"},"annotations":{"title":"List projects","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"3ae6aaec2097baf69be6f5df5c9a0ae027336fadaa417beff8c6bd59020fea8c","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T05:46:18.438Z","metadataTrust":"untrusted"},{"serverName":"ai.letsship/ship","endpointFingerprint":"f334d2a5f75a090c462a009a25bb7327bbb47216116ae963a0088485b5d29e2d","name":"list_scheduled_task_runs","title":"List a scheduled task's run history","description":"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.","inputSchema":{"type":"object","properties":{"scheduledTaskId":{"type":"string","description":"Scheduled task id"},"limit":{"description":"Runs per page, 1-200 (default 50)","type":"integer","minimum":1,"maximum":200},"cursor":{"description":"nextCursor from the previous page; omit for the newest runs","type":"string"}},"required":["scheduledTaskId"],"$schema":"https://json-schema.org/draft/2020-12/schema"},"annotations":{"title":"List a scheduled task's run history","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"4ab6d30d6a12b20cfdc4be002cc20651b62021f09e9a474078cf5b735233a244","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-02T05:46:18.438Z","metadataTrust":"untrusted"}],"endpoints":[{"endpointFingerprint":"f334d2a5f75a090c462a009a25bb7327bbb47216116ae963a0088485b5d29e2d","protocol":"streamable-http","status":"indexed","toolCount":50,"observedAt":"2026-11-02T05:46:18.438Z"}],"authentication":"unknown"},"connectionConfigurations":{"status":"ready","authentication":"not embedded","clients":{"Claude Desktop":{"mcpServers":{"ai.letsship/ship":{"url":"https://mcp.letsship.ai/mcp"}}},"Cursor":{"mcpServers":{"ai.letsship/ship":{"url":"https://mcp.letsship.ai/mcp"}}},"VS Code":{"servers":{"ai.letsship/ship":{"type":"http","url":"https://mcp.letsship.ai/mcp"}}}}},"resourceType":"mcp-server","callable":true,"runtime":{"callable":true,"protocols":["mcp"]},"interfaces":[{"protocol":"mcp","transport":"streamable-http","url":"https://mcp.letsship.ai/mcp"}],"profile":{"apiVersion":"1","schemaVersion":"1","id":"mcp-server:ai.letsship%2Fship","resourceType":"mcp-server","canonicalUrl":"https://www.agentsjunction.com/api/v1/servers/ai.letsship%2Fship","name":"ai.letsship/ship","description":"Assign Linear, Jira or GitHub issues to an AI coding agent team that plans, builds, reviews, tests.","interfaces":[{"protocol":"mcp","transport":"streamable-http","url":"https://mcp.letsship.ai/mcp"}],"capabilities":[],"identity":{"source":"official-registry","websiteUrl":"https://letsship.ai/docs/mcp","repositoryUrl":"https://github.com/letsship/mcp","version":"0.24.0"},"verification":{"state":"official","confidence":100},"operations":{"resourceType":"mcp-server","name":"ai.letsship/ship","status":"online","lastCheckedAt":"2026-11-03T19:16:49.274Z","lastSuccessfulCheck":"2026-11-03T19:16:49.274Z","latencyMs":384,"consecutiveFailures":0,"isStale":false,"checks":{"endpointReachable":true,"protocolValid":true,"agentCardValid":null,"mcpHandshakeValid":true},"lastSeen":null,"lastSuccessfulInteraction":null,"lastHealthCheck":"2026-11-03T19:16:49.274Z","source":{"type":"health-check","url":null},"observedAt":"2026-11-03T19:16:49.274Z"},"security":null,"timestamps":{"createdAt":"2026-10-12T13:24:10.416Z","updatedAt":"2026-10-12T13:24:10.416Z","observedAt":"2026-11-03T19:16:49.274Z"},"compatibility":{"serverVersion":"0.24.0","protocolVersions":[{"protocol":"mcp","version":null}]}}}}