Skip to main content
Glama

ask_model

Get an independent software-engineering opinion from a single AI model. Choose a backend provider and ask code structure, architecture, or design trade-off questions with optional context.

Instructions

Ask ONE model — on its own, independent of Fable — to reason about the SOFTWARE/ENGINEERING work you're doing: code structure, functionality, data/control flow, module and function relationships, routing, architecture, and design trade-offs. provider selects the backend; model overrides the model where the backend accepts one. This one tool replaces the per-backend tools: 'minimax' (MiniMax-M3), 'glm', 'deepseek' (cheap direct APIs — prefer these for a quick independent opinion), 'sonnet', 'gemini', 'codex' (GPT-5.6 Sol), 'grok', 'kimi' (local CLIs), and the gateways 'ollama', 'lmstudio', 'atlas', 'ali' (Alibaba/Qwen reasoning), 'openrouter'. Aliases: m3=minimax, gpt=codex, xai=grok. The direct providers have a fixed model and reject model; pass model for a CLI override (grok/kimi) or a gateway (ollama/lmstudio/atlas/ali/openrouter) — call list_models(provider=...) first for the gateway catalogues. Single-turn: for a multi-turn thread use ask (multi-turn; oracle="opus" for Claude Opus). Broad and conceptual engineering questions (including brainstorming/ideas for future code) are fine — add a snippet or file path in context when the question is about existing code. Direct offensive-security asks (exploit development, attack tooling) and non-software domain knowledge (biology/medicine refused; neuroscience, cognitive science, AI/ML, and CS are in-scope) are refused. Prefer a dedicated local CLI over a gateway for the same model. Use ask_council to ask several models and get a synthesized answer.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
modelNoModel id for a provider that accepts one: a CLI override (grok, kimi) or a gateway model (ollama, lmstudio, atlas, ali, openrouter). Rejected for the fixed-model providers (sonnet, minimax, glm, deepseek, gemini, codex). Omit to use the server default; call `list_models(provider=…)` for a gateway catalogue.
effortNoAnswer budget / reasoning depth, honored by atlas, openrouter, grok and kimi; ignored by the other providers (atlas/openrouter default to 'deep').
contextNoOptional code snippets, file paths, or structural context.
trustedNoOperator-authorized. When true, the prohibited-use denylist runs in log-only mode: security vocabulary in the question AND in `context` is audited but does not block. Use for legitimate security-engineering work (PoC analysis, CVE research, binary hardening review) where the ask genuinely needs security terms. Takes effect ONLY when the operator has set ASK_FABLE_ALLOW_TRUSTED (env or config); otherwise the flag is ignored and the denylist still applies.
providerYesWhich backend answers. Cheap direct APIs (fixed model, no `model`): 'minimax' (MiniMax-M3), 'deepseek', 'glm'. Local CLIs: 'gemini', 'codex' (GPT-5.6 Sol), 'grok', 'kimi'. OAuth: 'sonnet'. Gateways / CLI overrides (pass `model`): 'ollama', 'lmstudio', 'atlas', 'ali' (Alibaba/Qwen), 'openrouter'. Aliases: m3=minimax, gpt=codex, xai=grok.
questionYesA specific software/engineering question to ask ONE model on its own — guarded, single-turn. `provider` selects the backend; `model` overrides the model where the backend accepts one.
context_refNoKey(s) of context saved with `context(op="write", …)` to pull in and prepend to `context`. Missing keys are reported, not fatal.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.18.0

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false, destructiveHint=false, openWorldHint=true, idempotentHint=false — a moderate safety profile. The description adds substantial context beyond this: the tool is single-turn, direct providers reject `model`, the `trusted` flag runs the denylist in log-only mode only when ASK_FABLE_ALLOW_TRUSTED is set, and content refusals (offensive security, non-software domains) are disclosed. This is rich behavioral disclosure that annotations alone do not carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Long, but the length is earned — the tool has 7 parameters, 19 provider enum values, and multiple behavioral modes. The core purpose is front-loaded in the first sentence, and every subsequent sentence carries a distinct routing, alias, or safety fact. Slightly dense but appropriately so for the complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter, 2-required tool with no output schema, the description is very complete: it covers providers, aliases, model override rules, effort semantics, context usage, multi-turn alternatives, and refusal behavior. The only minor gap is the absence of a described return/error shape, which is somewhat mitigated by the absence of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds real value on top: it classifies each provider into categories (cheap direct, local CLI, OAuth, gateway), gives the alias mapping (m3=minimax, gpt=codex, xai=grok), states which providers reject `model`, and specifies which providers honor `effort`. This is beyond what the schema enumerates, though the schema already documents each parameter competently.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a precise statement of what the tool does — 'Ask ONE model — on its own, independent of Fable — to reason about the SOFTWARE/ENGINEERING work you're doing' — and enumerates the exact reasoning domains (code structure, data/control flow, routing, architecture). It also names the sibling tools it is not (ask_council, ask) and the per-backend tools it replaces. No ambiguity about verb, resource, or scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit and exhaustive. It states when to prefer cheap direct APIs, when to pass `model` vs omit it, when to call list_models first, when to use ask_council (several models, synthesized answer), when to use ask (multi-turn with oracle='opus'), and when to use a dedicated local CLI over a gateway. It even lists refusal domains. Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.