Capabilities
A capability is anything a Large Language Model can do beyond plain text generation: search the web, run code, generate an image, return citations, or reason with a larger compute budget. Different vendors expose these as server-side primitives with different names and shapes; Viglet Turing collapses them into one taxonomy so the admin sees “web search” once, not “OpenAI web_search vs Anthropic web_search_20250305 vs Gemini google_search.”
You’d reach for this page when you want an agent to use a provider-native feature (Claude’s web search, OpenAI’s hosted code interpreter, Gemini’s Google Search grounding) rather than (or alongside) Turing’s own native tools. The key idea to internalize: a native capability only fires when it is switched on in two places. Miss either gate and the request silently falls back to the standard Spring AI path, as if the capability didn’t exist.
Why two gates?
Section titled “Why two gates?”A capability is gated per LLM instance and per agent on purpose:
- The instance gate (admin/ops) decides whether this connection is even allowed to use the feature: an operator question about cost, data residency, and contractual access. It lives in the
llm_instance_capabilitymatrix. - The agent gate (author) decides whether this particular assistant should use it, a design question about what the agent is for. It lives in the agent’s
nativeCapabilitiesselection.
At runtime Turing intersects the two sets: what the agent asked for ∩ what the instance is allowed to do. Only capabilities in that intersection are wired into the provider request.
flowchart LR A[Agent picker<br/>nativeCapabilities] -->|selected| I{∩ intersect} B[Instance matrix<br/>llm_instance_capability] -->|enabled| I I -->|in both| W[Wired into the native request] I -.->|missing either gate.-> F[Silent Spring AI fallback]From zero: turn on Claude web search for an agent
Section titled “From zero: turn on Claude web search for an agent”- Enable it on the instance. Open your Anthropic LLM instance (
/admin/llm/instance). In the Capabilities section, toggle on Web Search. (Behind the scenes thisPUTs/api/llm/{instanceId}/capability/anthropic-web-search.) - Select it on the agent. Open the agent’s Tools & Capabilities picker (
/capabilities). Under the Web group, pick the Anthropic web-search option. (This writes the key to the agent’snativeCapabilities.) - Chat. Ask a question that needs fresh information. Claude now runs web search server-side and the answer streams back with citation events.
If nothing changed, re-check step 1: the instance gate is the one most often forgotten.
The capability taxonomy
Section titled “The capability taxonomy”Every capability carries a kind that decides which UI surface it appears on. This keeps ~40 capabilities from collapsing into one undifferentiated list.
| Kind | What it is | Where it surfaces |
|---|---|---|
| TOOL | The model invokes it mid-turn (web search, code interpreter, image gen, plus Turing’s own native tool groups). | The agent’s Tools & Capabilities picker |
| REQUEST_OPTION | Changes how the call is made; never invocable (reasoning effort, citations, service tier, context caching…). | Agent Request Options settings toggles |
| PLATFORM | Not per-agent at all (usage import, evals, distillation, nightly batch). | Their own admin screens |
Each TOOL/REQUEST_OPTION descriptor also carries:
| Field | Meaning |
|---|---|
key |
Stable identifier stored in the matrix / picker (e.g. anthropic-web-search) |
function |
Abstract function the capability fulfils (e.g. web_search). Capabilities sharing a function are mutually exclusive in the picker, you pick one provider to fulfil a function. |
provider |
The vendor that executes it (OPENAI / ANTHROPIC / GEMINI / ANY) |
category |
Coarse grouping for visual layout (Web, Code, Media, Reasoning…) |
ownsTurn |
When true, the capability takes the whole turn (e.g. Computer Use, Realtime Voice) |
valueType / options |
For REQUEST_OPTION rows: BOOLEAN toggle, or SELECT over options |
The merged list is served by GET /api/capability/registry; both UIs render from it.
TOOL capabilities (provider-native)
Section titled “TOOL capabilities (provider-native)”These are the server-side tools a model invokes during a turn, grouped by abstract function. Within a function you choose one provider.
| Function | OpenAI | Anthropic | Gemini |
|---|---|---|---|
| Web search | openai-web-search |
anthropic-web-search |
gemini-google-search (grounding) |
| Web fetch / URL context | n/a | anthropic-web-fetch |
gemini-url-context |
| Code execution | openai-code-interpreter |
anthropic-code-execution |
gemini-code-execution |
| Image generation | openai-image-generation |
n/a | gemini-image-generation |
| Computer use (owns turn) | openai-computer-use |
anthropic-computer-use |
gemini-computer-use |
| Remote MCP | openai-mcp |
anthropic-mcp |
n/a |
| Text editor | n/a | anthropic-text-editor |
n/a |
| Bash | n/a | anthropic-bash |
n/a |
| Memory | n/a | anthropic-memory |
n/a |
| Realtime voice (owns turn) | openai-realtime-voice |
n/a | n/a |
REQUEST_OPTION capabilities
Section titled “REQUEST_OPTION capabilities”Request options never appear in the tool picker: they tune how the call is made and render as toggles/dropdowns on the agent’s Request Options page. They are stored per-agent as a JSON map (requestOptionsJson) keyed by capability key.
| Key | Label | Provider | Type |
|---|---|---|---|
reasoning-effort |
Reasoning Effort | OpenAI | SELECT: minimal / low / medium / high |
reasoning-summary |
Reasoning Summary | OpenAI | SELECT: auto / concise / detailed |
logprobs |
Log Probabilities | OpenAI | boolean |
structured-outputs |
Structured Outputs | Any | boolean |
predicted-outputs |
Predicted Outputs | OpenAI | boolean |
service-tier |
Service Tier | OpenAI | SELECT: auto / default / flex / priority |
token-counting |
Token Counting | Anthropic | boolean |
stored-completions |
Stored Completions | OpenAI | boolean |
citations |
Citations | Anthropic | boolean |
native-pdf |
Native PDF Grounding | Anthropic | boolean |
context-editing |
Context Editing | Anthropic | boolean |
compaction |
Compaction | Anthropic | boolean |
moderation |
Moderation Pre-filter | OpenAI | boolean |
safety-identifier |
Safety Identifier | OpenAI | boolean |
gemini-context-cache |
Context Caching | Gemini | boolean |
openai-background |
Background Mode | OpenAI | boolean |
anthropic-extended-thinking |
Extended Thinking | Anthropic | boolean |
The union tool loop
Section titled “The union tool loop”When an agent mixes provider-native tools with Turing’s own (DSL search, RAG, web crawler…) and MCP tools, they all run in one tool loop rather than competing. The resolver:
- intersects the agent’s selected capabilities with what the instance allows;
- adds the agent’s coexisting Turing/MCP/custom tools, dropping any Turing tool whose abstract
functionis already claimed by a selected provider-native pick (so you don’t get bothsearch_imagesand nativeimage_generationfighting over the same function); - hands the combined set to the vendor’s native chat path (OpenAI Responses
functiontools, Anthropictool_use/tool_result).
Admin & API reference
Section titled “Admin & API reference”Instance capability matrix
Section titled “Instance capability matrix”The admin gate, on the LLM instance edit form (existing instances only; rows are filtered to the vendor’s plugin type).
| Method | Endpoint | Purpose |
|---|---|---|
GET |
/api/llm/{instanceId}/capability |
List capabilities and their enabled state for an instance |
PUT |
/api/llm/{instanceId}/capability/{key} |
Enable/disable a capability (body: enabled, optional configJson) |
DELETE |
/api/llm/{instanceId}/capability/{key} |
Remove a capability row |
configJson carries per-capability settings, e.g. the Anthropic MCP connector’s serverUrl / serverLabel / authToken / allowedTools.
Registry
Section titled “Registry”| Method | Endpoint | Purpose |
|---|---|---|
GET |
/api/capability/registry |
The full tagged descriptor list both UIs render from |
GET |
/api/capability/matrix |
Per-instance capability rows (instance id, title, plugin type, enabled keys) |
Related Pages
Section titled “Related Pages”| Page | Description |
|---|---|
| LLM Instances | Where the instance capability matrix lives, plus the 11 vendors |
| Tool Calling | Turing’s own native tools and how they coexist with provider tools |
| AI Agents | Composing an agent from an LLM, tools, and capabilities |
| MCP Servers | Remote tool servers (the mcp capability) |
| Generative AI & LLM Configuration | How capabilities fit the broader GenAI surface |