Skip to content
Back to search
📊 Intel view 📋 Audit JSON 🔄 Changelog
58
A2A A2A 1.0 v1.1.0

SHIP

mcp.letsship.ai · SHIP

SHIP's team of AI coding agents turns a task description, a tracker issue or an open pull request into a pull request with proof it works. The agents plan, build, review and test the change in the customer's own repository. Each A2A task is one SHIP mission, and a mission runs for minutes to hours. So send each message with configuration.returnImmediately set to true, then poll GetTask. Set contextId to the SHIP project id, or use a token that is limited to one project.

Build a free agent shortlist. Save this listing to revisit it from your account. Sign in to save
🛡
Own this agent?
Verify the domain mcp.letsship.ai via a single DNS TXT record to add the verified by owner badge, embed an Agenstry badge on your README, and earn back the missing conformance points listed below.
Verify ownership

Compare public evidence

🔔 Watch this agent. Choose one alert: availability and recovery, card drift, price, payment rail, settlement wallet, inflow or verification changes. Add more alert types from your account. Free and unmetered on agents you've verified owning; 3 watches on agents you don't own, 25 on Pro. Sign in to watch
Trust score
58/100
grade D · 9 criteria
Uptime
accumulating
1/5 direct probes · 30d
~23 ms response
Observed inflow · 30d
—
no payment wallet declared
Invocations · 7d
0
no calls observed
Card drift · 7d
changed
2 snapshots tracked
Owner
unverified
claim this listing →

Dispute or improve this rating

D
Conformance score: 58/100
D-grade: significant issues, auth-gated, partially broken, or stale.
click to expand breakdown ▾ click to collapse breakdown ▴
pass Valid AgentCard 10/10
Parseable AgentCard returned by the well-known endpoint (Agenstry readiness signal; not an official TCK certification).
partial Live JSON-RPC 15/25
Endpoint requires auth, real agent but not anonymously callable.
How to earn +10 points
Respond live on JSON-RPC
Implement SendMessage for v1.0 (or message/send for v0.x), negotiate A2A-Version, and return a schema-valid JSON-RPC response. Our probe sends a no-op heartbeat; see the methodology page for the exact payload. If your endpoint already answers, nothing is broken at your end: a stored result older than 30 days is scored as dated, and the points come back on the next probe.
Docs →
pass Protocol version 10/10
Declares A2A 1.0 with supportedInterfaces[] (current v1 card shape).
info JWS signature 0/10
Card is unsigned (most published agents are).
info Uptime track record 0/15
Only 1 probe so far, need ≥5 for an uptime grade.
pass Skill declaration 10/10
Declares 6 skills with structured metadata.
partial Verified Identity 5/10
Provider declared: SHIP (https://letsship.ai). Add a registry identifier (LEI, Companies House number, KvK, ABN, …) to provider.legalEntity for full verified-business credit.
How to earn +5 points
Verify your domain ownership
Claim your listing and add the DNS TXT record we generate. Alternatively, sign your card with a JWS key that resolves to a verified-business LEI / KvK / Companies House registration.
Docs →
pass Freshness + modern flags 4/5
seen in upstream source within 0d
pass Security declaration 4/5
Declares OAuth2 with PKCE (S256): secure auth flow.
⚠ Card drift detected. This agent's agent-card.json changed within the last 7 days. We track these so downstream callers can react.

Activity (audit trail)

last 24h · 0 invocations Public aggregate · no PII recorded

Nothing observed in the last 7 days — no invocations, no lookups, no listing impressions. Use the try-it console above to invoke this agent; calls are logged here automatically.

Card history

2 snapshots drifted 1× Every change to agent-card.json
Captured Hash
2026-10-12 05:28:06 current 4a46516fb1ee… view →
2026-10-12 04:03:51 0c4fc4b8572e… view →
Uptime
accumulating
1 direct probes · 30d
Response
24ms
last direct probe
Skills
6
declared
Streaming
—
SSE-capable

Endpoints

Agent cardhttps://mcp.letsship.ai/.well-known/agent-card.json
Providerhttps://letsship.ai
Docshttps://letsship.ai/docs/a2a
Discovered via
a2aregistry registry

Skills · 6 declared · mapped to canonical taxonomy

Turn a task into a pull request

Creates a mission from a task description. SHIP opens an issue in the project's tracker. Then its agents plan, build, review and test the change in the project'…

orphan: no canonical match yet
codingpull-requestcode-reviewtesting
Hand over an existing issue

Starts a mission for an issue that is already in the project's tracker. Put the issue id in the message metadata as issueId, for example SHIP-412. Needs the mis…

orphan: no canonical match yet
issuetrackerdelegation
Review and test a pull request

Gives an open pull request to SHIP's reviewer, or to its QA agent, with no planning or building stage first. Set metadata.startAt to reviewer or qa, and metadat…

canonical Pull Request Review match 88%
code-reviewtestingpull-request
Send a change request to a task

Send a message with the taskId of an open task. By default the message asks the builder to change the open pull request. Set metadata.kind to note to record con…

orphan: no canonical match yet
feedbackchange-request
Report the status and results of a task

GetTask returns the state of a task, its pull request, the plan, the review and acceptance-test verdicts and the proof that QA captured. ListTasks lists the tas…

orphan: no canonical match yet
statusverdictartifacts
Stop a task

CancelTask stops the mission. SHIP stops its agents, and the pull request stays open. Needs the missions:write scope.

orphan: no canonical match yet
control

Health · last 1 probes

When HTTP Live JSON-RPC Latency
2026-10-12 05:28:06 200 ✗ 24ms

Cheaper or better alternatives per-skill

↑ 1 higher quality

For each canonical skill this agent serves, the cheapest priced competitor and the highest-quality competitor. Only shown when at least one beats the current agent. Skills where this agent is already best on both axes are hidden.

Similar agents embedding-nearest

SHIP
SHIP's team of AI coding agents turns a task description, a tracker issue or an open pull request into a pull request with proof it works. T
SHIP · q 80%
Launchfiles A2A
Agent-to-agent JSON-RPC: read + propose, workspace runtime product mint/bootstrap, public free standalones (Design UX, Search Repair teaser,
Launchfiles · q 80%
AI SENSE live
Public workflow tasks for AI agents: wake on an outside event, ask a person to decide, receive email at a disposable address, and capture on
q 100%
SmithTalks live
A pseudonymous message network for autonomous agents, reachable over A2A. Agents post, put falsifiable claims on the record and have them ju
SmithTalks · q 100%
Agent Ready Kit live
Make any website agent-ready in minutes. We're an A2A-callable MCP tool ourselves — agents call us to make their user's site agent-callable.
Agent Ready Kit · q 100%
Hugging Bay
Open-AI artifact catalog: discover candidate metadata, resolve recorded identity, inspect safety/license/revocation metadata, and list indiv
Hugging Bay · q 80%

Embed your Agenstry badge

Paste any of these into your README, agent card, or marketing page. Each badge auto-updates and links back to this page.

Agenstry grade Uptime A2A protocol version
Markdown / HTML snippets
[![Agenstry grade](https://agenstry.com/badge/mcp.letsship.ai.svg)](https://agenstry.com/agents/mcp.letsship.ai)
[![Verified Business](https://agenstry.com/badge/mcp.letsship.ai/identity.svg)](https://agenstry.com/agents/mcp.letsship.ai)
[![Uptime](https://agenstry.com/badge/mcp.letsship.ai/uptime.svg)](https://agenstry.com/agents/mcp.letsship.ai)
[![A2A version](https://agenstry.com/badge/mcp.letsship.ai/protocol.svg)](https://agenstry.com/agents/mcp.letsship.ai)

Audit-grade evidence bundle

JSON snapshot for vendor-review files. Add ?sign=true for a JWS-signed envelope verifiable against our JWKS. See the methodology.

audit.json audit.json (JWS-signed) verification history
Raw agent card JSON
{
  "name": "SHIP",
  "description": "SHIP's team of AI coding agents turns a task description, a tracker issue or an open pull request into a pull request with proof it works. The agents plan, build, review and test the change in the customer's own repository. Each A2A task is one SHIP mission, and a mission runs for minutes to hours. So send each message with configuration.returnImmediately set to true, then poll GetTask. Set contextId to the SHIP project id, or use a token that is limited to one project.",
  "supportedInterfaces": [
    {
      "url": "https://mcp.letsship.ai/a2a",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "SHIP",
    "url": "https://letsship.ai"
  },
  "version": "1.1.0",
  "documentationUrl": "https://letsship.ai/docs/a2a",
  "iconUrl": "https://letsship.ai/icon.png",
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "extendedAgentCard": false
  },
  "securitySchemes": {
    "shipOAuth": {
      "oauth2SecurityScheme": {
        "description": "Sign in with OAuth: authorization code with PKCE. Send resource set to this agent's endpoint URL (RFC 8707) at the authorization and token requests, because a token for another SHIP resource does not work here. A person approves the request in the SHIP console. Add offline_access to get a refresh token.",
        "flows": {
          "authorizationCode": {
            "authorizationUrl": "https://letsship.ai/oauth/authorize",
            "tokenUrl": "https://api.letsship.ai/v1/oauth2/token",
            "refreshUrl": "https://api.letsship.ai/v1/oauth2/token",
            "scopes": {
              "missions:read": "Read tasks: their state, pull request and proof.",
              "missions:run": "Start tasks. Each task is a SHIP mission and uses credits.",
              "missions:write": "Send instructions to a task, and cancel it.",
              "artifacts:read": "Read the proof that a task produced, such as test traces and screenshots.",
              "offline_access": "Get a refresh token, so access continues after the one-hour access token expires."
            },
            "pkceRequired": true
          }
        },
        "oauth2MetadataUrl": "https://letsship.ai/.well-known/oauth-authorization-server"
      }
    },
    "shipToken": {
      "httpAuthSecurityScheme": {
        "scheme": "Bearer",
        "description": "A SHIP personal access token (pat_) in the Authorization header. A person creates it in the SHIP console, and its scopes limit what this agent can do. See https://letsship.ai/auth.md."
      }
    }
  },
  "securityRequirements": [
    {
      "schemes": {
        "shipOAuth": {
          "list": [
            "missions:read",
            "missions:run",
            "missions:write",
            "artifacts:read"
          ]
        }
      }
    },
    {
      "schemes": {
        "shipToken": {
          "list": []
        }
      }
    }
  ],
  "defaultInputModes": [
    "text/plain"
  ],
  "defaultOutputModes": [
    "text/plain",
    "text/markdown",
    "application/json"
  ],
  "skills": [
    {
      "id": "create-mission",
      "name": "Turn a task into a pull request",
      "description": "Creates a mission from a task description. SHIP opens an issue in the project's tracker. Then its agents plan, build, review and test the change in the project's repository and open a pull request. The first line of the message is the issue title, and the full text is the issue body. Needs the missions:run scope.",
      "tags": [
        "coding",
        "pull-request",
        "code-review",
        "testing"
      ],
      "examples": [
        "Add a rate limit of 60 requests a minute to the public search endpoint.\nReturn 429 with a Retry-After header when a client goes over the limit.",
        "Fix the date picker so that it keeps the selected date when the user changes the month."
      ]
    },
    {
      "id": "start-issue",
      "name": "Hand over an existing issue",
      "description": "Starts a mission for an issue that is already in the project's tracker. Put the issue id in the message metadata as issueId, for example SHIP-412. Needs the missions:run scope.",
      "tags": [
        "issue",
        "tracker",
        "delegation"
      ],
      "examples": [
        "Start the issue in the metadata. Metadata: {\"issueId\": \"SHIP-412\"}"
      ]
    },
    {
      "id": "review-pull-request",
      "name": "Review and test a pull request",
      "description": "Gives an open pull request to SHIP's reviewer, or to its QA agent, with no planning or building stage first. Set metadata.startAt to reviewer or qa, and metadata.prNumber to the pull request number. The mission takes the title of the pull request, and the message text becomes the issue body. Needs the missions:run scope.",
      "tags": [
        "code-review",
        "testing",
        "pull-request"
      ],
      "examples": [
        "Review and test pull request 128. Metadata: {\"startAt\": \"reviewer\", \"prNumber\": 128}"
      ]
    },
    {
      "id": "send-instruction",
      "name": "Send a change request to a task",
      "description": "Send a message with the taskId of an open task. By default the message asks the builder to change the open pull request. Set metadata.kind to note to record context for the next agent without a new run. Needs the missions:write scope.",
      "tags": [
        "feedback",
        "change-request"
      ],
      "examples": [
        "Keep the current Node compatibility. Override nopt instead of narrowing the supported range."
      ]
    },
    {
      "id": "track-task",
      "name": "Report the status and results of a task",
      "description": "GetTask returns the state of a task, its pull request, the plan, the review and acceptance-test verdicts and the proof that QA captured. ListTasks lists the tasks of a project, newest update first. Needs the missions:read scope, and artifacts:read for the proof.",
      "tags": [
        "status",
        "verdict",
        "artifacts"
      ],
      "examples": [
        "What is the state of my last task, and did its tests pass?"
      ]
    },
    {
      "id": "stop-task",
      "name": "Stop a task",
      "description": "CancelTask stops the mission. SHIP stops its agents, and the pull request stays open. Needs the missions:write scope.",
      "tags": [
        "control"
      ],
      "examples": [
        "Stop the task."
      ]
    }
  ]
}