API reference

Tools

Tools endpoints.

MethodPathSummary
GET/v1/account/tool-catalogTool servers the platform offers this account, with their approved tools
POST/v1/account/tool-catalog/{serverId}/connectTurn on a managed server, or connect this account to a catalog server: with no sign-in, an API key, or an OAuth sign-in URL
GET/v1/account/tool-serversThe account's MCP tool servers, with how many tools wait for review
POST/v1/account/tool-serversAdd a tool server. No sign-in: saved and discovered. API key: saved once the key works. OAuth: saved as pending, with a sign-in URL
POST/v1/account/tool-servers/probeFind out whether a server needs no sign-in, an API key, or OAuth
PATCH/v1/account/tool-servers/{serverId}Rename a tool server
DELETE/v1/account/tool-servers/{serverId}Remove a tool server, its tools and its credential
POST/v1/account/tool-servers/{serverId}/discoverList the tools on the server now: new ones wait for review, changed ones stop until reviewed
POST/v1/account/tool-servers/{serverId}/reconnectSign in to a server again: a new API key, or a new OAuth sign-in. Probes first, so a server that changed how it signs in is handled
GET/v1/account/toolsThe tools the account's servers offer, and where each one stands
GET/v1/account/tools/usageCalls per tool, error rate, p95 latency, last use, and the playbooks that bind it. Visibility, not billing: tool calls are included
GET/v1/account/tools/{toolId}One tool: its definition, any waiting change, and what the review should look at
POST/v1/account/tools/{toolId}/approveApprove the definition you reviewed, with the description our model will read and what the tool does
POST/v1/account/tools/{toolId}/rejectDecide a tool is not to be used
POST/v1/account/tools/{toolId}/tryRun an approved tool with sample arguments. A tool that changes something needs confirm: true, because it acts on the real system

Tool servers the platform offers this account, with their approved tools#

GET /v1/account/tool-catalog

Authentication: Bearer token: Authorization: Bearer <token> (Supabase access token).

Response 200

FieldTypeRequiredDescription
serversarray<CatalogServer>Yes—
servers[].authenumYesOne of: "none", "api_key", "oauth".
servers[].connectionIdstring (tcn_… ID) | nullYes—
servers[].connectorTemplatemap | nullYes—
servers[].connectorTemplate.{key}anyNoAny key.
servers[].idstring (pts_… ID)YesID (pts_…)
servers[].namestringYes—
servers[].summarystring | nullYes—
servers[].tierenumYesOne of: "managed", "catalog".
servers[].toolsarray<object>Yes—
servers[].tools[].descriptionstringYes—
servers[].tools[].effectenumYesOne of: "read", "write".
servers[].tools[].namestringYes—

Errors: 400, 401, 403, 404, 409, 429, 500, with an ErrorBody body.

Example

bash
curl -X GET "$ANSWERSTACK_API_URL/v1/account/tool-catalog" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

Turn on a managed server, or connect this account to a catalog server: with no sign-in, an API key, or an OAuth sign-in URL#

POST /v1/account/tool-catalog/{serverId}/connect

Authentication: Bearer token: Authorization: Bearer <token> (Supabase access token).

Path parameters

NameTypeRequiredDescription
serverIdstring (pts_… ID)YesID (pts_…)

Request body

application/json, required.

FieldTypeRequiredDescription
apiKeyobjectNo—
apiKey.headerstringYesPattern: ^[A-Za-z0-9-]\{1,64\}$.
apiKey.keystringYes1–4000 characters.

Response 201

FieldTypeRequiredDescription
authorizationUrlstring | nullYes—
serverToolServerYes—
server.apiKeyHeaderstring | nullYes—
server.authenumYesOne of: "none", "api_key", "oauth".
server.authenticatedAtstring (date-time) | nullYes—
server.authenticatedBystring (usr_… ID) | string (svc_… ID) | nullYes—
server.circuitOpenedAtstring (date-time) | nullYes—
server.createdAtstring (date-time)Yes—
server.hasCredentialbooleanYes—
server.idstring (tcn_… ID)YesID (tcn_…)
server.lastCheckedAtstring (date-time) | nullYes—
server.lastErrorstring | nullYes—
server.namestringYes—
server.platformServerIdstring (pts_… ID) | nullYes—
server.statusenumYesOne of: "pending", "active", "needs_reauth", "failing".
server.toolsobjectYes—
server.tools.approvedintegerYes—
server.tools.changedintegerYes—
server.tools.pendingintegerYes—
server.tools.rejectedintegerYes—
server.tools.withdrawnintegerYes—
server.urlstringYes—

Errors: 400, 401, 403, 404, 409, 422, 429, 500, with an ErrorBody body.

Example

bash
curl -X POST "$ANSWERSTACK_API_URL/v1/account/tool-catalog/{serverId}/connect" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'

The account's MCP tool servers, with how many tools wait for review#

GET /v1/account/tool-servers

Authentication: Bearer token: Authorization: Bearer <token> (Supabase access token).

Response 200

FieldTypeRequiredDescription
serversarray<ToolServer>Yes—
servers[].apiKeyHeaderstring | nullYes—
servers[].authenumYesOne of: "none", "api_key", "oauth".
servers[].authenticatedAtstring (date-time) | nullYes—
servers[].authenticatedBystring (usr_… ID) | string (svc_… ID) | nullYes—
servers[].circuitOpenedAtstring (date-time) | nullYes—
servers[].createdAtstring (date-time)Yes—
servers[].hasCredentialbooleanYes—
servers[].idstring (tcn_… ID)YesID (tcn_…)
servers[].lastCheckedAtstring (date-time) | nullYes—
servers[].lastErrorstring | nullYes—
servers[].namestringYes—
servers[].platformServerIdstring (pts_… ID) | nullYes—
servers[].statusenumYesOne of: "pending", "active", "needs_reauth", "failing".
servers[].toolsobjectYes—
servers[].tools.approvedintegerYes—
servers[].tools.changedintegerYes—
servers[].tools.pendingintegerYes—
servers[].tools.rejectedintegerYes—
servers[].tools.withdrawnintegerYes—
servers[].urlstringYes—

Errors: 400, 401, 403, 404, 409, 429, 500, with an ErrorBody body.

Example

bash
curl -X GET "$ANSWERSTACK_API_URL/v1/account/tool-servers" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

Add a tool server. No sign-in: saved and discovered. API key: saved once the key works. OAuth: saved as pending, with a sign-in URL#

POST /v1/account/tool-servers

Authentication: Bearer token: Authorization: Bearer <token> (Supabase access token).

Request body

application/json, required.

FieldTypeRequiredDescription
apiKeyobjectNo—
apiKey.headerstringYesPattern: ^[A-Za-z0-9-]\{1,64\}$.
apiKey.keystringYes1–4000 characters.
namestringYes1–80 characters.
urlstringYesUp to 2048 characters.

Response 201

FieldTypeRequiredDescription
authorizationUrlstring | nullYes—
serverToolServerYes—
server.apiKeyHeaderstring | nullYes—
server.authenumYesOne of: "none", "api_key", "oauth".
server.authenticatedAtstring (date-time) | nullYes—
server.authenticatedBystring (usr_… ID) | string (svc_… ID) | nullYes—
server.circuitOpenedAtstring (date-time) | nullYes—
server.createdAtstring (date-time)Yes—
server.hasCredentialbooleanYes—
server.idstring (tcn_… ID)YesID (tcn_…)
server.lastCheckedAtstring (date-time) | nullYes—
server.lastErrorstring | nullYes—
server.namestringYes—
server.platformServerIdstring (pts_… ID) | nullYes—
server.statusenumYesOne of: "pending", "active", "needs_reauth", "failing".
server.toolsobjectYes—
server.tools.approvedintegerYes—
server.tools.changedintegerYes—
server.tools.pendingintegerYes—
server.tools.rejectedintegerYes—
server.tools.withdrawnintegerYes—
server.urlstringYes—

Errors: 400, 401, 403, 404, 409, 422, 429, 500, with an ErrorBody body.

Example

bash
curl -X POST "$ANSWERSTACK_API_URL/v1/account/tool-servers" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string",
  "url": "string"
}'

Find out whether a server needs no sign-in, an API key, or OAuth#

POST /v1/account/tool-servers/probe

Authentication: Bearer token: Authorization: Bearer <token> (Supabase access token).

Request body

application/json, required.

FieldTypeRequiredDescription
urlstringYesUp to 2048 characters.

Response 200

FieldTypeRequiredDescription
authenumYesOne of: "none", "api_key", "oauth".
urlstringYes—

Errors: 400, 401, 403, 404, 409, 422, 429, 500, with an ErrorBody body.

Example

bash
curl -X POST "$ANSWERSTACK_API_URL/v1/account/tool-servers/probe" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "url": "string"
}'

Rename a tool server#

PATCH /v1/account/tool-servers/{serverId}

Authentication: Bearer token: Authorization: Bearer <token> (Supabase access token).

Path parameters

NameTypeRequiredDescription
serverIdstring (tcn_… ID)YesID (tcn_…)

Request body

application/json, required.

FieldTypeRequiredDescription
namestringYes1–80 characters.

Response 200

FieldTypeRequiredDescription
serverToolServerYes—
server.apiKeyHeaderstring | nullYes—
server.authenumYesOne of: "none", "api_key", "oauth".
server.authenticatedAtstring (date-time) | nullYes—
server.authenticatedBystring (usr_… ID) | string (svc_… ID) | nullYes—
server.circuitOpenedAtstring (date-time) | nullYes—
server.createdAtstring (date-time)Yes—
server.hasCredentialbooleanYes—
server.idstring (tcn_… ID)YesID (tcn_…)
server.lastCheckedAtstring (date-time) | nullYes—
server.lastErrorstring | nullYes—
server.namestringYes—
server.platformServerIdstring (pts_… ID) | nullYes—
server.statusenumYesOne of: "pending", "active", "needs_reauth", "failing".
server.toolsobjectYes—
server.tools.approvedintegerYes—
server.tools.changedintegerYes—
server.tools.pendingintegerYes—
server.tools.rejectedintegerYes—
server.tools.withdrawnintegerYes—
server.urlstringYes—

Errors: 400, 401, 403, 404, 409, 429, 500, with an ErrorBody body.

Example

bash
curl -X PATCH "$ANSWERSTACK_API_URL/v1/account/tool-servers/{serverId}" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string"
}'

Remove a tool server, its tools and its credential#

DELETE /v1/account/tool-servers/{serverId}

Authentication: Bearer token: Authorization: Bearer <token> (Supabase access token).

Path parameters

NameTypeRequiredDescription
serverIdstring (tcn_… ID)YesID (tcn_…)

Response 200

FieldTypeRequiredDescription
deletedenumYesOne of: true.

Errors: 400, 401, 403, 404, 409, 429, 500, with an ErrorBody body.

Example

bash
curl -X DELETE "$ANSWERSTACK_API_URL/v1/account/tool-servers/{serverId}" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

List the tools on the server now: new ones wait for review, changed ones stop until reviewed#

POST /v1/account/tool-servers/{serverId}/discover

Authentication: Bearer token: Authorization: Bearer <token> (Supabase access token).

Path parameters

NameTypeRequiredDescription
serverIdstring (tcn_… ID)YesID (tcn_…)

Response 200

FieldTypeRequiredDescription
messagestring | nullYes—
okbooleanYes—
serverToolServerYes—
server.apiKeyHeaderstring | nullYes—
server.authenumYesOne of: "none", "api_key", "oauth".
server.authenticatedAtstring (date-time) | nullYes—
server.authenticatedBystring (usr_… ID) | string (svc_… ID) | nullYes—
server.circuitOpenedAtstring (date-time) | nullYes—
server.createdAtstring (date-time)Yes—
server.hasCredentialbooleanYes—
server.idstring (tcn_… ID)YesID (tcn_…)
server.lastCheckedAtstring (date-time) | nullYes—
server.lastErrorstring | nullYes—
server.namestringYes—
server.platformServerIdstring (pts_… ID) | nullYes—
server.statusenumYesOne of: "pending", "active", "needs_reauth", "failing".
server.toolsobjectYes—
server.tools.approvedintegerYes—
server.tools.changedintegerYes—
server.tools.pendingintegerYes—
server.tools.rejectedintegerYes—
server.tools.withdrawnintegerYes—
server.urlstringYes—

Errors: 400, 401, 403, 404, 409, 429, 500, with an ErrorBody body.

Example

bash
curl -X POST "$ANSWERSTACK_API_URL/v1/account/tool-servers/{serverId}/discover" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

Sign in to a server again: a new API key, or a new OAuth sign-in. Probes first, so a server that changed how it signs in is handled#

POST /v1/account/tool-servers/{serverId}/reconnect

Authentication: Bearer token: Authorization: Bearer <token> (Supabase access token).

Path parameters

NameTypeRequiredDescription
serverIdstring (tcn_… ID)YesID (tcn_…)

Request body

application/json, required.

FieldTypeRequiredDescription
apiKeyobjectNo—
apiKey.headerstringYesPattern: ^[A-Za-z0-9-]\{1,64\}$.
apiKey.keystringYes1–4000 characters.

Response 200

FieldTypeRequiredDescription
authorizationUrlstring | nullYes—
serverToolServerYes—
server.apiKeyHeaderstring | nullYes—
server.authenumYesOne of: "none", "api_key", "oauth".
server.authenticatedAtstring (date-time) | nullYes—
server.authenticatedBystring (usr_… ID) | string (svc_… ID) | nullYes—
server.circuitOpenedAtstring (date-time) | nullYes—
server.createdAtstring (date-time)Yes—
server.hasCredentialbooleanYes—
server.idstring (tcn_… ID)YesID (tcn_…)
server.lastCheckedAtstring (date-time) | nullYes—
server.lastErrorstring | nullYes—
server.namestringYes—
server.platformServerIdstring (pts_… ID) | nullYes—
server.statusenumYesOne of: "pending", "active", "needs_reauth", "failing".
server.toolsobjectYes—
server.tools.approvedintegerYes—
server.tools.changedintegerYes—
server.tools.pendingintegerYes—
server.tools.rejectedintegerYes—
server.tools.withdrawnintegerYes—
server.urlstringYes—

Errors: 400, 401, 403, 404, 409, 422, 429, 500, with an ErrorBody body.

Example

bash
curl -X POST "$ANSWERSTACK_API_URL/v1/account/tool-servers/{serverId}/reconnect" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'

The tools the account's servers offer, and where each one stands#

GET /v1/account/tools

Authentication: Bearer token: Authorization: Bearer <token> (Supabase access token).

Query parameters

NameTypeRequiredDescription
serverIdstring (tcn_… ID)NoID (tcn_…)
statusenumNoOne of: "pending", "approved", "rejected", "changed", "withdrawn".

Response 200

FieldTypeRequiredDescription
toolsarray<AccountTool>Yes—
tools[].definitionmapYes—
tools[].definition.{key}anyNoAny key.
tools[].definitionHashstringYes—
tools[].descriptionstring | nullYes—
tools[].effectenum | nullYesOne of: "read", "write".
tools[].fromPlatformbooleanYes—
tools[].idstring (atl_… ID)YesID (atl_…)
tools[].idempotencyArgumentstring | nullYes—
tools[].lastSeenAtstring (date-time)Yes—
tools[].latestDefinitionmap | nullYes—
tools[].latestDefinition.{key}anyNoAny key.
tools[].namestringYes—
tools[].reviewobjectYes—
tools[].review.argumentNamesarray<string>Yes—
tools[].review.flagsarray<object>Yes—
tools[].review.flags[].kindenumYesOne of: "instruction", "url", "hidden_text", "long".
tools[].review.flags[].matchstringYes—
tools[].review.flags[].wherestringYes—
tools[].review.hashstringYes—
tools[].review.problemsarray<object>Yes—
tools[].review.problems[].messagestringYes—
tools[].review.problems[].whereenumYesOne of: "inputSchema", "outputSchema".
tools[].review.suggestedEffectenumYesOne of: "read", "write".
tools[].reviewNotestring | nullYes—
tools[].reviewedAtstring (date-time) | nullYes—
tools[].reviewedBystring (usr_… ID) | string (svc_… ID) | nullYes—
tools[].serverIdstring (tcn_… ID)YesID (tcn_…)
tools[].statusenumYesOne of: "pending", "approved", "rejected", "changed", "withdrawn".

Errors: 400, 401, 403, 404, 409, 429, 500, with an ErrorBody body.

Example

bash
curl -X GET "$ANSWERSTACK_API_URL/v1/account/tools" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

Calls per tool, error rate, p95 latency, last use, and the playbooks that bind it. Visibility, not billing: tool calls are included#

GET /v1/account/tools/usage

Authentication: Bearer token: Authorization: Bearer <token> (Supabase access token).

Query parameters

NameTypeRequiredDescription
daysintegerNoBetween 1 and 90. Default: 30.

Response 200

FieldTypeRequiredDescription
toolsarray<object>Yes—
tools[].callsintegerYes—
tools[].errorsintegerYes—
tools[].lastUsedAtstring (date-time) | nullYes—
tools[].p95Msinteger | nullYes—
tools[].playbooksarray<object>Yes—
tools[].playbooks[].idstring (pb_… ID)YesID (pb_…)
tools[].playbooks[].namestringYes—
tools[].toolIdstring (atl_… ID)YesID (atl_…)

Errors: 400, 401, 403, 404, 409, 429, 500, with an ErrorBody body.

Example

bash
curl -X GET "$ANSWERSTACK_API_URL/v1/account/tools/usage" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

One tool: its definition, any waiting change, and what the review should look at#

GET /v1/account/tools/{toolId}

Authentication: Bearer token: Authorization: Bearer <token> (Supabase access token).

Path parameters

NameTypeRequiredDescription
toolIdstring (atl_… ID)YesID (atl_…)

Response 200

FieldTypeRequiredDescription
toolAccountToolYes—
tool.definitionmapYes—
tool.definition.{key}anyNoAny key.
tool.definitionHashstringYes—
tool.descriptionstring | nullYes—
tool.effectenum | nullYesOne of: "read", "write".
tool.fromPlatformbooleanYes—
tool.idstring (atl_… ID)YesID (atl_…)
tool.idempotencyArgumentstring | nullYes—
tool.lastSeenAtstring (date-time)Yes—
tool.latestDefinitionmap | nullYes—
tool.latestDefinition.{key}anyNoAny key.
tool.namestringYes—
tool.reviewobjectYes—
tool.review.argumentNamesarray<string>Yes—
tool.review.flagsarray<object>Yes—
tool.review.flags[].kindenumYesOne of: "instruction", "url", "hidden_text", "long".
tool.review.flags[].matchstringYes—
tool.review.flags[].wherestringYes—
tool.review.hashstringYes—
tool.review.problemsarray<object>Yes—
tool.review.problems[].messagestringYes—
tool.review.problems[].whereenumYesOne of: "inputSchema", "outputSchema".
tool.review.suggestedEffectenumYesOne of: "read", "write".
tool.reviewNotestring | nullYes—
tool.reviewedAtstring (date-time) | nullYes—
tool.reviewedBystring (usr_… ID) | string (svc_… ID) | nullYes—
tool.serverIdstring (tcn_… ID)YesID (tcn_…)
tool.statusenumYesOne of: "pending", "approved", "rejected", "changed", "withdrawn".

Errors: 400, 401, 403, 404, 409, 429, 500, with an ErrorBody body.

Example

bash
curl -X GET "$ANSWERSTACK_API_URL/v1/account/tools/{toolId}" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

Approve the definition you reviewed, with the description our model will read and what the tool does#

POST /v1/account/tools/{toolId}/approve

Authentication: Bearer token: Authorization: Bearer <token> (Supabase access token).

Path parameters

NameTypeRequiredDescription
toolIdstring (atl_… ID)YesID (atl_…)

Request body

application/json, required.

FieldTypeRequiredDescription
descriptionstringYes1–1000 characters.
effectenumYesOne of: "read", "write".
idempotencyArgumentstring | nullNo1–128 characters.
reviewedHashstringYes—

Response 200

FieldTypeRequiredDescription
toolAccountToolYes—
tool.definitionmapYes—
tool.definition.{key}anyNoAny key.
tool.definitionHashstringYes—
tool.descriptionstring | nullYes—
tool.effectenum | nullYesOne of: "read", "write".
tool.fromPlatformbooleanYes—
tool.idstring (atl_… ID)YesID (atl_…)
tool.idempotencyArgumentstring | nullYes—
tool.lastSeenAtstring (date-time)Yes—
tool.latestDefinitionmap | nullYes—
tool.latestDefinition.{key}anyNoAny key.
tool.namestringYes—
tool.reviewobjectYes—
tool.review.argumentNamesarray<string>Yes—
tool.review.flagsarray<object>Yes—
tool.review.flags[].kindenumYesOne of: "instruction", "url", "hidden_text", "long".
tool.review.flags[].matchstringYes—
tool.review.flags[].wherestringYes—
tool.review.hashstringYes—
tool.review.problemsarray<object>Yes—
tool.review.problems[].messagestringYes—
tool.review.problems[].whereenumYesOne of: "inputSchema", "outputSchema".
tool.review.suggestedEffectenumYesOne of: "read", "write".
tool.reviewNotestring | nullYes—
tool.reviewedAtstring (date-time) | nullYes—
tool.reviewedBystring (usr_… ID) | string (svc_… ID) | nullYes—
tool.serverIdstring (tcn_… ID)YesID (tcn_…)
tool.statusenumYesOne of: "pending", "approved", "rejected", "changed", "withdrawn".

Errors: 400, 401, 403, 404, 409, 422, 429, 500, with an ErrorBody body.

Example

bash
curl -X POST "$ANSWERSTACK_API_URL/v1/account/tools/{toolId}/approve" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "reviewedHash": "string",
  "description": "string",
  "effect": "read"
}'

Decide a tool is not to be used#

POST /v1/account/tools/{toolId}/reject

Authentication: Bearer token: Authorization: Bearer <token> (Supabase access token).

Path parameters

NameTypeRequiredDescription
toolIdstring (atl_… ID)YesID (atl_…)

Request body

application/json, required.

FieldTypeRequiredDescription
notestringNoUp to 500 characters.

Response 200

FieldTypeRequiredDescription
toolAccountToolYes—
tool.definitionmapYes—
tool.definition.{key}anyNoAny key.
tool.definitionHashstringYes—
tool.descriptionstring | nullYes—
tool.effectenum | nullYesOne of: "read", "write".
tool.fromPlatformbooleanYes—
tool.idstring (atl_… ID)YesID (atl_…)
tool.idempotencyArgumentstring | nullYes—
tool.lastSeenAtstring (date-time)Yes—
tool.latestDefinitionmap | nullYes—
tool.latestDefinition.{key}anyNoAny key.
tool.namestringYes—
tool.reviewobjectYes—
tool.review.argumentNamesarray<string>Yes—
tool.review.flagsarray<object>Yes—
tool.review.flags[].kindenumYesOne of: "instruction", "url", "hidden_text", "long".
tool.review.flags[].matchstringYes—
tool.review.flags[].wherestringYes—
tool.review.hashstringYes—
tool.review.problemsarray<object>Yes—
tool.review.problems[].messagestringYes—
tool.review.problems[].whereenumYesOne of: "inputSchema", "outputSchema".
tool.review.suggestedEffectenumYesOne of: "read", "write".
tool.reviewNotestring | nullYes—
tool.reviewedAtstring (date-time) | nullYes—
tool.reviewedBystring (usr_… ID) | string (svc_… ID) | nullYes—
tool.serverIdstring (tcn_… ID)YesID (tcn_…)
tool.statusenumYesOne of: "pending", "approved", "rejected", "changed", "withdrawn".

Errors: 400, 401, 403, 404, 409, 429, 500, with an ErrorBody body.

Example

bash
curl -X POST "$ANSWERSTACK_API_URL/v1/account/tools/{toolId}/reject" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'

Run an approved tool with sample arguments. A tool that changes something needs confirm: true, because it acts on the real system#

POST /v1/account/tools/{toolId}/try

Authentication: Bearer token: Authorization: Bearer <token> (Supabase access token).

Path parameters

NameTypeRequiredDescription
toolIdstring (atl_… ID)YesID (atl_…)

Request body

application/json, required.

FieldTypeRequiredDescription
argumentsmapNoDefault: \{\}.
arguments.{key}anyNoAny key.
confirmbooleanNo—
retryobjectNo—
retry.inputResponsesmapYes—
retry.inputResponses.{key}anyNoAny key.
retry.requestStatestring | nullNo—

Response 200

FieldTypeRequiredDescription
outcomeobject | objectYes—
outcome.isErrorbooleanYes(variant 1)
outcome.kindenumYes(variant 1) One of: "complete".
outcome.structuredContentanyNo(variant 1)
outcome.textstringYes(variant 1)
outcome.inputRequestsmapYes(variant 2)
outcome.inputRequests.{key}anyNo(variant 2) Any key.
outcome.kindenumYes(variant 2) One of: "input_required".
outcome.requestStatestring | nullYes(variant 2)

Errors: 400, 401, 403, 404, 409, 422, 429, 500, with an ErrorBody body.

Example

bash
curl -X POST "$ANSWERSTACK_API_URL/v1/account/tools/{toolId}/try" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "arguments": {},
  "confirm": true,
  "retry": {
    "inputResponses": {}
  }
}'