Skip to content
Median
Esc
↑↓navigate↵open⌘Jpreview

Run a tool

Runs a tool now, as the team. No sign-off wait, whatever the risk: calling this is the decision. The call lands as an approval row at executing; poll GET /tool-approvals/{id} for the result. Input values are the flat scalars manifest schemas declare.

POST/conversations/{id}/tools/run
Authorization
AuthorizationBearer token · headerrequired
`MEDIAN_KEY` from Settings under API, or an MCP OAuth access token. A key acts as the organization; a token acts as the person who approved it.
Path parameters
idstringrequired
A conversation id.
Request body
requiredapplication/json
toolstringrequired
inputobject
Responses
200The run's approval row, to watch as it settles.
approvalIdstring
400The request is malformed, and the message names the field.
errorobject
Show properties
codestring
messagestring
401The bearer token is missing, revoked, or expired.
errorobject
Show properties
codestring
messagestring
404Not one of yours, or not there at all.
errorobject
Show properties
codestring
messagestring
429Too many requests. Wait the seconds in `Retry-After`. Limits depend on the plan. See [rate limits](/api/errors-and-limits#rate-limits).
errorobject
Show properties
codestring
messagestring
Request
curl -X POST "https://api.median.sh/v1/conversations/string/tools/run" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "tool": "refundOrder",
  "input": {
    "orderId": "ord_42"
  }
}'
Response
{
  "approvalId": "string"
}