On this page

Connectors

list-skills

List this project's existing, already-usable skills, one item per skill. It is the only way to discover which skills you can attach to an agent. Needs the fabric:orchestrate.read grant.

curl -sS -X POST https://fabric.wexa.ai/mcp/$FABRIC_PROJECT_ID \
  -H "authorization: Bearer $FABRIC_API_KEY" \
  -H "Mcp-Session-Id: $MCP_SESSION_ID" \
  -H "content-type: application/json" -H "accept: application/json" \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"list-skills","arguments":{"category":"duckduckgo"}}}'
{
  "content": [
    {
      "type": "text",
      "text": "{\"lifecycle_id\":\"qlc_000016\",\"result\":{\"skills\":[{\"action\":\"Search\",\"connector\":\"Duckduckgo\",\"description\":\"Search DuckDuckGo Instant Answer API and return abstract and related topics.\",\"skill_id\":\"6ac7300653328ca8315f0308\"}],\"total_count\":1}}"
    }
  ],
  "isError": false
}

Parameters

Every parameter is optional: a bare call works.

ParameterTypeRequiredNotes
categorystringOptionalRestrict to one connector's skills, such as linear. Matched case-insensitively against the connector name or its actions' category.
limitintegerOptionalMost connectors whose skills are returned. Default 100. Must be a positive integer.
search_keystringOptionalFree-text filter on skill or connector name or description.
Show full response

A real response, captured from a live call to list-skills with category: "duckduckgo", after provision-connector connected DuckDuckGo:

{
  "content": [
    {
      "type": "text",
      "text": "{\"lifecycle_id\":\"qlc_000016\",\"result\":{\"skills\":[{\"action\":\"Search\",\"connector\":\"Duckduckgo\",\"description\":\"Search DuckDuckGo Instant Answer API and return abstract and related topics.\",\"skill_id\":\"6ac7300653328ca8315f0308\"}],\"total_count\":1}}"
    }
  ],
  "isError": false
}

Each item is one skill. skill_id is the id an agent accepts; connector and action are the connector's name and the action the skill runs. When no connector is connected, skills is empty and a note says no connector is connected yet, not that none exist.

More details

A skill appears only if its connector is provisioned in this project, because provisioning a connector creates one skill per real action. If the skill you need is not returned, that connector is not provisioned yet: try provision-connector, which provisions credential-free connectors and creates their skills. A connector that needs an API key or OAuth still needs a person in the console. Never invent a skill id or attach a placeholder: an un-backed skill silently does nothing when the flow runs.

Pass a skill_id to an agent as it is: in skill_ids for create-agent or update-agent, or in an agent's skills[] in a create-process-flow manifest or update-process-flow.

For example:

const { skills } = await fabric.listSkills({ category: 'duckduckgo' })

await fabric.createAgent({
  name: 'Web researcher',
  role: 'Task',
  skill_ids: [skills[0].skill_id],
})

Not marked consequential: it only reads, so it is audited lightly and never held for approval. For when and how to use skills, see Skills, actions and triggers.

Every tool call works the same way: How every tool call works.