list-models
List the AI models this organization can run, and which one is the default. 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-models","arguments":{}}}'{
"content": [
{
"type": "text",
"text": "{\"lifecycle_id\":\"qlc_000171\",\"result\":{\"available\":[{\"label_name\":\"WEXA System Model\",\"model_name\":\"system_model\"}],\"default\":{\"chosen\":true,\"model\":\"mdl_bx_anthropic-claude-haiku-4-5-20251001-v1_28ccc24bfca8\",\"source\":\"AI Models registry\"},\"registry\":\"\\u2026\",\"settable\":\"\\u2026\"}}"
}
],
"isError": false
}Parameters
| Parameter | Type | Required | Notes |
|---|---|---|---|
| none | This tool takes no parameters. Send an empty object: the organization comes from your credential. |
Show full response
A real response, captured from a live call to list-models:
registry and settable came back populated and are shown as … here, because the real value runs to thousands of characters. Read them from your own call rather than from this page.
{
"content": [
{
"type": "text",
"text": "{\"lifecycle_id\":\"qlc_000171\",\"result\":{\"available\":[{\"label_name\":\"WEXA System Model\",\"model_name\":\"system_model\"}],\"default\":{\"chosen\":true,\"model\":\"mdl_bx_anthropic-claude-haiku-4-5-20251001-v1_28ccc24bfca8\",\"source\":\"AI Models registry\"},\"registry\":\"\\u2026\",\"selected\":{\"embedding_model_to_use\":null,\"fallback_model_to_use\":\"system_model\",\"has_chosen_default_model\":true,\"organization_id\":\"6a79a770b6c128ccc24bfca8\",\"resolved_default_model\":\"mdl_bx_anthropic-claude-haiku-4-5-20251001-v1_28ccc24bfca8\"},\"settable\":\"\\u2026\"}}"
}
],
"isError": false
}More details
default names the model that will actually run for an agent that does not name its own: one answer, resolved the same way every call path in the platform resolves it. The result holds two families of id, and both are valid in an agent's llm.model. registry holds the organization's AI Models registry entries (ids like mdl_...): an id, a name, a provider, a health status and whether it is the default. These are the only ids create-agent and create-process-flow accept, so prefer them. available is what the running service reports it can reach: the system_model sentinel, plus composite ids naming one model from one provider for one organization (instance#provider#org#model). settable lists the ids set-model accepts, which is the registry ids, because the organization default lives in the registry. In the console the registry is the AI Models page.
The registry is read from a separate service. When it is unavailable, the result says so instead of returning a short list that looks complete. Treat a missing registry as "not known right now", not as "no registry models".
How an agent gets its model
An agent's definition has an llm block whose model names the LLM. Created without a model, the agent is stored with the organization's default from the AI Models registry, or the first registry model when none is marked default. That stored id is real, so the agent keeps it when the default changes later. Agents made before this rule can still carry the sentinel system_model, which means whichever model the organization has chosen. A new agent cannot be given system_model: it is refused.
To choose a model for one agent, put a real model id in that agent's llm.model. Only that agent changes, and it stops following the organization default. In the console, open the agent and set its Model. Over the API, pass model to create-agent, or llm.model to update-agent. Each agent in a process flow manifest carries its own llm block, so one process flow can mix models on purpose.
To change the default for the organization, see set-model. To call a model with no agent involved, see run-model. For who bills you and what it costs, platform-provided or bring-your-own, see Platform-provided or bring-your-own.
Every tool call works the same way: How every tool call works.