Read one built-in tool’s declared parameters and outputs. A name that is itself a registered id answers as that exact tool; a name that is not resolves to the newest version of its family. The returned id is always the one that answered, so a caller can see which version it got. A tool the workspace’s visible blocks do not expose answers 404, identically to one that does not exist.
/api/v2/tools/{toolId}Authorization
apiKey Your Sim API key, personal or workspace-scoped. Generate one under Settings, then API Keys. Operations that reject workspace keys say so in their own description.
In: header
Path Parameters
Tool identifier. An unversioned name resolves to the newest version, and the response echoes the resolved id.
1 <= length <= 255Query Parameters
Workspace whose integration allowlist, revealed preview blocks, and deployed custom blocks decide what this catalog contains.
1 <= length <= 128Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://www.sim.ai/api/v2/tools/string?workspaceId=string" \ -H "X-API-Key: YOUR_API_KEY"{
"data": {
"id": "slack_message",
"name": "Slack Send Message",
"description": "Send a message to a Slack channel.",
"version": "1.0.0",
"hostedApiKey": "none",
"oauth": {
"required": true,
"provider": "slack",
"requiredScopes": [
"chat:write"
]
},
"params": {
"channel": {
"type": "string",
"required": true,
"description": "Channel ID to post into."
},
"text": {
"type": "string",
"required": true,
"description": "Message body."
}
},
"outputs": {
"ts": {
"type": "string",
"description": "Message timestamp."
}
}
}
}{
"error": {
"code": "BAD_REQUEST",
"message": "Invalid request"
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "API key required"
}
}{
"error": {
"code": "FORBIDDEN",
"message": "Insufficient workspace permissions",
"details": {
"code": "INSUFFICIENT_WORKSPACE_ROLE"
}
}
}{
"error": {
"code": "NOT_FOUND",
"message": "Not found"
}
}{
"error": {
"code": "RATE_LIMITED",
"message": "API rate limit exceeded",
"details": {
"retryAfter": "2026-01-01T00:00:30.000Z"
}
}
}{
"error": {
"code": "INTERNAL_ERROR",
"message": "Internal server error"
}
}{
"error": {
"code": "SERVICE_UNAVAILABLE",
"message": "Service temporarily unavailable"
}
}