GET /v1/actions/describe
Returns everything needed to call one action: input and output JSON Schemas, effect class, MCP annotations and tool definition, and the connections it needs. A reference with `@<major>` resolves to the newest matching release; the response shows the exact version.

Authentication

Bearer Token (b3os_sk_ API key or b3os_pat_ token) API Key (cookie: __Host-b3os_session)

Query Parameters

ref string required query
`<namespace>/<name>/<action>@<version>`; the version may be exact (`1.2.0`) or a major (`1`).
Example: "io.b3os/github/create-issue@1"

Responses

200 The action.
application/json
object string REQUIRED
Enum: action
ref string REQUIRED
pack string REQUIRED
version string REQUIRED
key string REQUIRED
title string REQUIRED
description string REQUIRED
input_schema object | boolean REQUIRED
A JSON Schema (draft 2020-12) document, such as a routine's `inputs` or an action's `inputSchema`. B3OS checks it against the meta-schema when it is published. References to the meta-schema in `schemas/*.json` resolve here.
Any of:
Option 1object
Option 2boolean
output_schema object | boolean REQUIRED
A JSON Schema (draft 2020-12) document, such as a routine's `inputs` or an action's `inputSchema`. B3OS checks it against the meta-schema when it is published. References to the meta-schema in `schemas/*.json` resolve here.
Any of:
Option 1object
Option 2boolean
effects string REQUIRED
`pure` computes from input only; `read` reads from the world; `write` changes it; `irreversible` changes it and cannot be undone (never retried automatically). Drives MCP annotations and retries.
Enum: pure, read, write, irreversible
annotations object REQUIRED
MCP tool annotations derived from the effect class.
readOnlyHint boolean
destructiveHint boolean
idempotentHint boolean
openWorldHint boolean
connections object[] REQUIRED
Array of:
key string REQUIRED
The connection key in the pack.
type string REQUIRED
Enum: api_key, basic, bearer, oauth2, none
label string REQUIRED
required boolean
Whether this action needs it.
mcp object REQUIRED
The action as an MCP tool definition.
name string REQUIRED
title string
description string REQUIRED
inputSchema object | boolean REQUIRED
A JSON Schema (draft 2020-12) document, such as a routine's `inputs` or an action's `inputSchema`. B3OS checks it against the meta-schema when it is published. References to the meta-schema in `schemas/*.json` resolve here.
Any of:
Option 1object
Option 2boolean
outputSchema object | boolean
A JSON Schema (draft 2020-12) document, such as a routine's `inputs` or an action's `inputSchema`. B3OS checks it against the meta-schema when it is published. References to the meta-schema in `schemas/*.json` resolve here.
Any of:
Option 1object
Option 2boolean
400 The reference is malformed (`action_ref_invalid`).
401 Missing, malformed, expired or revoked credentials (`unauthorized`).
403 Authenticated but not allowed (`forbidden`, `egress_denied`).
404 The pack, version or action does not exist (`pack_not_found`, `pack_version_not_found`, `action_not_found`).
429 A rate, concurrency or quota limit applies (`rate_limited`, `concurrency_limited`, `quota_exceeded`).
500 Something failed inside B3OS (`internal`). Retry with backoff.
503 The node or the product is not available right now (`node_unavailable`, `product_unavailable`, `capacity_unavailable`).
curl -X GET 'https://beta-api.b3os.org/v1/actions/describe?ref=io.b3os%2Fgithub%2Fcreate-issue%401' \  -H 'Authorization: Bearer YOUR_API_TOKEN'
const response = await fetch('https://beta-api.b3os.org/v1/actions/describe?ref=io.b3os%2Fgithub%2Fcreate-issue%401', {  method: 'GET',  headers: {      "Authorization": "Bearer YOUR_API_TOKEN"  }});const data = await response.json();console.log(data);
import requestsheaders = {    'Authorization': 'Bearer YOUR_API_TOKEN'}response = requests.get('https://beta-api.b3os.org/v1/actions/describe?ref=io.b3os%2Fgithub%2Fcreate-issue%401', headers=headers)print(response.json())
200 Response
{  "object": "action",  "ref": "io.b3os/github/create-issue@1.2.0",  "pack": "io.b3os/github",  "version": "1.2.0",  "key": "create-issue",  "title": "Create an issue",  "description": "Open an issue in a repository. Returns the issue number and URL.",  "input_schema": {    "type": "object",    "required": [      "owner",      "repo",      "title"    ],    "properties": {      "owner": {        "type": "string"      },      "repo": {        "type": "string"      },      "title": {        "type": "string"      },      "body": {        "type": "string"      }    },    "additionalProperties": false  },  "output_schema": {    "type": "object",    "required": [      "number",      "url"    ],    "properties": {      "number": {        "type": "integer"      },      "url": {        "type": "string"      }    }  },  "effects": "write",  "annotations": {    "readOnlyHint": false,    "destructiveHint": false,    "idempotentHint": false,    "openWorldHint": true  },  "connections": [    {      "key": "api",      "type": "bearer",      "label": "GitHub token",      "required": true    }  ],  "mcp": {    "name": "github__create-issue",    "title": "Create an issue",    "description": "Open an issue in a repository. Returns the issue number and URL.",    "inputSchema": {      "type": "object",      "required": [        "owner",        "repo",        "title"      ],      "properties": {        "owner": {          "type": "string"        },        "repo": {          "type": "string"        },        "title": {          "type": "string"        },        "body": {          "type": "string"        }      }    }  }}
Ask a question... ⌘I