API

MCP

MCP servers your repository declares: which agents may use each one, its approved tools and its credential.

GET
/mcp/projects/{projectId}

Path Parameters

projectId*string
Length1 <= length

Response Body

application/json

application/json

curl -X GET "https://example.com/mcp/projects/string"
{  "projectId": "string",  "configPath": "string",  "configPathSource": "ship.yml",  "configRef": "string",  "configStatus": "ok",  "configError": "string",  "warnings": [    "string"  ],  "servers": [    {      "name": "string",      "declared": {        "name": "string",        "transport": "http",        "origin": "string",        "path": "string",        "command": "string",        "displayArgs": [          "string"        ],        "headerNames": [          "string"        ],        "envNames": [          "string"        ],        "secretRefs": [          "string"        ],        "isolation": {          "kind": "remote",          "packageSpec": "string",          "reason": "python"        }      },      "binding": {        "transport": "remote",        "status": "ready",        "statusDetail": "string",        "roles": [          "planner"        ],        "authKind": "none",        "pinnedUrl": "string",        "packageSpec": "string",        "allowedEgressHosts": [          "string"        ],        "credentialFields": [          "string"        ],        "toolSnapshot": [          {            "name": "string",            "title": "string",            "description": "string",            "readOnlyHint": true,            "destructiveHint": true          }        ],        "approvedTools": [          {            "name": "string",            "attestedReadOnly": true          }        ],        "toolsRefreshedAt": 0,        "effectiveToolCounts": {          "planner": 0,          "builder": 0,          "reviewer": 0,          "qa": 0        },        "createdAt": 0,        "updatedAt": 0      }    }  ]}
PATCH
/mcp/projects/{projectId}

Path Parameters

projectId*string
Length1 <= length

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X PATCH "https://example.com/mcp/projects/string" \  -H "Content-Type: application/json" \  -d '{    "configPath": "string"  }'
{  "projectId": "string",  "configPath": "string",  "configPathSource": "ship.yml",  "configRef": "string",  "configStatus": "ok",  "configError": "string",  "warnings": [    "string"  ],  "servers": [    {      "name": "string",      "declared": {        "name": "string",        "transport": "http",        "origin": "string",        "path": "string",        "command": "string",        "displayArgs": [          "string"        ],        "headerNames": [          "string"        ],        "envNames": [          "string"        ],        "secretRefs": [          "string"        ],        "isolation": {          "kind": "remote",          "packageSpec": "string",          "reason": "python"        }      },      "binding": {        "transport": "remote",        "status": "ready",        "statusDetail": "string",        "roles": [          "planner"        ],        "authKind": "none",        "pinnedUrl": "string",        "packageSpec": "string",        "allowedEgressHosts": [          "string"        ],        "credentialFields": [          "string"        ],        "toolSnapshot": [          {            "name": "string",            "title": "string",            "description": "string",            "readOnlyHint": true,            "destructiveHint": true          }        ],        "approvedTools": [          {            "name": "string",            "attestedReadOnly": true          }        ],        "toolsRefreshedAt": 0,        "effectiveToolCounts": {          "planner": 0,          "builder": 0,          "reviewer": 0,          "qa": 0        },        "createdAt": 0,        "updatedAt": 0      }    }  ]}
DELETE
/mcp/projects/{projectId}/servers/{serverName}

Path Parameters

projectId*string
Length1 <= length
serverName*string
Match^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$

Response Body

application/json

application/json

application/json

curl -X DELETE "https://example.com/mcp/projects/string/servers/string"
{  "deleted": true}
PUT
/mcp/projects/{projectId}/servers/{serverName}

Path Parameters

projectId*string
Length1 <= length
serverName*string
Match^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

curl -X PUT "https://example.com/mcp/projects/string/servers/string" \  -H "Content-Type: application/json" \  -d '{    "roles": [      "planner"    ]  }'
{  "transport": "remote",  "status": "ready",  "statusDetail": "string",  "roles": [    "planner"  ],  "authKind": "none",  "pinnedUrl": "string",  "packageSpec": "string",  "allowedEgressHosts": [    "string"  ],  "credentialFields": [    "string"  ],  "toolSnapshot": [    {      "name": "string",      "title": "string",      "description": "string",      "readOnlyHint": true,      "destructiveHint": true    }  ],  "approvedTools": [    {      "name": "string",      "attestedReadOnly": true    }  ],  "toolsRefreshedAt": 0,  "effectiveToolCounts": {    "planner": 0,    "builder": 0,    "reviewer": 0,    "qa": 0  },  "createdAt": 0,  "updatedAt": 0}
POST
/mcp/projects/{projectId}/servers/{serverName}/tools/refresh

Path Parameters

projectId*string
Length1 <= length
serverName*string
Match^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/mcp/projects/string/servers/string/tools/refresh"
{  "transport": "remote",  "status": "ready",  "statusDetail": "string",  "roles": [    "planner"  ],  "authKind": "none",  "pinnedUrl": "string",  "packageSpec": "string",  "allowedEgressHosts": [    "string"  ],  "credentialFields": [    "string"  ],  "toolSnapshot": [    {      "name": "string",      "title": "string",      "description": "string",      "readOnlyHint": true,      "destructiveHint": true    }  ],  "approvedTools": [    {      "name": "string",      "attestedReadOnly": true    }  ],  "toolsRefreshedAt": 0,  "effectiveToolCounts": {    "planner": 0,    "builder": 0,    "reviewer": 0,    "qa": 0  },  "createdAt": 0,  "updatedAt": 0}
GET
/mcp/bindings

Response Body

application/json

application/json

curl -X GET "https://example.com/mcp/bindings"
{  "bindings": [    {      "projectId": "string",      "projectName": "string",      "serverName": "string",      "transport": "remote",      "status": "ready",      "statusDetail": "string",      "roles": [        "planner"      ],      "authKind": "none",      "credentialFields": [        "string"      ],      "updatedAt": 0    }  ]}
POST
/mcp/projects/{projectId}/servers/{serverName}/oauth/start

Path Parameters

projectId*string
Length1 <= length
serverName*string
Match^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/mcp/projects/string/servers/string/oauth/start" \  -H "Content-Type: application/json" \  -d '{}'
{  "authorizeUrl": "string",  "expiresAt": 0}
POST
/mcp/oauth/complete

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/mcp/oauth/complete" \  -H "Content-Type: application/json" \  -d '{    "code": "string",    "state": "stringstringstri"  }'
{  "projectId": "string",  "serverName": "string",  "returnTo": "string"}

How is this page?