skill_list
List the Skills of your organization by slug, name and description, newest first.
Ask which Skills your organization has. The agent gets the name, the slug and the description of each Skill, newest first, and not its playbook.
Which Skills do we have?
The agent calls this tool and shows you each Skill with its description. To run or change a Skill, it then reads the full Skill with skill_get. When your organization has more Skills than fit on one page, the agent asks for the next page. Reuse a playbook walks the whole job.
Reference
List the active organization’s ad-ops playbooks (Skills) as slug + name + description, newest first. Bodies are not returned — fetch a Skill’s instructions with skill_get once you’ve picked one. The answer holds at most limit rows (default 100, maximum 500). When it carries nextCursor, more rows exist: call this tool again with the same arguments and cursor set to that value. When it carries no nextCursor, you have every row.
Input
| Argument | Type | Required | Description |
|---|---|---|---|
cursor |
string, at least 1 character | no | The nextCursor of the previous page. Omit it to get the first page. Send it with no change, and with the same filters as the request that answered it: a cursor from a different query gets a 400 invalid_cursor. Do not build or change a cursor. |
limit |
integer, 1 to 500 | no | The greatest number of rows on the page, from 1 to 500. The default is 100. A greater value gets a 400, with error of invalid_request. Default: 100. |
Output
A successful call returns this object in structuredContent.
| Field | Type | Always present | Description |
|---|---|---|---|
nextCursor |
string | no | Send this value as cursor to get the next page. It is absent on the last page. |
skills |
array of object | yes | The Skills of the page, newest first. |
skills[].description |
string | yes | When to use the Skill. An agent reads it to choose a Skill. |
skills[].name |
string | yes | The display name of the Skill. |
skills[].slug |
string | yes | The handle of the Skill in your organization. Send it as skill_name. |
Failure codes
A failed call has isError set, and structuredContent.error holds one of these codes. Errors describes the shape of a failed call.
invalid_cursorforbiddeninvalid_requestinternal_error
Scope
The token must hold skill:read. Auth & scopes lists each scope.
Annotations
A client reads these hints. A hint that the tool does not declare has the default value of the MCP specification.
- Read-only. The tool changes nothing.
- Closed world. The tool reads and writes the data of AdCrunch only.
Example
The arguments:
{
"limit": 2
}
The result, in structuredContent:
{
"nextCursor": "eyJwIjpbMTc4OTkxMzYwMDAwMCwic2tsX3E4djNtMXo2azJkOXc0cDd4NW4wYzNqMSJdLCJxIjoiMjR2N3ZscTJ1OXkifQ",
"skills": [
{
"description": "Use this before you write a new ad, to keep the words inside the guidelines of the brand.",
"name": "Write ad copy",
"slug": "write-ad-copy"
},
{
"description": "Use this every Monday to find the campaigns above the target cost per action.",
"name": "Weekly budget review",
"slug": "weekly-budget-review"
}
]
}