Skip to main content
Glama

chat_ask

Sends a prompt to a supported chat platform using a bound browser, then waits for the assistant’s reply; supports new or existing chats and optional non-blocking jobs.

Instructions

Send a prompt on a platform (new or existing chat) via the bound browser and wait for the assistant reply. Prefer over chats_create+manual wait; use jobs_enqueue kind=ask or wait:false for non-blocking. Requires browsers_bind; drives live provider UI (openWorld).

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "platform": "<platform>",
      "prompt": "<prompt>"
    },
    "name": "chat_ask"
  }
}

Input Schema

NameRequiredDescriptionDefault
modeNoProvider mode/style id when applicable
waitNoDefault true; false returns job_id immediately
filesNoLocal files to attach to the prompt
modelNoProvider model id when the UI exposes a model picker
titleNoOptional title when creating a new chat
toolsNoProvider tool/plugin ids to enable
chatIdNoExisting chat id; omit to create/continue per platform defaults
promptYesUser prompt to send
togglesNoProvider UI toggle ids to enable
platformYesProvider id: chatgpt | grok | grok-x | claude | copilot | qwen | deepseek | perplexity
browserIdNoOverride bound browserId for this call only
timeout_sNoMax seconds to wait for the assistant reply (10-300)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed15 schema fields changedv1.0.4
    • addedInput schema / properties / browserId / description
      Added value: +"Override bound browserId for this call only"
    • addedInput schema / properties / chatId / description
      Added value: +"Existing chat id; omit to create/continue per platform defaults"
    • addedInput schema / properties / files / description
      Added value: +"Local files to attach to the prompt"
    • addedInput schema / properties / files / items / properties / mime / description
      Added value: +"MIME type hint"
    • addedInput schema / properties / files / items / properties / name / description
      Added value: +"Display filename override"
    • addedInput schema / properties / files / items / properties / path / description
      Added value: +"Absolute local file path to attach"
    • addedInput schema / properties / mode / description
      Added value: +"Provider mode/style id when applicable"
    • addedInput schema / properties / model / description
      Added value: +"Provider model id when the UI exposes a model picker"
    • addedInput schema / properties / platform / description
      Added value: +"Provider id: chatgpt | grok | grok-x | claude | copilot | qwen | deepseek | perplexity"
    • addedInput schema / properties / prompt / description
      Added value: +"User prompt to send"
    • addedInput schema / properties / timeout_s / description
      Added value: +"Max seconds to wait for the assistant reply (10-300)"
    • addedInput schema / properties / title / description
      Added value: +"Optional title when creating a new chat"
    • addedInput schema / properties / toggles / description
      Added value: +"Provider UI toggle ids to enable"
    • addedInput schema / properties / tools / description
      Added value: +"Provider tool/plugin ids to enable"
    • changedInput schema / properties / wait / description
      Previous value: -"default true; false returns job_id immediately"New value: +"Default true; false returns job_id immediately"
  2. First observedv1.0.3

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover openWorldHint=true and idempotentHint=false, but the description adds real context beyond them: the call is blocking by default, it drives a live provider UI, and it depends on a prior browsers_bind. It does not say what happens when timeout_s expires or whether a new provider-side chat is created as a side effect, which is the main remaining behavioral gap.

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?

Three dense, front-loaded sentences with no filler; the preferred-usage rule comes before the alternatives and the prerequisite. Minor redundancy: "drives live provider UI (openWorld)" restates openWorldHint=true from annotations, and the opaque "kind=ask" reference assumes knowledge of jobs_enqueue's schema.

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 12-parameter write tool with no output schema, the description covers the blocking/non-blocking split, the prerequisite binding, and the alternatives an agent should consider. What it omits is the response shape (chat id vs reply text) and timeout failure behavior, which the agent cannot infer from any structured field.

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

Parameters3/5

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

Schema description coverage is 100%, so every one of the 12 parameters is already documented in the schema. The description only echoes wait:false semantics and the new-vs-existing chat distinction, so the baseline 3 applies rather than a higher score.

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?

States a specific verb+resource ("Send a prompt on a platform"), the scope ("new or existing chat"), the transport ("via the bound browser") and the completion condition ("wait for the assistant reply"). It is clearly distinguishable from chats_create and jobs_enqueue, which it names as the alternatives.

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?

Gives explicit routing rules: prefer this over chats_create + manual wait, and use jobs_enqueue kind=ask or wait:false when non-blocking is wanted. It also states the prerequisite ("Requires browsers_bind") so the agent knows the ordering constraint before invoking.

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