Sends a message and returns immediately. The full response will be sent over SSE
required | string or (Array of objects or objects or objects) Message content - string for text, or ContentPart[] for multimodal |
| sessionId required | string non-empty The session to use for this message |
{- "content": "string",
- "sessionId": "string"
}{- "accepted": true,
- "sessionId": "string"
}Sends a message and waits for the full response
required | string or (Array of objects or objects or objects) Message content - string for text, or ContentPart[] for multimodal |
| sessionId required | string non-empty The session to use for this message |
{- "content": "string",
- "sessionId": "string"
}{- "response": "string",
- "sessionId": "string",
- "tokenUsage": {
- "inputTokens": 0,
- "outputTokens": 0,
- "reasoningTokens": 0,
- "totalTokens": 0
}, - "reasoning": "string",
- "model": "string",
- "provider": "openai"
}Resets the conversation history for a given session
| sessionId required | string non-empty The ID of the session to reset |
{- "sessionId": "string"
}{- "status": "string",
- "sessionId": "string"
}Sends a message and streams the response via Server-Sent Events (SSE). Returns SSE stream directly in response. Events include llm:thinking, llm:chunk, llm:tool-call, llm:tool-result, llm:response, and llm:error. If the session is busy processing another message, returns 202 with queue information.
required | string or (Array of objects or objects or objects) Message content - string for text, or ContentPart[] for multimodal |
| sessionId required | string non-empty The session to use for this message |
{- "content": "string",
- "sessionId": "string"
}{- "busy": true,
- "sessionId": "string",
- "queueLength": 0,
- "hint": "string"
}Creates a new session
| sessionId | string A custom ID for the new session |
{- "sessionId": "string"
}{- "session": {
- "id": "string",
- "createdAt": 0,
- "lastActivity": 0,
- "messageCount": 0,
- "title": "string"
}
}Updates the title of an existing session
| sessionId required | string Session identifier |
| title required | string [ 1 .. 120 ] characters New title for the session (maximum 120 characters) |
{- "title": "string"
}{- "session": {
- "id": "string",
- "createdAt": 0,
- "lastActivity": 0,
- "messageCount": 0,
- "title": "string"
}
}Retrieves the conversation history for a session along with processing status
| sessionId required | string Session identifier |
{- "history": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "role": "system",
- "timestamp": 0,
- "content": "string",
- "reasoning": "string",
- "tokenUsage": {
- "inputTokens": 0,
- "outputTokens": 0,
- "reasoningTokens": 0,
- "totalTokens": 0
}, - "model": "string",
- "provider": "openai",
- "toolCalls": [
- {
- "id": "string",
- "type": "function",
- "function": {
- "name": "string",
- "arguments": "string"
}
}
], - "toolCallId": "string",
- "name": "string",
- "success": true
}
], - "isBusy": true
}Cancels an in-flight agent run for the specified session. By default (soft cancel), only the current LLM call is cancelled and queued messages continue processing. Set clearQueue=true for hard cancel to also clear any queued messages.
| sessionId required | string Session identifier |
| clearQueue | boolean Default: false If true (hard cancel), clears queued messages. If false (soft cancel, default), queued messages continue processing. |
{- "clearQueue": false
}{- "cancelled": true,
- "sessionId": "string",
- "queueCleared": true,
- "clearedCount": 0
}Validates and retrieves session information including processing status. The client should track the active session.
| sessionId required | string Session identifier |
{- "session": {
- "id": "string",
- "createdAt": 0,
- "lastActivity": 0,
- "messageCount": 0,
- "title": "string",
- "isBusy": true
}
}Retrieves the current LLM configuration for the agent or a specific session
| sessionId | string Session identifier to retrieve session-specific LLM configuration |
{- "config": {
- "provider": "openai",
- "model": "string",
- "maxIterations": 0,
- "baseURL": "string",
- "maxInputTokens": 0,
- "maxOutputTokens": 0,
- "temperature": 1,
- "allowedMediaTypes": [
- "string"
], - "reasoningEffort": "none",
- "hasApiKey": true,
- "displayName": "string"
}, - "routing": {
- "viaDexto": true
}
}Providers, models, capabilities, and API key status
| scope | string Default: "all" Enum: "curated" "all" Catalog scope: 'curated' returns a small, UI-friendly set of models; 'all' returns the full registry (can be large) |
string or Array of strings Comma-separated list of LLM providers to filter by | |
string or string or string or string Include models list in the response (true or false) | |
string or string or string or string Filter by API key presence (true or false) | |
| fileType | string Enum: "pdf" "image" "audio" Filter by supported file type (audio, pdf, or image) |
string or string or string or string Include only default models (true or false) | |
| mode | string Default: "grouped" Enum: "grouped" "flat" Response format mode (grouped by provider or flat list) |
{- "models": [
- {
- "name": "string",
- "maxInputTokens": 0,
- "default": true,
- "supportedFileTypes": [
- "audio"
], - "displayName": "string",
- "pricing": {
- "inputPerM": 0,
- "outputPerM": 0,
- "cacheReadPerM": 0,
- "cacheWritePerM": 0,
- "currency": "USD",
- "unit": "per_million_tokens"
}, - "provider": "string"
}
]
}Switches the LLM configuration for the agent or a specific session
| provider | string Enum: "openai" "openai-compatible" "anthropic" "google" "groq" "xai" "cohere" "minimax" "glm" "openrouter" "litellm" "glama" "vertex" "bedrock" "local" "ollama" "dexto" LLM provider (e.g., 'openai', 'anthropic', 'google', 'groq') |
| model | string Specific model name for the selected provider |
| apiKey | string API key for provider; can be given directly or via $ENV reference |
| maxIterations | integer > 0 Max iterations for agentic loops |
| baseURL | string Base URL for provider (e.g., https://api.openai.com/v1). Only certain providers support this. |
| maxInputTokens | integer > 0 Max input tokens for history; required for unknown models |
| maxOutputTokens | integer > 0 Max tokens for model output |
| temperature | number or null [ 0 .. 1 ] Randomness: 0 deterministic, 1 creative |
| allowedMediaTypes | Array of strings MIME type patterns for media expansion (e.g., "image/*", "application/pdf"). If omitted, uses model capabilities from registry. Supports wildcards. |
| reasoningEffort | string Enum: "none" "minimal" "low" "medium" "high" "xhigh" OpenAI reasoning effort level for reasoning models (o1, o3, codex). Options: 'none', 'minimal', 'low', 'medium' (recommended), 'high', 'xhigh' |
| sessionId | string Session identifier for session-specific LLM configuration |
{- "provider": "openai",
- "model": "string",
- "apiKey": "string",
- "maxIterations": 0,
- "baseURL": "string",
- "maxInputTokens": 0,
- "maxOutputTokens": 0,
- "temperature": 1,
- "allowedMediaTypes": [
- "string"
], - "reasoningEffort": "none",
- "sessionId": "string"
}{- "config": {
- "provider": "openai",
- "model": "string",
- "maxIterations": 0,
- "baseURL": "string",
- "maxInputTokens": 0,
- "maxOutputTokens": 0,
- "temperature": 1,
- "allowedMediaTypes": [
- "string"
], - "reasoningEffort": "none",
- "hasApiKey": true
}, - "sessionId": "string"
}{- "models": [
- {
- "name": "string",
- "provider": "openai-compatible",
- "displayName": "string",
- "maxInputTokens": 0,
- "maxOutputTokens": 0,
- "apiKey": "string",
- "filePath": "string",
- "reasoningEffort": "none"
}
]
}Saves a new custom openai-compatible model configuration
| name required | string non-empty |
| provider | string Default: "openai-compatible" Enum: "openai-compatible" "openrouter" "litellm" "glama" "bedrock" "ollama" "local" "vertex" "dexto" |
| baseURL | string <uri> |
| displayName | string |
| maxInputTokens | integer > 0 |
| maxOutputTokens | integer > 0 |
| apiKey | string |
| filePath | string |
| reasoningEffort | string Enum: "none" "minimal" "low" "medium" "high" "xhigh" |
{- "name": "string",
- "provider": "openai-compatible",
- "displayName": "string",
- "maxInputTokens": 0,
- "maxOutputTokens": 0,
- "apiKey": "string",
- "filePath": "string",
- "reasoningEffort": "none"
}{- "ok": true,
- "model": {
- "name": "string",
- "provider": "openai-compatible",
- "displayName": "string",
- "maxInputTokens": 0,
- "maxOutputTokens": 0,
- "apiKey": "string",
- "filePath": "string",
- "reasoningEffort": "none"
}
}Returns the capabilities (supported file types) for a specific provider/model combination. Handles gateway providers (dexto, openrouter) by resolving to the underlying model capabilities.
| provider required | string Enum: "openai" "openai-compatible" "anthropic" "google" "groq" "xai" "cohere" "minimax" "glm" "openrouter" "litellm" "glama" "vertex" "bedrock" "local" "ollama" "dexto" LLM provider name |
| model required | string non-empty Model name (supports both native and OpenRouter format) |
{- "provider": "openai",
- "model": "string",
- "supportedFileTypes": [
- "pdf"
]
}Retrieves the API key status for a provider. Returns a masked key value (e.g., sk-proj...xyz4) for UI display purposes.
| provider required | string Enum: "openai" "openai-compatible" "anthropic" "google" "groq" "xai" "cohere" "minimax" "glm" "openrouter" "litellm" "glama" "vertex" "bedrock" "local" "ollama" "dexto" LLM provider identifier |
{- "provider": "openai",
- "envVar": "string",
- "hasKey": true,
- "keyValue": "string"
}Stores an API key for a provider in .env and makes it available immediately
| provider required | string Enum: "openai" "openai-compatible" "anthropic" "google" "groq" "xai" "cohere" "minimax" "glm" "openrouter" "litellm" "glama" "vertex" "bedrock" "local" "ollama" "dexto" LLM provider identifier (e.g., openai, anthropic) |
| apiKey required | string non-empty API key for the provider (writeOnly - never returned in responses) |
{- "provider": "openai",
- "apiKey": "string"
}{- "ok": true,
- "provider": "openai",
- "envVar": "string"
}Connects a new MCP server dynamically
| name required | string non-empty A unique name for the server |
required | object or object or object The server configuration object |
| persistToAgent | boolean If true, saves the server to agent configuration file |
{- "name": "string",
- "config": {
- "type": "stdio",
- "enabled": true,
- "command": "string",
- "args": [ ],
- "env": { },
- "timeout": 30000,
- "connectionMode": "strict"
}, - "persistToAgent": true
}{- "status": "string",
- "name": "string"
}Retrieves the list of tools available on a specific MCP server
| serverId required | string The ID of the MCP server |
{- "tools": [
- {
- "id": "string",
- "name": "string",
- "description": "string",
- "inputSchema": {
- "type": "object",
- "properties": {
- "property1": {
- "type": "string",
- "description": "string",
- "enum": [
- "string"
], - "default": null
}, - "property2": {
- "type": "string",
- "description": "string",
- "enum": [
- "string"
], - "default": null
}
}, - "required": [
- "string"
]
}
}
]
}Executes a tool on an MCP server directly
| serverId required | string The ID of the MCP server |
| toolName required | string The name of the tool to execute |
| property name* additional property | any or null |
{- "property1": null,
- "property2": null
}{- "success": true,
- "data": null,
- "error": "string"
}Retrieves all resources available from a specific MCP server
| serverId required | string The ID of the MCP server |
{- "success": true,
- "resources": [
- {
- "uri": "string",
- "name": "string",
- "description": "string",
- "mimeType": "string",
- "source": "mcp",
- "serverName": "string",
- "size": 0,
- "lastModified": "2019-08-24T14:15:22Z",
- "metadata": {
- "property1": null,
- "property2": null
}
}
]
}Reads content from a specific resource on an MCP server. This endpoint automatically constructs the qualified URI format (mcp:serverId:resourceId)
| serverId required | string The ID of the MCP server |
| resourceId required | string non-empty The URI-encoded resource identifier on that server |
{- "success": true,
- "data": {
- "content": null
}
}Registers a new webhook endpoint to receive agent events
| url required | string <uri> The URL to send webhook events to (must be a valid HTTP/HTTPS URL) |
| secret | string A secret key for HMAC signature verification |
| description | string A description of the webhook for reference |
{- "secret": "string",
- "description": "string"
}{- "webhook": {
- "id": "string",
- "description": "string",
- "createdAt": "string"
}
}{- "webhooks": [
]
}Sends a sample event to test webhook connectivity and configuration
| webhookId required | string The webhook identifier |
{- "test": "completed",
- "result": {
- "success": true,
- "statusCode": 0,
- "responseTime": 0,
- "error": "string"
}
}Searches for messages across all sessions or within a specific session
| q required | string non-empty Search query string |
| limit | number [ 1 .. 100 ] Maximum number of results to return (default: 20) |
| offset | number or null >= 0 Number of results to skip for pagination (default: 0) |
| sessionId | string Limit search to a specific session |
| role | string Enum: "user" "assistant" "system" "tool" Filter by message role |
{- "results": [
- {
- "sessionId": "string",
- "message": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "role": "system",
- "timestamp": 0,
- "content": "string",
- "reasoning": "string",
- "tokenUsage": {
- "inputTokens": 0,
- "outputTokens": 0,
- "reasoningTokens": 0,
- "totalTokens": 0
}, - "model": "string",
- "provider": "openai",
- "toolCalls": [
- {
- "id": "string",
- "type": "function",
- "function": {
- "name": "string",
- "arguments": "string"
}
}
], - "toolCallId": "string",
- "name": "string",
- "success": true
}, - "matchedText": "string",
- "context": "string",
- "messageIndex": 0
}
], - "total": 0,
- "hasMore": true,
- "query": "string"
}Searches for sessions that contain the specified query
| q required | string non-empty Search query string |
{- "results": [
- {
- "sessionId": "string",
- "matchCount": 0,
- "firstMatch": {
- "sessionId": "string",
- "message": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "role": "system",
- "timestamp": 0,
- "content": "string",
- "reasoning": "string",
- "tokenUsage": {
- "inputTokens": 0,
- "outputTokens": 0,
- "reasoningTokens": 0,
- "totalTokens": 0
}, - "model": "string",
- "provider": "openai",
- "toolCalls": [
- {
- "id": "string",
- "type": "function",
- "function": {
- "name": "string",
- "arguments": "string"
}
}
], - "toolCallId": "string",
- "name": "string",
- "success": true
}, - "matchedText": "string",
- "context": "string",
- "messageIndex": 0
}, - "metadata": {
- "createdAt": 0,
- "lastActivity": 0,
- "messageCount": 0
}
}
], - "total": 0,
- "hasMore": true,
- "query": "string"
}Creates a new memory
| content required | string [ 1 .. 10000 ] characters The memory content |
| tags | Array of strings <= 10 items [ items [ 1 .. 50 ] characters ] Optional tags |
object Optional metadata |
{- "content": "string",
- "tags": [
- "string"
], - "metadata": {
- "source": "user",
- "pinned": true
}
}{- "ok": true,
- "memory": {
- "id": "string",
- "content": "string",
- "createdAt": 0,
- "updatedAt": 0,
- "tags": [
- "string"
], - "metadata": {
- "source": "user",
- "pinned": true
}
}
}Retrieves a list of all memories with optional filtering
| tags | string Comma-separated list of tags to filter by |
| source | string Enum: "user" "system" Filter by source (user or system) |
| pinned | string Filter by pinned status (true or false) |
| limit | string Maximum number of memories to return |
| offset | string Number of memories to skip |
{- "ok": true,
- "memories": [
- {
- "id": "string",
- "content": "string",
- "createdAt": 0,
- "updatedAt": 0,
- "tags": [
- "string"
], - "metadata": {
- "source": "user",
- "pinned": true
}
}
]
}Retrieves a specific memory by its unique identifier
| id required | string non-empty Memory unique identifier |
{- "ok": true,
- "memory": {
- "id": "string",
- "content": "string",
- "createdAt": 0,
- "updatedAt": 0,
- "tags": [
- "string"
], - "metadata": {
- "source": "user",
- "pinned": true
}
}
}Updates an existing memory. Only provided fields will be updated
| id required | string non-empty Memory unique identifier |
| content | string [ 1 .. 10000 ] characters Updated content |
| tags | Array of strings <= 10 items [ items [ 1 .. 50 ] characters ] Updated tags (replaces existing) |
object Updated metadata (merges with existing) |
{- "content": "string",
- "tags": [
- "string"
], - "metadata": {
- "source": "user",
- "pinned": true
}
}{- "ok": true,
- "memory": {
- "id": "string",
- "content": "string",
- "createdAt": 0,
- "updatedAt": 0,
- "tags": [
- "string"
], - "metadata": {
- "source": "user",
- "pinned": true
}
}
}{- "prompts": [
- {
- "name": "string",
- "title": "string",
- "description": "string",
- "arguments": [
- {
- "name": "string",
- "description": "string",
- "required": true
}
], - "source": "mcp",
- "metadata": {
- "property1": null,
- "property2": null
}
}
]
}Creates a new custom prompt with optional resource attachment. Maximum request size: 10MB
| name required | string non-empty Unique name for the custom prompt |
| title | string Display title for the prompt |
| description | string Description of what the prompt does |
| content required | string non-empty The prompt content text (can include {{argumentName}} placeholders) |
Array of objects Array of argument definitions | |
object Attach a resource to this prompt |
{- "name": "string",
- "title": "string",
- "description": "string",
- "content": "string",
- "arguments": [
- {
- "name": "string",
- "description": "string",
- "required": true
}
], - "resource": {
- "data": "string",
- "mimeType": "string",
- "filename": "string"
}
}{- "prompt": {
- "name": "string",
- "title": "string",
- "description": "string",
- "arguments": [
- {
- "name": "string",
- "description": "string",
- "required": true
}
], - "source": "mcp",
- "metadata": {
- "property1": null,
- "property2": null
}
}
}Fetches the definition for a specific prompt
| name required | string non-empty The prompt name |
{- "definition": {
- "name": "string",
- "title": "string",
- "description": "string",
- "arguments": [
- {
- "name": "string",
- "description": "string",
- "required": true
}
]
}
}Resolves a prompt template with provided arguments and returns the final text with resources
| name required | string non-empty The prompt name |
| context | string Additional context for prompt resolution |
| args | string Arguments to substitute in the prompt template (pass as a JSON string) |
{- "text": "string",
- "resources": [
- "string"
]
}Retrieves a list of all available resources from all sources (MCP servers and internal providers)
{- "ok": true,
- "resources": [
- {
- "uri": "string",
- "name": "string",
- "description": "string",
- "mimeType": "string",
- "source": "mcp",
- "serverName": "string",
- "size": 0,
- "lastModified": "2019-08-24T14:15:22Z",
- "metadata": {
- "property1": null,
- "property2": null
}
}
]
}Reads the content of a specific resource by its URI. The resource ID in the URL must be URI-encoded
| resourceId required | string non-empty The URI-encoded resource identifier |
{- "ok": true,
- "content": {
- "contents": [
- {
- "uri": "string",
- "mimeType": "string",
- "text": "string",
- "blob": "string"
}
], - "_meta": {
- "property1": null,
- "property2": null
}
}
}Saves and applies YAML agent configuration. Creates backup before saving
| yaml required | string non-empty YAML agent configuration content to save |
{- "yaml": "string"
}{- "ok": true,
- "path": "string",
- "reloaded": true,
- "restarted": true,
- "changesApplied": [
- "string"
], - "message": "string"
}Validates YAML agent configuration without saving it
| yaml required | string YAML agent configuration content to validate |
{- "yaml": "string"
}{- "valid": true,
- "errors": [
- {
- "line": 0,
- "column": 0,
- "path": "string",
- "message": "string",
- "code": "string"
}
], - "warnings": [
- {
- "path": "string",
- "message": "string",
- "code": "string"
}
]
}{- "installed": [
- {
- "id": "string",
- "name": "string",
- "description": "string",
- "author": "string",
- "tags": [
- "string"
], - "type": "builtin"
}
], - "available": [
- {
- "id": "string",
- "name": "string",
- "description": "string",
- "author": "string",
- "tags": [
- "string"
], - "type": "builtin"
}
], - "current": {
- "id": "string",
- "name": "string"
}
}Installs an agent from the registry or from a custom source
| id required | string non-empty Unique agent identifier |
| name | string Display name (defaults to derived from id) |
| sourcePath required | string non-empty Path to agent configuration file or directory |
required | object Agent metadata including description, author, and tags |
{- "id": "string",
- "path": "string"
}{- "installed": true,
- "id": "string",
- "name": "string",
- "type": "builtin"
}Switches to a different agent by ID or file path
| id required | string non-empty Unique agent identifier (e.g., "database-agent") |
| path | string Optional absolute file path for file-based agents (e.g., "/path/to/agent.yml") |
{- "id": "string",
- "path": "string"
}{- "switched": true,
- "id": "string",
- "name": "string"
}Checks if an agent ID conflicts with existing agents
| id required | string non-empty Unique agent identifier (e.g., "database-agent") |
| path | string Optional absolute file path for file-based agents (e.g., "/path/to/agent.yml") |
{- "id": "string",
- "path": "string"
}{- "valid": true,
- "conflict": "string",
- "message": "string"
}Removes an agent from the system. Custom agents are removed from registry; builtin agents can be reinstalled
| id required | string non-empty Unique agent identifier to uninstall |
| force | boolean Default: false Force uninstall even if agent is currently active |
{- "id": "string",
- "force": false
}{- "uninstalled": true,
- "id": "string"
}Creates a new custom agent from scratch via the UI/API
| id required | string non-empty ^[a-z0-9-]+$ Unique agent identifier |
| name required | string non-empty Display name for the agent |
| description required | string non-empty One-line description of the agent |
| author | string Author or organization |
| tags | Array of strings Default: [] Tags for discovery |
required | object Complete agent configuration |
{- "id": "string",
- "name": "string",
- "description": "string",
- "author": "string",
- "tags": [ ],
- "config": {
- "property1": null,
- "property2": null
}
}{- "created": true,
- "id": "string",
- "name": "string"
}Returns all messages waiting in the queue for a session
| sessionId required | string non-empty Session ID |
{- "messages": [
- {
- "id": "string",
- "content": [
- {
- "type": "text",
- "text": "string"
}
], - "queuedAt": 0,
- "metadata": {
- "property1": null,
- "property2": null
}, - "kind": "default"
}
], - "count": 0
}Adds a message to the queue for processing when the session is no longer busy
| sessionId required | string non-empty Session ID |
required | string or (Array of objects or objects or objects) Message content - string for text, or ContentPart[] for multimodal |
| kind | string Enum: "default" "background" Optional queued message kind |
{- "content": "string",
- "kind": "default"
}{- "queued": true,
- "id": "string",
- "position": 0
}Validates an OpenRouter model ID against the cached model registry. Refreshes cache if stale.
| modelId required | string non-empty OpenRouter model ID to validate (e.g., anthropic/claude-3.5-sonnet) |
{- "valid": true,
- "modelId": "string",
- "status": "valid",
- "error": "string",
- "info": {
- "contextLength": 0
}
}Returns all registered providers (blob storage, database, compaction, custom tools) and available internal tools. Useful for building UIs that need to display configurable options.
{- "blob": [
- {
- "type": "string",
- "category": "blob",
- "metadata": {
- "displayName": "string",
- "description": "string"
}
}
], - "database": [
- {
- "type": "string",
- "category": "blob",
- "metadata": {
- "displayName": "string",
- "description": "string"
}
}
], - "compaction": [
- {
- "type": "string",
- "category": "blob",
- "metadata": {
- "displayName": "string",
- "description": "string"
}
}
], - "customTools": [
- {
- "type": "string",
- "category": "blob",
- "metadata": {
- "displayName": "string",
- "description": "string"
}
}
], - "internalTools": [
- {
- "name": "string",
- "description": "string"
}
]
}Retrieves all available tools from all sources (internal, custom, and MCP servers)
{- "tools": [
- {
- "id": "string",
- "name": "string",
- "description": "string",
- "source": "internal",
- "serverName": "string",
- "inputSchema": {
- "type": "object",
- "properties": {
- "property1": {
- "type": "string",
- "description": "string",
- "enum": [
- "string"
], - "default": null
}, - "property2": {
- "type": "string",
- "description": "string",
- "enum": [
- "string"
], - "default": null
}
}, - "required": [
- "string"
]
}
}
], - "totalCount": 0,
- "internalCount": 0,
- "customCount": 0,
- "mcpCount": 0
}Returns all installed local GGUF models from ~/.dexto/models/state.json. These are models downloaded from HuggingFace or manually registered.
{- "models": [
- {
- "id": "string",
- "displayName": "string",
- "filePath": "string",
- "sizeBytes": 0,
- "contextLength": 0,
- "source": "huggingface"
}
]
}Returns available models from the local Ollama server. Returns empty list with available=false if Ollama is not running.
| baseURL | string <uri> Ollama server URL (default: http://localhost:11434) |
{- "available": true,
- "version": "string",
- "models": [
- {
- "name": "string",
- "size": 0,
- "digest": "string",
- "modifiedAt": "string"
}
], - "error": "string"
}Validates that a GGUF file exists and is readable. Used by Web UI to validate custom file paths before saving.
| filePath required | string non-empty Absolute path to the GGUF file to validate |
{- "filePath": "string"
}{- "valid": true,
- "sizeBytes": 0,
- "error": "string"
}Removes an installed local model from state.json. Optionally deletes the GGUF file from disk (default: true).
| modelId required | string The model ID to delete |
| deleteFile | boolean Default: true Whether to also delete the GGUF file from disk |
{- "deleteFile": true
}{- "success": true,
- "modelId": "string",
- "fileDeleted": true,
- "error": "string"
}Send a message to the agent (A2A message/send)
required | object Message to send to the agent |
object Optional configuration | |
object Optional metadata |
{- "message": {
- "role": "user",
- "parts": [
- {
- "kind": "text",
- "text": "string",
- "metadata": {
- "property1": null,
- "property2": null
}
}
], - "messageId": "string",
- "taskId": "string",
- "contextId": "string",
- "metadata": {
- "property1": null,
- "property2": null
}, - "extensions": [
- "string"
], - "referenceTaskIds": [
- "string"
], - "kind": "message"
}, - "configuration": {
- "acceptedOutputModes": [
- "string"
], - "historyLength": 0,
- "pushNotificationConfig": {
- "url": "string",
- "headers": {
- "property1": "string",
- "property2": "string"
}
}, - "blocking": true
}, - "metadata": {
- "property1": null,
- "property2": null
}
}{- "id": "string",
- "contextId": "string",
- "status": {
- "state": "submitted",
- "message": {
- "role": "user",
- "parts": [
- {
- "kind": "text",
- "text": "string",
- "metadata": {
- "property1": null,
- "property2": null
}
}
], - "messageId": "string",
- "taskId": "string",
- "contextId": "string",
- "metadata": {
- "property1": null,
- "property2": null
}, - "extensions": [
- "string"
], - "referenceTaskIds": [
- "string"
], - "kind": "message"
}, - "timestamp": "string"
}, - "history": [
- {
- "role": "user",
- "parts": [
- {
- "kind": "text",
- "text": "string",
- "metadata": {
- "property1": null,
- "property2": null
}
}
], - "messageId": "string",
- "taskId": "string",
- "contextId": "string",
- "metadata": {
- "property1": null,
- "property2": null
}, - "extensions": [
- "string"
], - "referenceTaskIds": [
- "string"
], - "kind": "message"
}
], - "artifacts": [
- null
], - "metadata": {
- "property1": null,
- "property2": null
}, - "kind": "task"
}List all A2A tasks with optional filtering (A2A tasks/list)
| contextId | string Filter by context ID |
| status | string Enum: "submitted" "working" "input-required" "completed" "canceled" "failed" "rejected" "auth-required" "unknown" Filter by task state |
| pageSize | string Number of results (1-100, default 50) |
| pageToken | string Pagination token (not yet implemented - reserved for future use) |
| historyLength | string Limit history items (not yet implemented - reserved for future use) |
| lastUpdatedAfter | string Unix timestamp filter (not yet implemented - reserved for future use) |
| includeArtifacts | string Include artifacts in response (not yet implemented - reserved for future use) |
{- "tasks": [
- {
- "id": "string",
- "contextId": "string",
- "status": {
- "state": "submitted",
- "message": {
- "role": "user",
- "parts": [
- {
- "kind": "text",
- "text": "string",
- "metadata": {
- "property1": null,
- "property2": null
}
}
], - "messageId": "string",
- "taskId": "string",
- "contextId": "string",
- "metadata": {
- "property1": null,
- "property2": null
}, - "extensions": [
- "string"
], - "referenceTaskIds": [
- "string"
], - "kind": "message"
}, - "timestamp": "string"
}, - "history": [
- {
- "role": "user",
- "parts": [
- {
- "kind": "text",
- "text": "string",
- "metadata": {
- "property1": null,
- "property2": null
}
}
], - "messageId": "string",
- "taskId": "string",
- "contextId": "string",
- "metadata": {
- "property1": null,
- "property2": null
}, - "extensions": [
- "string"
], - "referenceTaskIds": [
- "string"
], - "kind": "message"
}
], - "artifacts": [
- null
], - "metadata": {
- "property1": null,
- "property2": null
}, - "kind": "task"
}
], - "totalSize": 0,
- "pageSize": 0,
- "nextPageToken": "string"
}Retrieve a specific task by ID (A2A tasks/get)
| id required | string Task ID |
{- "id": "string",
- "contextId": "string",
- "status": {
- "state": "submitted",
- "message": {
- "role": "user",
- "parts": [
- {
- "kind": "text",
- "text": "string",
- "metadata": {
- "property1": null,
- "property2": null
}
}
], - "messageId": "string",
- "taskId": "string",
- "contextId": "string",
- "metadata": {
- "property1": null,
- "property2": null
}, - "extensions": [
- "string"
], - "referenceTaskIds": [
- "string"
], - "kind": "message"
}, - "timestamp": "string"
}, - "history": [
- {
- "role": "user",
- "parts": [
- {
- "kind": "text",
- "text": "string",
- "metadata": {
- "property1": null,
- "property2": null
}
}
], - "messageId": "string",
- "taskId": "string",
- "contextId": "string",
- "metadata": {
- "property1": null,
- "property2": null
}, - "extensions": [
- "string"
], - "referenceTaskIds": [
- "string"
], - "kind": "message"
}
], - "artifacts": [
- null
], - "metadata": {
- "property1": null,
- "property2": null
}, - "kind": "task"
}Cancel a running task (A2A tasks/cancel)
| id required | string Task ID |
{- "id": "string",
- "contextId": "string",
- "status": {
- "state": "submitted",
- "message": {
- "role": "user",
- "parts": [
- {
- "kind": "text",
- "text": "string",
- "metadata": {
- "property1": null,
- "property2": null
}
}
], - "messageId": "string",
- "taskId": "string",
- "contextId": "string",
- "metadata": {
- "property1": null,
- "property2": null
}, - "extensions": [
- "string"
], - "referenceTaskIds": [
- "string"
], - "kind": "message"
}, - "timestamp": "string"
}, - "history": [
- {
- "role": "user",
- "parts": [
- {
- "kind": "text",
- "text": "string",
- "metadata": {
- "property1": null,
- "property2": null
}
}
], - "messageId": "string",
- "taskId": "string",
- "contextId": "string",
- "metadata": {
- "property1": null,
- "property2": null
}, - "extensions": [
- "string"
], - "referenceTaskIds": [
- "string"
], - "kind": "message"
}
], - "artifacts": [
- null
], - "metadata": {
- "property1": null,
- "property2": null
}, - "kind": "task"
}Fetch all pending approval requests for a session. Use this to restore UI state after page refresh.
| sessionId required | string The session ID to fetch pending approvals for |
{- "ok": true,
- "approvals": [
- {
- "approvalId": "string",
- "type": "string",
- "sessionId": "string",
- "timeout": 0,
- "timestamp": "string",
- "metadata": {
- "property1": null,
- "property2": null
}
}
]
}Submit a user decision for a pending approval request
| approvalId required | string The ID of the approval request |
| Idempotency-Key | string Optional key to ensure idempotent processing |
| status required | string Enum: "approved" "denied" The user decision |
object Optional form data provided by the user (for elicitation) | |
| rememberChoice | boolean Whether to remember this choice for future requests |
{- "status": "approved",
- "formData": {
- "property1": null,
- "property2": null
}, - "rememberChoice": true
}{- "ok": true,
- "approvalId": "string",
- "status": "approved"
}