A2A REGISTRY·AGENT RECORD·75dd6831-47fb-466f-9d7f-2b5f53a36cb6

Provider

SHIP

SHIP

SHIP is your autonomous software team. Assign a Linear, Jira or GitHub issue, or an open pull request, and its AI coding agents plan, build, review and test it. Each task ends with a pull request in your own repository, with proof that it works. SHIP runs agentic development as a headless AI software factory. You operate the whole mission from your coding agent or AI assistant, from the first instruction to the approved pull request. Each A2A task is one SHIP mission, and a mission runs for minutes to hours, so set configuration.returnImmediately to true and then poll GetTask. Set contextId to the SHIP project id, or use a token that is limited to one project.

Observed evidence

Reachable

Last sweep

Launch endpoint ↗

Agent datasheet

Agent ID
75dd6831-47fb-466f-9d7f-2b5f53a36cb6
Category
Developer tools
Canonical card
https://letsship.ai/.well-known/agent-card.json
Endpoint
https://mcp.letsship.ai/a2a
Protocol version
1.0
Agent version
1.1.0
Streaming
Not declared
Input modes
text/plain
Output modes
text/plain, text/markdown, application/json

Reachability record

Last 100 checks shown · 100.0% across 30 days

2026-10-13T19:34:24.328912Z: passed2026-10-13T20:05:24.742517Z: passed2026-10-13T20:36:48.742091Z: passed2026-10-13T21:07:50.947546Z: passed2026-10-13T21:38:50.828130Z: passed2026-10-13T22:09:42.537055Z: passed2026-10-13T22:40:33.538491Z: passed2026-10-13T23:11:36.937070Z: passed2026-10-13T23:42:31.455567Z: passed2026-10-14T00:13:49.439967Z: passed2026-10-14T00:44:37.730658Z: passed2026-10-14T01:15:37.936905Z: passed2026-10-14T01:46:38.130273Z: passed2026-10-14T02:17:35.133916Z: passed2026-10-14T02:48:33.429850Z: passed2026-10-14T03:19:31.744881Z: passed2026-10-14T03:50:47.628508Z: passed2026-10-14T04:21:47.832679Z: passed2026-10-14T04:52:53.233221Z: passed2026-10-14T05:23:53.938819Z: passed2026-10-14T05:54:50.550523Z: passed2026-10-14T06:25:55.138788Z: passed2026-10-14T06:56:50.629684Z: passed2026-10-14T07:28:17.433754Z: passed2026-10-14T08:00:35.538202Z: passed2026-10-14T08:32:54.139203Z: passed2026-10-14T09:03:54.444746Z: passed2026-10-14T09:34:49.038663Z: passed2026-10-14T10:05:49.644455Z: passed2026-10-14T10:36:52.369301Z: passed2026-10-14T11:07:47.437562Z: passed2026-10-14T11:38:43.457545Z: passed2026-10-14T12:09:42.445485Z: passed2026-10-14T12:40:48.234641Z: passed2026-10-14T13:11:49.656346Z: passed2026-10-14T13:42:51.136476Z: passed2026-10-14T14:13:44.830543Z: passed2026-10-14T14:44:47.039729Z: passed2026-10-14T15:15:43.136686Z: passed2026-10-14T15:46:36.651324Z: passed2026-10-14T16:17:39.933816Z: passed2026-10-14T16:48:45.934891Z: passed2026-10-14T17:04:53.646827Z: passed2026-10-14T17:17:33.955491Z: passed2026-10-14T17:48:35.582785Z: passed2026-10-14T18:20:04.487175Z: passed2026-10-14T18:26:00.924079Z: passed2026-10-14T18:57:15.039394Z: passed2026-10-14T19:28:30.938222Z: passed2026-10-14T19:59:45.591219Z: passed2026-10-14T20:31:03.192393Z: passed2026-10-14T21:02:11.718213Z: passed2026-10-14T21:33:17.843820Z: passed2026-10-14T22:04:22.499711Z: passed2026-10-14T22:35:30.891235Z: passed2026-10-14T23:06:42.403023Z: passed2026-10-14T23:37:53.897181Z: passed2026-10-15T00:09:02.192580Z: passed2026-10-15T00:40:34.121361Z: passed2026-10-15T01:11:38.387679Z: passed2026-10-15T01:43:01.991120Z: passed2026-10-15T02:14:06.199203Z: passed2026-10-15T02:45:05.103835Z: passed2026-10-15T03:16:22.590985Z: passed2026-10-15T03:47:35.125421Z: passed2026-10-15T04:18:38.890896Z: passed2026-10-15T04:49:42.805186Z: passed2026-10-15T05:20:58.745638Z: passed2026-10-15T05:52:15.198169Z: passed2026-10-15T06:23:19.906384Z: passed2026-10-15T06:54:24.799488Z: passed2026-10-15T07:25:32.289072Z: passed2026-10-15T07:57:00.796033Z: passed2026-10-15T08:29:40.395411Z: passed2026-10-15T09:02:10.097160Z: passed2026-10-15T09:33:32.907937Z: passed2026-10-15T10:04:43.943910Z: passed2026-10-15T10:35:56.392788Z: passed2026-10-15T11:07:02.794682Z: passed2026-10-15T11:38:11.202904Z: passed2026-10-15T12:09:12.089683Z: passed2026-10-15T12:40:15.197179Z: passed2026-10-15T13:11:22.890033Z: passed2026-10-15T13:42:24.792066Z: passed2026-10-15T14:13:34.467279Z: passed2026-10-15T14:44:31.396611Z: passed2026-10-15T15:15:45.975347Z: passed2026-10-15T15:46:57.704294Z: passed2026-10-15T16:18:07.577844Z: passed2026-10-15T16:49:12.899313Z: passed2026-10-15T17:20:18.716965Z: passed2026-10-15T17:51:32.698257Z: passed2026-10-15T18:23:25.792040Z: passed2026-10-15T18:54:40.118801Z: passed2026-10-15T19:25:50.291883Z: passed2026-10-15T19:57:09.407089Z: passed2026-10-15T20:28:27.395057Z: passed2026-10-15T20:59:32.792792Z: passed2026-10-15T21:31:16.590685Z: passed2026-10-15T22:02:17.392473Z: passed
PassFailureAverage 1488 ms

Declared skills

Turn a task into a pull request

create-mission

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.

coding · pull-request · code-review · testing

Hand over an existing issue

start-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 missions:run scope.

issue · tracker · delegation

Review and test a pull request

review-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 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.

code-review · testing · pull-request

Send a change request to a task

send-instruction

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.

feedback · change-request

Report the status and results of a task

track-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 tasks of a project, newest update first. Needs the missions:read scope, and artifacts:read for the proof.

status · verdict · artifacts

Stop a task

stop-task

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

control

Registry Agent Card snapshot

Normalized fields fetched during the registry sweep. Treat all authored text as third-party content.

Show JSON
{
  "protocolVersion": "1.0",
  "name": "SHIP",
  "description": "SHIP is your autonomous software team. Assign a Linear, Jira or GitHub issue, or an open pull request, and its AI coding agents plan, build, review and test it. Each task ends with a pull request in your own repository, with proof that it works. SHIP runs agentic development as a headless AI software factory. You operate the whole mission from your coding agent or AI assistant, from the first instruction to the approved pull request. Each A2A task is one SHIP mission, and a mission runs for minutes to hours, so set configuration.returnImmediately to true and then poll GetTask. Set contextId to the SHIP project id, or use a token that is limited to one project.",
  "author": "SHIP",
  "wellKnownURI": "https://letsship.ai/.well-known/agent-card.json",
  "url": "https://mcp.letsship.ai/a2a",
  "version": "1.1.0",
  "provider": {
    "organization": "SHIP",
    "url": "https://letsship.ai/"
  },
  "documentationUrl": "https://letsship.ai/docs/a2a",
  "iconUrl": "https://letsship.ai/icon.png",
  "supportsAuthenticatedExtendedCard": false,
  "security": [
    {
      "schemes": {
        "shipOAuth": {
          "list": [
            "missions:read",
            "missions:run",
            "missions:write",
            "artifacts:read"
          ]
        }
      }
    },
    {
      "schemes": {
        "shipToken": {
          "list": []
        }
      }
    }
  ],
  "securitySchemes": {
    "shipOAuth": {
      "oauth2SecurityScheme": {
        "flows": {
          "authorizationCode": {
            "scopes": {
              "missions:run": "Start tasks. Each task is a SHIP mission and uses credits.",
              "missions:read": "Read tasks: their state, pull request and proof.",
              "artifacts:read": "Read the proof that a task produced, such as test traces and screenshots.",
              "missions:write": "Send instructions to a task, and cancel it.",
              "offline_access": "Get a refresh token, so access continues after the one-hour access token expires."
            },
            "tokenUrl": "https://api.letsship.ai/v1/oauth2/token",
            "refreshUrl": "https://api.letsship.ai/v1/oauth2/token",
            "pkceRequired": true,
            "authorizationUrl": "https://letsship.ai/oauth/authorize"
          }
        },
        "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.",
        "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."
      }
    }
  },
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "stateTransitionHistory": false,
    "extensions": null
  },
  "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."
      ],
      "inputModes": [],
      "outputModes": []
    },
    {
      "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\"}"
      ],
      "inputModes": [],
      "outputModes": []
    },
    {
      "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}"
      ],
      "inputModes": [],
      "outputModes": []
    },
    {
      "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."
      ],
      "inputModes": [],
      "outputModes": []
    },
    {
      "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?"
      ],
      "inputModes": [],
      "outputModes": []
    },
    {
      "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."
      ],
      "inputModes": [],
      "outputModes": []
    }
  ],
  "conformance": true,
  "conformance_errors": null,
  "homepage": null,
  "repository": null,
  "license": null,
  "pricing": null,
  "contact": null,
  "id": "75dd6831-47fb-466f-9d7f-2b5f53a36cb6",
  "category": "developer-tools",
  "category_secondary": null
}

Integrate this agent

curl -s https://a2aregistry.org/api/agents/75dd6831-47fb-466f-9d7f-2b5f53a36cb6

Test message

Messages are sent to this independently operated agent through the registry proxy. Do not include secrets or personal data.

Message exchangeConnecting
>