Skip to main content
Glama

Chat with an AI model (query, prompt, test any LLM)

send_message

Chat with or query any AI model on this account: send a prompt and get the model's reply (a chat completion). Use it when the person asks for a model's answer, or to test or compare models — no API key needed. Calls a model and is billed to this account like an API call. Model ids come from list_models. Send message for one question, or messages for a conversation (the call keeps no history, so resend earlier turns). Replies stop at max_tokens (default 4000, at most 16000). The result carries the reply, model, token counts and request id as separate fields; list_requests shows what the call cost. If the result asks which project to bill, ask the person and call again with projectId.

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": {
      "model": "<model>"
    },
    "name": "send_message"
  }
}

Input Schema

NameRequiredDescriptionDefault
modelYesA model id from list_models
systemNoOptional system prompt
messageNoThe prompt. Send this OR `messages`.
messagesNoA conversation, oldest first. Send this OR `message`.
projectIdNoOnly when a previous result asked which project to bill
max_tokensNoLongest reply allowed (default 4000)
reasoning_effortNoFor reasoning models: 'low', 'medium' or 'high'

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • removedInput schema / additionalProperties
      Removed value: -false
    • removedInput schema / properties / messages / items / additionalProperties
      Removed value: -false
    • addedInput schema / properties / projectId / pattern
      Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"
  2. First observed

TDQS

A4.6/5.0
Behavior5/5

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

With readOnlyHint=false, destructiveHint=false and idempotentHint=false already set, the description goes well beyond them: it discloses that calls are billed to the account like an API call, that no conversation history is retained (so earlier turns must be resent), and that replies are truncated at max_tokens. It also describes the return payload fields and points to list_requests for cost. That is substantive behavior an agent can't infer from annotations or schema.

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?

Purpose is front-loaded and every later sentence carries operational information (billing, statelessness, truncation, return shape, projectId retry). It is a single dense block with mild redundancy in restating the max_tokens default of 4000 and the ceiling of 16000, which the schema already supplies.

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

Completeness5/5

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

Seven parameters, one required, no output schema — yet the description covers what an agent needs: where model ids come from, the two mutually exclusive input shapes, truncation limits, billing semantics, the shape of the returned fields, and how to resolve the project-selection branch. Nothing material is left for the agent to guess.

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 meaning beyond the schema by explaining the message/messages trade-off in terms of statelessness ("the call keeps no history, so resend earlier turns") and by explaining when projectId applies (only after a result asks which project to bill). The max_tokens default and ceiling are restated rather than extended, which keeps it off a 5.

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 specific verb and resource ("Chat with or query any AI model on this account") and immediately names the payload and return ("send a prompt and get the model's reply (a chat completion)"). It also implicitly separates itself from siblings like list_models and list_requests by naming them in a supporting role, so the agent can tell what this tool is versus what it isn't.

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

Usage Guidelines4/5

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

It states the triggering condition ("Use it when the person asks for a model's answer, or to test or compare models") and the absence of setup friction ("no API key needed"). It routes the agent to list_models for model ids and gives a concrete recovery flow for the "which project to bill" case. No explicit when-not exclusion, but the practical guidance is strong and actionable.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.