Skip to main content
Glama
hedging8563

TokenLab MCP Server

by hedging8563

TokenLab MCP Server

CI npm npm downloads

OpenAPI-generated Model Context Protocol server for TokenLab public model discovery, pricing, native LLM endpoints, multimodal generation, async tasks, files, embeddings, rerank, translation, resources, prompts, and the broader developer API.

It exposes public catalog tools for agents that need to choose models, inspect supported request formats, or compare pricing before calling TokenLab APIs. Credentialed tools cover text inference, image generation and editing, video, music, 3D, async task polling, embeddings, rerank, and text translation.

Generated Tool Profiles

The checked-in generated/tools.json manifest is generated from TokenLab's public OpenAPI document plus the small MCP-only overlay in contract/mcp-overlay.json. Version 0.6.17 generates 78 endpoint tools; with the two MCP-only composite discovery tools, the full profile returns 80 tools from tools/list.

Profile

Endpoint tools

Total registered tools

Model-facing schema

Coverage

catalog

4

6

Exact

Public model discovery and pricing only; no API key required

core (default)

29

31

Portable

Catalog and pricing; Chat Completions, Responses, Anthropic Messages, Gemini generateContent; images, video, music, 3D, speech and transcription; async tasks; files; embeddings, rerank, and translation

full

78

80

Portable

Every allowlisted developer API operation in the checked-in OpenAPI snapshot, including core plus response lifecycle, batches, worlds, and native model discovery

The total registered count is the number returned by tools/list. All profiles include compare_models and get_api_overview, producing totals of 6, 31, and 80 tools. Realtime and streaming-only operations are excluded because stdio MCP tool calls return one final result. API operations that accept stream fix it internally to false without exposing a boolean const to provider adapters, and the Gemini query-string API key is intentionally hidden from tool arguments.

The portable projection keeps every top-level argument but bounds deeply nested model-facing shapes. The server still validates calls against the complete generated OpenAPI schema before issuing an API request. Compatibility budgets keep core at no more than 60 KB and depth 8, and full at no more than 100 KB and depth 8 for the complete tools/list response. Tests also run the full profile through the Google AI SDK version used by the observed OpenCode/Gemini failure.

Set TOKENLAB_MCP_TOOL_PROFILE=catalog for the smallest public-only tool list or TOKENLAB_MCP_TOOL_PROFILE=full for the broad developer API. Set TOKENLAB_MCP_SCHEMA_MODE=exact only when a client needs the complete nested JSON Schema and can accept its larger/deeper tool payload. Use strict for providers that require every property to be listed in required and every object to set additionalProperties: false; complex top-level arguments are represented as JSON-encoded strings and decoded before canonical validation. Canonical tool names, descriptions, input JSON Schemas, HTTP bindings, content types, auth requirements, and task behavior can be inspected in generated/tools.json.

The smaller generated/public-contract.json is the machine-readable projection used by TokenLab's website and other public consumers. It contains package identity, profile counts, core tool layers, resources, prompts, and source hashes without copying all endpoint schemas.

Related MCP server: gliana-mcp-remote

Native MCP Features

  • JSON tool responses include structuredContent while retaining serialized text for older clients.

  • Generated tools expose human-readable titles, standard read-only/destructive/idempotent/open-world annotations, and response request IDs when available.

  • Tool schemas are published and validated directly as JSON Schema. The runtime does not round-trip generated tool schemas through Zod; exact mode is byte-shape equivalent to the generated canonical schema.

  • Three resources expose the live API overview, the package's OpenAPI snapshot, and the compact MCP public contract.

  • choose_tokenlab_model and build_tokenlab_request prompts guide agents to use live model truth and preserve native endpoint shapes.

  • Server instructions tell clients to confirm billable or destructive operations and treat external model/API output as untrusted content.

Run

npm install
npm start

Install from npm:

npx -y @tokenlabai/mcp-server

Agent-assisted installers can follow llms-install.md for a credential-safe setup and verification flow.

Run in Docker:

docker build -t tokenlab-mcp-server .
docker run --rm -i tokenlab-mcp-server

Add -e TOKENLAB_API_KEY when using credentialed API tools. Public catalog tools do not require a key.

Claude Desktop style config:

{
  "mcpServers": {
    "tokenlab-model-catalog": {
      "command": "npx",
      "args": ["-y", "@tokenlabai/mcp-server"],
      "env": {
        "TOKENLAB_API_BASE": "https://api.tokenlab.sh"
      }
    }
  }
}

No TokenLab API key is required for public catalog and pricing operations. Set TOKENLAB_API_KEY when credentialed tools should call TokenLab APIs. Generated tools preserve the OpenAPI request shape for OpenAI-compatible and native endpoints instead of flattening them into a shared prompt format.

Multipart operations accept local file paths. Small image and audio responses are returned as native MCP content; larger or other binary responses are written to TOKENLAB_ARTIFACT_DIR and returned as a path with MIME type and byte count.

Sync and Async Media Results

Video, music, and 3D creation tools always return an async task. Image generation and editing may return a completed result or an async task depending on the selected model and request.

Media tools preserve the complete TokenLab API response under response and add a normalized delivery summary:

{
  "delivery": {
    "mode": "async",
    "task_id": "ldtask_...",
    "status": "pending",
    "poll_url": "/v1/tasks/ldtask_...",
    "terminal": false,
    "next_tool": "get_task_status"
  },
  "response": {}
}

Use delivery.mode instead of assuming all image requests are synchronous. For async tasks, call get_task_status with { "id": delivery.task_id } until delivery.terminal is true. Completion is determined from status, not from an optional progress field.

Environment

  • TOKENLAB_API_BASE: optional, defaults to https://api.tokenlab.sh

  • TOKENLAB_API_KEY: optional; required for text inference, multimodal generation, async task, embedding, rerank, and translation tools

  • TOKENLAB_MCP_TOOL_PROFILE: optional, catalog, core (default), or full

  • TOKENLAB_MCP_SCHEMA_MODE: optional, portable, exact, or strict; defaults to the selected profile's tested mode

  • TOKENLAB_REQUEST_TIMEOUT_MS: optional request timeout in milliseconds, defaults to 120000

  • TOKENLAB_MCP_MAX_FILE_BYTES: optional maximum local upload size per file, defaults to 104857600 (100 MiB)

  • TOKENLAB_MCP_INLINE_BYTES: optional maximum binary/JSON response size returned inline, defaults to 2097152 (2 MiB)

  • TOKENLAB_ARTIFACT_DIR: optional output directory for non-inline response artifacts, defaults to the OS temp directory under tokenlab-mcp

For Chat Completions image inputs, prefer byte-accurate data URLs such as data:image/png;base64,.... If an MCP caller labels a recognized PNG, JPEG, WebP, or GIF payload as application/octet-stream, the server corrects that generic MIME before forwarding. An unrecognized generic binary payload is rejected locally with a precise input error.

Contract Sync

The public OpenAPI document is the API contract source. The overlay contains only MCP-specific choices: profile exposure, stable tool aliases, secret omission, non-streaming constraints, content-type variants, async task semantics, and the compact public projection consumed by the website and docs gates.

npm run contract:source-check # compare the snapshot with the live canonical OpenAPI (read-only)
npm run contract:check        # check generated output against the checked-in snapshot (offline)
npm run contract:sync         # fetch OpenAPI and regenerate; refuses dirty outputs or a stale branch
npm test                      # compile profiles and test exact/portable/strict schemas, provider conversion, routing, tasks, files, and binary output

Always run git pull --ff-only before a manual contract sync. contract:check proves internal consistency only; contract:source-check proves freshness against the canonical source. The scheduled Sync TokenLab OpenAPI contract workflow runs the full write sequence and commits only the verified OpenAPI snapshot and generated manifest to main. A failed fetch, stale local branch, dirty generated output, generation error, schema compilation error, or test leaves the tracked contract unchanged.

MCP Registry Metadata

This repository includes server.json for the official MCP Registry.

Release metadata:

  • npm package: @tokenlabai/mcp-server@0.6.17

  • MCP registry name: io.github.hedging8563/tokenlab

  • package.json.mcpName: io.github.hedging8563/tokenlab

For a new release:

  1. Bump the matching versions in package.json, package-lock.json, and server.json.

  2. Push a matching tag such as v0.6.0.

  3. The publish workflow tests and publishes npm through trusted publishing, then publishes the MCP Registry entry through GitHub Actions OIDC.

The same workflow can be run manually from main to republish only the current MCP Registry metadata. No npm or MCP Registry token is stored in GitHub.

Security

Use the catalog profile when no credentialed tools are needed. Keep TOKENLAB_API_KEY in the local MCP client's secret environment, enable human confirmation for billable and destructive calls, and review tool annotations before granting persistent approval. Do not send a TokenLab API key to an untrusted hosted MCP server.

Available Tools

31 tools
cancel_taskCancel async taskA
DestructiveIdempotent

Cancel async task Cancels a queued asynchronous task when cancellation is supported for the selected task. Cancellation currently supports queued Seedance video tasks (seedance-1.5-pro, seedance-2.0, and seedance-2.0-fast) while they are still waiting to run. Tasks that are already processing, completed, failed, expired, or unsupported are not cancelled.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe async task ID returned by `id` / `task_id`, or embedded in `poll_url`

TDQS

A4.5/5.0
Behavior4/5

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

Annotations indicate destructive mutation (readOnlyHint=false, destructiveHint=true). Description adds specific context on cancellation conditions and supported tasks. No contradictions.

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

Conciseness5/5

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

Two sentences with no waste. First sentence states primary action, second provides necessary constraints. Front-loaded.

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?

For a simple cancel operation with one parameter and no output schema, the description covers all necessary behavioral details, including restrictions and supported task types.

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 describes the single parameter 'id' with full coverage. Description adds no extra parameter details beyond what schema provides. Baseline score of 3 applies.

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?

Clearly states the tool cancels a queued async task, specifies supported task types (Seedance video tasks) and states. Distinguishes from siblings as no other cancel tool exists.

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?

Explicitly describes when to use (queued tasks with cancellation support) and when not (already processing, completed, failed, expired, unsupported). Provides concrete examples of supported task IDs.

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

compare_modelsCompare TokenLab ModelsA
Read-onlyIdempotent

Compare public TokenLab model details and pricing for several model IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelsYes
include_rawNo

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already indicate the tool is read-only, idempotent, and non-destructive. The description adds no further behavioral context (e.g., output format, rate limits, or open-world implications). With high annotation coverage, the description's lack of extra detail is acceptable, earning a baseline 3.

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

Conciseness5/5

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

The description is a single, efficient sentence with no wasted words. It directly conveys the tool's purpose without extraneous information.

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?

Given the tool's simplicity, two parameters, and comprehensive annotations, the description covers the essential functionality of comparing model details and pricing. It does not describe the return structure, but the absence of an output schema makes this less critical. Slightly incomplete due to the missing parameter explanation, but overall adequate.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It clarifies that 'models' is a list of model IDs and that the tool compares details and pricing. However, it fails to explain 'include_raw', leaving one of two parameters undocumented. This partial coverage justifies a score of 2.

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 uses a specific verb 'Compare' and identifies the resource 'public TokenLab model details and pricing' for 'several model IDs'. This clearly distinguishes the tool from siblings such as 'get_model' (single) and 'list_models' (all).

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

Usage Guidelines3/5

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

The description implies usage for comparing multiple models but does not explicitly state when to use it versus alternatives or provide when-not-to-use guidance. A minimal viable score is appropriate as the context is implied but not articulated.

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

create_3d_modelCreate 3D model generation taskC

Create 3D model generation task Creates a 3D model generation task using Tripo3D. Returns a task ID for polling.

ParametersJSON Schema
NameRequiredDescriptionDefault
seedNoSeed for deterministic-compatible providers.
userNoEnd-user identifier.
imageNoBase64 image for image-to-3D
modelNotripo-h3.1
styleNoStyle hint for compatible 3D model families.
formatNo
promptYes3D model description
qualityNo
image_urlNo

TDQS

C2.7/5.0
Behavior3/5

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

Annotations (non-readOnly, non-idempotent) are consistent with the description stating a creation action. The description adds that it uses Tripo3D and returns a task ID, but does not disclose side effects, authorization needs, or polling behavior details. With annotations present, the bar is lower, but the description adds minimal context beyond the annotations.

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

Conciseness2/5

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

The description is short but contains a redundant phrase ('Create 3D model generation task' repeated). It is not optimally structured and could be more concise without losing information.

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

Completeness2/5

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

With 9 parameters (1 required) and no output schema, the description only mentions returning a task ID. It does not explain how to poll for results, the role of optional parameters, or how they affect the output. This is insufficient for a complex tool.

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

Parameters2/5

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

Schema description coverage is 56% (5 of 9 params have descriptions). The description does not document any parameters or add meaning beyond what the schema already provides. It fails to compensate for undocumented parameters like model, format, quality, and image_url.

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

Purpose4/5

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

The description clearly states that the tool creates a 3D model generation task using Tripo3D and returns a task ID for polling. This distinguishes it from siblings like create_image or create_video. However, the first sentence is slightly redundant, repeating 'Create 3D model generation task' twice.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool compared to siblings (e.g., create_image, create_video). There is no mention of prerequisites, when not to use it, or alternatives.

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

create_anthropic_messageCreate message (Anthropic-compatible)A

Create message (Anthropic-compatible) Creates a model response using Anthropic's native request format. Supports Claude models with vision and streaming. Authentication: Use x-api-key header or Authorization: Bearer header.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelYesModel to use (e.g., claude-sonnet-4-6)
toolsNoTool definitions available to the model.
top_kNo
top_pNo
systemNoSystem prompt
messagesYesMessages in the conversation
metadataNoRequest metadata echoed into downstream logs or traces when supported.
thinkingNoThinking configuration for compatible Anthropic-style models.
max_tokensYesMaximum number of tokens to generate
temperatureNo
tool_choiceNoTool choice policy or explicit tool selection.
service_tierNoService tier hint for compatible providers.
stop_sequencesNo
stream_optionsNoStreaming options such as usage chunk inclusion.

TDQS

A4.1/5.0
Behavior4/5

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

Discloses authentication method and support for vision/streaming beyond annotations. However, does not describe response format, side effects of repeated calls, or rate limits, which would add further value.

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

Conciseness5/5

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

Three sentences covering purpose, capabilities, and authentication with no redundancy. Every sentence adds value, making it highly efficient.

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

Completeness3/5

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

Adequate for a complex tool with 14 parameters and no output schema, but missing details on response format, error handling, and how to construct nested inputs like messages and tools. More context would improve completeness.

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?

With 71% schema coverage, descriptions cover most parameters. The description adds context about vision and streaming, hinting at relevant parameters, but does not explain all complex nested object structures in detail.

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?

Clearly states it creates an Anthropic-compatible message using native format. Differentiates from siblings like create_chat_completion (OpenAI) and create_gemini_content by specifying Anthropic's format and Claude models.

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

Usage Guidelines3/5

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

Implies usage for Anthropic models with vision and streaming, but does not explicitly state when to use this tool over alternatives or provide exclusions. Lacks explicit 'when-not-to-use' guidance.

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

create_chat_completionCreate chat completionA

Create an OpenAI-compatible chat completion. For inline image_url data URLs, declare the byte-accurate image MIME type. The MCP boundary corrects recognized PNG, JPEG, WebP, and GIF payloads declared as application/octet-stream and rejects unrecognized generic binary image payloads before sending a billable request.

ParametersJSON Schema
NameRequiredDescriptionDefault
nNoNumber of completions to generate
seedNoSeed for deterministic generation
stopNoStop sequences
userNoEnd-user identifier for abuse detection
audioNoAudio output configuration when requesting audio modality.
modelYesID of the model to use (e.g., gpt-5.4, claude-sonnet-4-6)
toolsNoList of tools the model may call
top_pNoNucleus sampling probability
logprobsNoWhether to return log probabilities for output tokens.
messagesYesA list of messages comprising the conversation
functionsNoDeprecated function definitions retained by the official Chat Completions contract.
logit_biasNoPer-token logit bias map.
max_tokensNoMaximum number of tokens to generate
modalitiesNoRequested output modalities such as text or audio.
predictionNoPrediction hints for providers that support draft or speculative decoding.
temperatureNoSampling temperature (0-2)
tool_choiceNoControls which function is called
service_tierNoService tier hint for compatible providers.
top_logprobsNoNumber of most likely tokens to return at each position when logprobs is enabled.
function_callNoDeprecated function-call selection retained by the official Chat Completions contract.
stream_optionsNoStreaming options such as usage chunk inclusion.
response_formatNoResponse format specification
presence_penaltyNoPresence penalty (-2 to 2)
reasoning_effortNoReasoning effort hint for compatible model families.
frequency_penaltyNoFrequency penalty (-2 to 2)
parallel_tool_callsNoWhether the model may issue parallel tool calls.
translation_optionsNoLanguage settings for models that translate audio or video through Chat Completions.
max_completion_tokensNoMaximum completion tokens for newer reasoning-enabled model families

TDQS

A4.3/5.0
Behavior4/5

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

Beyond annotations (readOnlyHint=false, destructiveHint=false), the description reveals that the MCP boundary corrects recognized image payloads and rejects unrecognized generic binary before billing, adding valuable behavioral insight not captured in annotations.

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

Conciseness5/5

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

The description is three sentences with front-loaded purpose and no redundant information. Every sentence contributes essential guidance.

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

Completeness3/5

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

While the tool is complex (28 parameters, nested objects, no output schema), the description focuses narrowly on image handling. It lacks guidance on streaming, error handling, or expected return values, leaving gaps for an AI agent.

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?

With 100% schema description coverage, the baseline is 3. The description adds value by specifying inline image handling for the messages parameter, a critical detail beyond the schema's generic descriptions.

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 clearly states 'Create an OpenAI-compatible chat completion' with a specific verb and resource. It also provides precise handling instructions for image data URLs, distinguishing it from sibling tools like 'create_anthropic_message' or 'create_gemini_content'.

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?

The description gives clear context for when to use this tool (chat completions with OpenAI-compatible models) and specific guidance on image MIME types. However, it does not explicitly state when not to use it or mention alternatives.

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

create_embeddingCreate embeddingsB

Create embeddings Creates an embedding vector representing the input text.

ParametersJSON Schema
NameRequiredDescriptionDefault
userNoEnd-user identifier
inputYesInput text(s) or token array(s) to embed.
modelYesID of the model to use
dimensionsNoOutput vector dimensions
encoding_formatNoOutput formatfloat

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already indicate this is a non-read-only, non-destructive, non-idempotent operation. Description confirms it creates an embedding but adds no additional behavioral context like cost, storage, or side effects. Adequate but not enhanced.

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

Conciseness2/5

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

Description is one sentence but begins with a redundant repetition of the title ('Create embeddings Creates...'). This wastes words without adding value. More concise phrasing would improve.

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

Completeness2/5

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

No output schema is provided, and the description does not explain what is returned (e.g., vector, dimensions). Given the tool has 5 parameters and no return value documentation, the description is incomplete for an agent to fully understand behavior.

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 covers 100% of parameters with descriptions. Tool description adds no extra meaning beyond what's in the schema (e.g., just mentions 'input text'). Baseline score of 3 is appropriate.

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?

Description explicitly states 'Creates an embedding vector representing the input text,' clearly identifying the verb (creates) and resource (embedding vector). It distinguishes from sibling tools like create_multimodal_embedding by specifying 'text' input.

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

Usage Guidelines3/5

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

Description implies usage for text embedding but provides no explicit guidance on when to use this tool versus alternatives such as create_multimodal_embedding or rerank_documents. No 'when to use' or 'when not to use' notes.

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

create_gemini_contentGenerate content (Gemini-compatible)A

Generate content (Gemini-compatible) Generates content using the native Gemini GenerateContent shape. This route is exposed only when the model details advertise Gemini requests and a same-protocol route is currently available. ProtoJSON lowerCamelCase and original proto snake_case field names are preserved. Unknown fields are forwarded best-effort and support is determined by the selected provider. Authentication: Use ?key= query parameter, x-goog-api-key header, or Authorization: Bearer header.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelYesModel name (e.g., gemini-2.5-pro)
toolsNoGemini tools. Tool types and combinations are interpreted by the selected service.
contentsYesConversation contents
toolConfigNoGemini tool configuration such as functionCallingConfig.
tool_configNoOriginal proto field-name spelling of toolConfig.
cachedContentNoGemini cached content resource name for compatible models.
cached_contentNoOriginal proto field-name spelling of cachedContent.
safetySettingsNo
safety_settingsNoOriginal proto field-name spelling of safetySettings.
generationConfigNo
generation_configNoOriginal proto field-name spelling of generationConfig.
systemInstructionNo
system_instructionNoOriginal proto field-name spelling of systemInstruction.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations indicate a write operation (readOnlyHint=false) with no destructiveness. The description adds authentication requirements, preservation of field naming styles (lowerCamelCase and snake_case), and best-effort forwarding of unknown fields. It does not detail rate limits or idempotency.

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?

The description is efficient, front-loading purpose and conditions, but could be more structured with bullet points for readability. No superfluous sentences.

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?

Given the complexity (13 parameters, nested objects) and absence of output schema, the description covers key contextual details: route availability, naming conventions, authentication, and forwarding behavior. It lacks provider-specific error handling or rate limit information, but remains fairly complete.

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 77% (high), so the description does not need to redocument parameters. It adds value by explaining authentication parameters (key, headers), naming convention duality, and provider-specific support for unknown fields.

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 title and description clearly state this tool generates content using the Gemini GenerateContent shape, distinguishing it from siblings like create_chat_completion and create_anthropic_message which serve different model families.

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?

The description specifies the route is exposed only when model details advertise Gemini requests and a same-protocol route is available, setting a clear precondition. It also explains naming conventions and authentication methods, though it lacks explicit exclusions or alternatives.

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

create_imageCreate imageC

Create image Creates an image given a prompt.

ParametersJSON Schema
NameRequiredDescriptionDefault
nNoNumber of images to generate
seedNoSeed for deterministic-compatible image models.
sizeNoImage size. Defaults are model-specific. For gpt-image-2, omit this field or use auto for automatic sizing, or send WIDTHxHEIGHT; custom dimensions must both be multiples of 16, longest edge <= 3840px, long/short ratio <= 3:1, and total pixels between 655,360 and 8,294,400.
userNoEnd-user identifier
asyncNoReturn a task before the final image is ready when the selected model supports public async execution.
modelYesModel to use. Send this explicitly; query GET /v1/models?recommended_for=image for current recommendations.
styleNoOptional model-specific style selector. Only send when the selected model documents support for this parameter.
promptYesImage description
qualityNoImage quality. Defaults and accepted values are model-specific. For gpt-image-2, omit this field or use auto for automatic quality, or send low, medium, or high. Other image families may use provider-specific values.
mask_urlNoOptional mask URL for compatible image operations.
image_urlNoSingle reference image URL for compatible image-to-image models.
operationNoPublic image operation family. Reference-image models use image-to-image with image_url, image_urls, or reference_image_urls.
backgroundNoBackground handling for compatible image flows. For gpt-image-2 generation and edits, accepted values are auto and opaque; transparent is not supported. Other models may support different values.
image_urlsNoReference image URLs for compatible image-to-image models.
moderationNoModeration strictness for compatible image models such as gpt-image-2
resolutionNoResolution selector for compatible image model families.
compressionNoAlias for output_compression when supported by the selected model
aspect_ratioNoAspect-ratio selector for compatible image model families.
expand_promptNoAsk compatible models to expand or enhance the prompt.
output_formatNoOutput image format for compatible image models such as gpt-image-2
negative_promptNoContent to avoid for compatible image models.
response_formatNoResponse formaturl
output_compressionNoOutput compression level from 0 to 100 for compressed formats
reference_image_urlsNoAlias used by compatible reference-image model families.

TDQS

C2.7/5.0
Behavior2/5

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

Annotations are limited (readOnlyHint=false, no destructive hint). Description adds minimal behavioral info: only that it creates an image from a prompt. Does not disclose async capability, model-specific behaviors, or that it can return multiple images. For a mutation tool, more transparency expected.

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

Conciseness3/5

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

Single sentence is concise but wastes words repeating the name. Could be more structured to front-load key info like 'Generates images from prompts with model-specific options.'

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

Completeness1/5

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

Very incomplete for a 24-parameter tool. No mention of return format, async option, model recommendations, or that many parameters are model-specific. Only covers the bare minimum.

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 coverage is 100%; description adds no additional meaning beyond 'given a prompt'. Baseline 3 is appropriate as schema already documents parameters.

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

Purpose4/5

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

States verb 'create' and resource 'image' clearly. However, it doesn't distinguish from sibling 'create_image_file' which likely creates a file object rather than returning image data. The description is adequate but not specific about scope.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives like edit_image or create_image_file. No context about required model selection or prerequisites.

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

create_image_fileCreate imageC

Create image Creates an image given a prompt.

ParametersJSON Schema
NameRequiredDescriptionDefault
nNo
seedNo
sizeNo
userNo
asyncNo
imageNoLocal reference image upload for compatible image-to-image models. Pass local file path.
modelYesModel to use. Send this explicitly.
styleNo
promptYesImage description
qualityNo
mask_urlNo
operationNo
backgroundNo
image_urlsNoComma-separated reference image URLs.
moderationNo
resolutionNo
compressionNo
aspect_ratioNo
expand_promptNo
output_formatNo
negative_promptNo
response_formatNo
output_compressionNo
reference_image_urlsNoComma-separated reference image URLs for compatible model families.

TDQS

C2.1/5.0
Behavior3/5

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

Annotations already indicate non-readonly, non-idempotent, non-destructive, open-world. The description adds no new behavioral context beyond 'creates an image', which is consistent but redundant. No contradiction found.

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

Conciseness3/5

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

The description is concise, but it wastes words by repeating the title. While short, it could be more informative without increasing length.

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

Completeness1/5

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

Given the tool's complexity (24 parameters, no output schema, minimal annotations), the one-sentence description is grossly inadequate. It fails to address usage context, return values, or operational details.

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

Parameters1/5

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

With 24 parameters and only 21% schema description coverage, the description provides no parameter details. It does not explain any parameter's purpose, thus failing to compensate for the schema's low coverage.

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

Purpose2/5

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

The description merely restates the tool's name ('Create image Creates an image') without specifying what distinguishes it from sibling tools like 'create_image' or 'edit_image'. It lacks a clear verb-resource pair that differentiates its scope.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives (e.g., create_image, edit_image), nor any conditions for appropriate use. The agent receives no contextual decision support.

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

create_multimodal_embeddingCreate multimodal embeddingsA

Create multimodal embeddings Creates embeddings for multimodal input items. Text input is generally available; image input may require feature enablement.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYes
modelYesModel to use for multimodal embeddings
dimensionsNoOptional embedding dimensionality when supported by the selected model

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already indicate this is a write operation that is not read-only, not idempotent, and not destructive. The description adds the availability nuance for images, but does not disclose other behaviors such as rate limits, storage of embeddings, or return format. Given annotations, the description provides marginal additional transparency.

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

Conciseness5/5

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

The description is extremely concise: two sentences with no redundant or filler content. The first sentence states the purpose, the second adds a critical availability detail. Every word serves a purpose.

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

Completeness2/5

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

The description lacks essential context: there is no mention of return values (e.g., embedding vectors or IDs), error handling, or usage limitations. Since there is no output schema, the description should explain what the tool returns. The tool is moderately complex with 3 parameters, and the description fails to cover these aspects.

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 67%, which is below the 80% threshold, so the description should compensate. The description adds the availability nuance for text vs image input, but does not elaborate on other parameter constraints or formats. The schema already describes most parameter details, so the description provides minimal added meaning.

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 clearly states the tool creates embeddings for multimodal input items, which distinguishes it from the sibling tool create_embedding (presumably text-only). The verb 'create' and resource 'multimodal embeddings' are specific and unambiguous.

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?

The description provides context on when to use text vs image input, noting potential feature enablement requirements for images. However, it lacks explicit comparisons to sibling tools like create_embedding or guidance on when not to use this tool.

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

create_musicCreate music generation taskC

Create music generation task Creates a music generation task using Suno. Returns a task ID for polling.

ParametersJSON Schema
NameRequiredDescriptionDefault
mvNoOfficial Suno model version. Required when creating music (action omitted or MUSIC); omit for lyrics-only requests.
tagsNo
modelNosuno_music
titleNo
actionNo
promptNoMusic description. Required for music, lyrics, upload-cover, and upload-extend requests; omit for add-instrumental.
audio_urlNoPublicly reachable reference or uploaded audio URL. Defaults to upload-cover when audio_operation is omitted.
continue_atNoTimestamp in seconds for continuation flows. Required when audio_operation is upload-extend.
negative_tagsNoStyles to avoid. Required when audio_operation is add-instrumental.
audio_operationNoUploaded-audio mode. upload-extend requires continue_at; add-instrumental requires audio_url, title, tags, and negative_tags.
continue_clip_idNoClip ID to continue when extending an existing generation.
make_instrumentalNoGenerate instrumental output without vocals.

TDQS

C2.8/5.0
Behavior3/5

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

Annotations indicate readOnlyHint=false (write), destructiveHint=false, and openWorldHint=true. The description adds that it returns a task ID for polling, implying asynchronous behavior. No contradiction with annotations found, but it does not disclose potential side effects, rate limits, or failure modes.

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

Conciseness3/5

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

The description consists of two sentences but is redundant: the first sentence repeats the title. It could be streamlined to one sentence without losing meaning.

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

Completeness2/5

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

Given the complexity (12 parameters, no output schema), the description is too sparse. It only mentions returning a task ID but does not explain how to use it, error handling, or success criteria. Essential context is missing for effective use.

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

Parameters2/5

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

With 67% schema coverage (8 of 12 parameters described), the description itself adds no parameter information. It does not explain any parameter meanings beyond what the schema already provides, failing to compensate for the missing documentation.

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

Purpose4/5

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

The description states the tool creates a music generation task using Suno and returns a task ID for polling. It clearly identifies the verb and resource, and the context of 'music' distinguishes it from other creation tools like create_image or create_video. However, it could be more specific about the nature of the task.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like create_audio or other creation tools. There is no mention of prerequisites, ideal use cases, or situations where it should not be used.

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

create_responseCreate response (OpenAI Responses API)A

Create response (OpenAI Responses API) Creates a response using the native OpenAI Responses API shape. The model details must advertise the Responses request format and a same-protocol route must be currently available; model names and providers do not imply availability. Unknown request fields are forwarded on a best-effort basis and remain subject to the selected provider's support.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoText formatting options.
inputNoInput content as a string or structured item array.
modelYesModel to use
storeNoWhether the response is stored for later retrieval.
toolsNoTools available to the model. Tool types and combinations are validated by the selected service.
top_pNoNucleus sampling probability.
promptNoReference to a reusable prompt template and variables.
includeNoAdditional response sections to include when supported.
metadataNoRequest metadata.
reasoningNoReasoning configuration.
backgroundNoWhether to run the response asynchronously.
truncationNoTruncation strategy for long conversations.
temperatureNo
tool_choiceNoTool choice policy or explicit tool selection.
instructionsNoSystem instructions
service_tierNoService tier hint for compatible providers.
stream_optionsNoResponses streaming options.
max_output_tokensNoMaximum output tokens
parallel_tool_callsNoWhether the model may issue parallel tool calls.
previous_response_idNoID of a previous response to continue.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already indicate non-read-only, open-world, non-idempotent, non-destructive. Description adds context about unknown field forwarding and model availability, but no additional behavioral traits like cost or rate limits.

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

Conciseness3/5

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

Two dense sentences with redundant title repetition. Information is valuable but could be more structured and concise.

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?

Given high schema coverage and annotations, description covers key behavioral aspects. Lacks overview of typical use cases vs. siblings, but sufficient for tool understanding.

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 95%, so baseline 3 applies. Description does not add parameter-level information beyond what the schema provides.

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 clearly states it creates a response using the OpenAI Responses API, distinguishing it from siblings like create_chat_completion by specifying the required model advertisement and route availability.

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?

Provides clear conditions for use (model must advertise Responses format, same-protocol route available) and describes best-effort forwarding of unknown fields, but does not explicitly state when not to use or name alternatives.

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

create_speechCreate speechB

Create speech Generates audio from the input text (Text-to-Speech).

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYesText to synthesize.
modelNoTTS model. Query GET /v1/models?recommended_for=tts for the current shortlist.tts-1
speedNoSpeech speed for model families that support it.
voiceNoVoice selector for OpenAI-compatible, Gemini, xAI, and MiniMax-compatible routes. Some MiniMax routes also accept voice_id.
promptNoOptional speaking style prompt for Gemini TTS models.
voice_idNoProvider-native voice selector for MiniMax-compatible speech models.
temperatureNoSampling temperature for Gemini-compatible TTS routes.
instructionsNoOptional style or delivery instructions for OpenAI-compatible TTS models that support them.
language_codeNoOptional language code for Gemini, xAI, and compatible TTS routes.
stream_formatNoTokenLab delivery format. stream_format=sse is not supported for tts-1 or tts-1-hd.audio
response_formatNoAudio format. Common values include mp3, opus, aac, flac, wav, and pcm. Supported values vary by model family.

TDQS

B3.3/5.0
Behavior3/5

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

Annotations indicate this is a non-read-only, non-destructive operation. The description accurately describes generation, but does not add behavioral context beyond the annotations, such as cost, latency, or side effects like file creation.

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?

The description is a single concise sentence that immediately conveys the tool's primary function. While very brief, it is appropriately front-loaded and contains no superfluous information.

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

Completeness2/5

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

Given 11 parameters and no output schema, the description lacks crucial context such as return type (e.g., audio file), format details, or expected behavior for different model families. More detail is needed for practical use.

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 the schema fully documents all 11 parameters. The tool description adds no additional meaning to parameters, maintaining the baseline score for high coverage.

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 title 'Create speech' and description 'Generates audio from the input text (Text-to-Speech)' clearly state the verb-resource relationship and the tool's specific function, distinguishing it from sibling tools like transcribe_audio or create_music.

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

Usage Guidelines2/5

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

No usage guidance is provided. The description does not explain when to use this tool vs. alternatives (e.g., transcribe_audio) or mention any prerequisites, such as required voice model availability.

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

create_videoCreate video generation taskB

Create video generation task Creates an asynchronous video generation task. The response returns a canonical task ID and usually a preferred poll_url; clients should poll poll_url first, or use /v1/tasks/{id} as the fixed status endpoint.

ParametersJSON Schema
NameRequiredDescriptionDefault
fpsNoFrames per second
seedNoSeed for reproducibility. Seedance uses -1 for random seed when omitted.
sizeNoModel-specific size tier for compatible video models.
userNoEnd-user identifier
draftNoSeedance 1.5 Pro draft workflow flag. Only supported by draft-capable Seedance routes; draft=true creates a low-cost draft task.
imageNoInline image as a data URL (for example, data:image/png;base64,...). Prefer image_url for broader production compatibility. When the selected Seedance model can use the TokenLab material library, TokenLab prepares this image input as a reusable material before generation; if it is not ACTIVE within 60 seconds, the API returns 409 seedance_material_preparing with auto_material_asset_ids. If the selected model cannot use the material library, ordinary image inputs continue on the regular image pa…
modelNoModel to use (e.g., veo3.1, kling-v1)
ratioNoCompatibility alias for aspect_ratio. If both ratio and aspect_ratio are provided, they must match.
framesNoOptional frame count for compatible video models. Seedance 2.0 models and Seedance 1.5 Pro do not support this field.
promptNoVideo description
secondsNoAlias of duration used by compatible request shapes. Seedance models also accept -1 to let the model choose within its supported duration range; duration and seconds must match when both are provided.
task_idNoTask identifier used by some continuation, extension, or derivative flows.
durationNoVideo duration in seconds. Seedance models also accept -1 to let the model choose within its supported duration range; TokenLab estimates billing conservatively for that mode.
priorityNoOptional task priority for compatible video models. Do not combine priority with service_tier=flex.
audio_urlNoPublicly reachable audio URL for model-specific audio-conditioned video flows.
cfg_scaleNoPrompt adherence strength (0-20) for models that expose CFG-style control.
end_imageNoLast frame image input for start-end-to-video flows. Seedance accepts a public image reference or asset://asset-YYYYMMDDHHMMSS-xxxxx for an ACTIVE TokenLab material owned by the requesting organization. When the selected Seedance model can use the TokenLab material library, TokenLab prepares ordinary image input as a reusable material before generation; if it is not ACTIVE within 60 seconds, the API returns 409 seedance_material_preparing with auto_material_asset_ids. If the selected model cann…
extend_atNoModel-specific extension start offset used by some video-extension flows.
image_urlNoPublicly reachable image URL for image-to-video generation, or asset://asset-YYYYMMDDHHMMSS-xxxxx for an ACTIVE TokenLab Seedance material used as the first frame. Preferred over inline base64 in production. TokenLab verifies material ownership. When the selected Seedance model can use the TokenLab material library, TokenLab prepares ordinary image input as a reusable material before generation; if it is not ACTIVE within 60 seconds, the API returns 409 seedance_material_preparing with auto_mat…
operationNoRequested video operation. If omitted, TokenLab infers the operation from the provided inputs. Explicit operation is recommended for production reliability.
video_urlNoPublicly reachable video URL for video-to-video style flows and motion-control models.
watermarkNoOptional watermark toggle for models that expose it. Seedance defaults to false when omitted.
audio_urlsNoCompatibility array for audio-conditioned flows when multiple audio references are supported by the routed model family. TokenLab currently accepts up to 3 reference audios.
image_urlsNoImage URL array for compatible image-conditioned video flows. This endpoint currently allows up to 9 entries. When the selected Seedance model can use the TokenLab material library, TokenLab prepares this image input as reusable material before generation; if it is not ACTIVE within 60 seconds, the API returns 409 seedance_material_preparing with auto_material_asset_ids. If the selected model cannot use the material library, ordinary image inputs continue on the regular image path.
resolutionNoVideo resolution. Seedance defaults to 720p when omitted; available values are model-dependent.
video_urlsNoCompatibility array for video-conditioned flows when multiple input videos are supported by the routed model family. TokenLab currently accepts up to 3 reference videos.
effect_typeNoModel-specific effect selector for specialized editing flows.
outputAudioNoCompatibility alias for output_audio. If both are provided, they must match.
start_imageNoFirst frame image input for start-end-to-video flows. Seedance accepts a public image reference or asset://asset-YYYYMMDDHHMMSS-xxxxx for an ACTIVE TokenLab material owned by the requesting organization. When the selected Seedance model can use the TokenLab material library, TokenLab prepares ordinary image input as a reusable material before generation; if it is not ACTIVE within 60 seconds, the API returns 409 seedance_material_preparing with auto_material_asset_ids. If the selected model can…
aspect_ratioNoCanonical video aspect ratio. Seedance defaults to adaptive when omitted. The ratio alias is accepted for compatibility.
camera_fixedNoOptional fixed-camera selector for compatible video models. Seedance 2.0 models do not support this field.
extend_timesNoModel-specific extension multiplier or repeat count used by some video-extension flows.
output_audioNoCanonical model-dependent audio output toggle. Veo 3 and Seedance requests default to true when omitted. Kling 3.0 Video accepts this selector for non-element-reference requests and maps it to the compatible sound control; omitted Kling requests default to silent output. Do not combine output_audio=true with kling_elements. The aliases outputAudio and generate_audio are accepted for compatibility and must match when provided together.
service_tierNoOptional service tier for compatible video models. service_tier=default is accepted as a no-op for Seedance 2.0 models; service_tier=flex is rejected where the selected model does not support it.
draft_task_idNoSeedance 1.5 Pro draft promotion task ID. Provide this instead of draft=true to create the final video from a previous draft task.
generate_audioNoCompatibility alias for output_audio. If more than one audio toggle is provided, all values must match.
kling_elementsNoKling 3.0 element references for kling-3.0-video image-conditioned requests. Define 1-3 elements and reference them in the prompt with @name. Each element requires 2-4 image URLs in element_input_urls. Do not combine kling_elements with output_audio=true; omit output_audio or set it to false for element-reference requests.
motion_strengthNoMotion intensity (0-1) for models that expose it.
negative_promptNoWhat to avoid in the video
reference_imagesNoCanonical public reference-image field for reference-to-video conditioning. This endpoint currently allows up to 9 URLs, compatible data URLs, or for Seedance, asset://asset-YYYYMMDDHHMMSS-xxxxx URIs for ACTIVE TokenLab materials owned by the requesting organization; model-specific limits can be lower. xAI grok-imagine-video accepts up to 7 image references with duration capped at 10 seconds; grok-imagine-video-1.5 and grok-imagine-video-1.5-preview are image-to-video only and do not accept ref…
material_asset_idNoTokenLab Seedance material asset ID returned by /v1/videos/assets, by automatic image preparation, or from a real-person group returned by GetVisualValidateResult. Use it after the asset is ACTIVE with Seedance models that can use the TokenLab material library. The asset must belong to the current account. This field is a generic reference input; to assign first-frame, last-frame, or reference-image semantics explicitly, put asset://<material_asset_id> in start_image, end_image, or reference_im…
return_last_frameNoReturn the last generated frame when the selected model supports it. Seedance defaults to false when omitted.
safety_identifierNoOptional safety/user trace identifier for compatible video models. If omitted for Seedance, TokenLab uses user when provided.
material_asset_idsNoTokenLab Seedance material asset IDs returned by /v1/videos/assets or by automatic image preparation. They share the Seedance image-reference limit; the selected model must be able to use the TokenLab material library and all assets must belong to the current account and be ACTIVE.
reference_image_typeNoOptional reference image role for models that distinguish between asset and style references. The camelCase alias referenceImageType is accepted for compatibility.
execution_expires_afterNoOptional execution expiry window in seconds for compatible video models. Seedance defaults to 172800 seconds when omitted.

TDQS

B3.2/5.0
Behavior4/5

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

The description reveals that the task is asynchronous and instructs clients to poll the poll_url first or use the fixed status endpoint. This adds behavioral context beyond the annotations (which only indicate readOnlyHint=false and not destructive). No contradictions with annotations.

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

Conciseness3/5

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

The description is short (two sentences) but contains a redundant phrase at the beginning ('Create video generation task Creates'). It is not perfectly concise and could be streamlined.

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

Completeness2/5

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

Given the tool has 46 parameters, 0 required, and no output schema, the description is too minimal. It does not explain the complex parameter interactions, operation types, or provide high-level context for how to construct a valid request. The parameter descriptions in the schema are detailed, but the tool description itself lacks completeness.

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 the schema already documents all parameters thoroughly. The tool description adds no additional parameter-level details beyond what is in the schema, earning the baseline score of 3.

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

Purpose4/5

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

The description clearly states the tool creates an asynchronous video generation task, uses the verb 'create', and specifies the resource (video generation task). However, it starts with a redundant phrase 'Create video generation task' that restates the title, and does not distinguish from sibling creation tools like create_image or create_3d_model.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention when not to use it or what context is appropriate for video generation versus other creation tasks.

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

delete_fileDelete fileB
DestructiveIdempotent

Delete file Deletes a batch file or a bound image/reference file. When the request includes anthropic-beta: files-api-2025-04-14, the route uses Anthropic Files API mode for the bound workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_idYesFile ID returned by the Files API.
anthropic-betaNoInclude files-api-2025-04-14 to use Anthropic Files API mode.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already mark destructiveHint=true and readOnlyHint=false. The description adds context about the types of files it can delete (batch, bound image/reference) and the optional beta mode, but does not elaborate on irreversible nature or side effects.

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?

Two sentences; the first is redundant ('Delete file' repeats the title). Could be tighter, but overall brief and front-loaded with the core action.

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

Completeness3/5

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

For a simple delete tool, the description covers the action and the special beta mode. However, it omits return value expected (no output schema), error behavior, and whether deletion is asynchronous. Adequate but with noticeable gaps.

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 coverage is 100% with descriptions for both parameters. The main description adds no additional semantics beyond the schema; it mentions the beta header in passing but does not enhance parameter understanding.

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 clearly states it deletes files, specifying types (batch file or bound image/reference file). It distinguishes from siblings like retrieve_file or list_files by its destructive action.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives like retrieve_file or edit_image. The only usage hint is about the anthropic-beta header for a specific API mode, but no context on when deletion is appropriate or prerequisites.

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

edit_imageEdit imageC

Edit image Edits an image using multipart image uploads, JSON image URLs, or the official JSON images array for supported GPT Image models.

ParametersJSON Schema
NameRequiredDescriptionDefault
nNo
maskNoOptional JSON mask reference for image edits. Provide exactly one of image_url or file_id. Multipart requests can also send mask as a file part.
sizeNo
userNo
asyncNoReturn a task before the edited image is ready for models that support public async execution.
modelYesModel to use for image edits. Send this explicitly.
imagesNoOfficial JSON image references for image edits. Provide exactly one of image_url or file_id for each item. GPT Image edits accept up to 16 source images; xAI Grok Imagine edit models accept at most 3 source images.
promptYes
qualityNo
image_urlNoSingle source image URL. Kept for TokenLab compatibility; use images for the official JSON shape.
backgroundNo
image_urlsNoMultiple source image URLs. GPT Image edits accept up to 16 source images; xAI Grok Imagine edit models accept at most 3 source images.
moderationNo
resolutionNo
compressionNo
aspect_ratioNo
output_formatNo
response_formatNo
output_compressionNo

TDQS

C2.5/5.0
Behavior2/5

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

Annotations indicate readOnlyHint=false (mutation) and openWorldHint=true (accepts extra parameters), but the description adds little beyond mentioning input methods. It does not disclose behavior like error handling, rate limits, or side effects.

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

Conciseness3/5

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

The description is short but contains redundancy (repeating 'Edit image' in the first sentence). It could be more concise but is not overly verbose.

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

Completeness1/5

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

With 19 parameters, nested objects, no output schema, and low schema coverage, the description is woefully incomplete. It does not explain return values, required parameter combinations, or constraints.

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

Parameters2/5

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

Schema description coverage is only 32%, and the description fails to explain the many undocumented parameters. It only mentions the three input methods, leaving agents unclear on how to use size, quality, background, etc.

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

Purpose4/5

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

The description clearly states the tool edits images and mentions three input methods (multipart, JSON URLs, images array) for supported GPT Image models. However, it does not explicitly distinguish this tool from sibling tools like create_image or edit_image_file.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs other image-related tools. The description does not specify prerequisites, recommended scenarios, or when to choose alternative tools.

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

edit_image_fileEdit imageC

Edit image Edits an image using multipart image uploads, JSON image URLs, or the official JSON images array for supported GPT Image models.

ParametersJSON Schema
NameRequiredDescriptionDefault
nNo
maskNoPass local file path.
sizeNo
userNo
asyncNo
imageNoSource image file(s). Repeat image for multiple source images. GPT Image edits accept up to 16 images; xAI Grok Imagine edit models accept at most 3 source images. Pass local file paths.
modelYesModel to use for image edits. Send this explicitly, for example gpt-image-2.
promptYes
image[]NoAlternative repeated multipart field name for multiple source images. The same model-specific limits apply: GPT Image up to 16, xAI Grok Imagine up to 3. Pass local file paths.
qualityNo
backgroundNo
moderationNo
resolutionNo
compressionNo
aspect_ratioNo
output_formatNo
response_formatNo
output_compressionNo

TDQS

C2.6/5.0
Behavior3/5

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

Annotations already indicate non-read-only behavior. The description adds context about input methods (multipart, JSON URLs, etc.) but does not disclose side effects, permissions, or what happens to the original image.

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

Conciseness3/5

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

The description is a single run-on sentence with redundancy ('Edit image Edits an image'). It could be more concise and front-loaded.

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

Completeness2/5

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

Given 18 parameters and no output schema, the description is too brief. It omits return values, step-by-step usage, and model-specific behaviors for non-GPT models.

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

Parameters2/5

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

With only 22% schema description coverage, the description does not add meaning to individual parameters beyond the schema's few descriptions. It mentions input methods but does not help understand the many undocumented parameters.

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

Purpose3/5

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

The description clearly states the tool edits an image, but it is redundant ('Edit image Edits an image') and does not differentiate from the sibling 'edit_image' tool, causing confusion.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives like 'edit_image' or 'create_image_file'. The description lacks any context about when to prefer this tool.

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

get_api_overviewGet TokenLab API OverviewA
Read-onlyIdempotent

Fetch TokenLab's agent-readable API overview.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

Annotations declare readOnlyHint, openWorldHint, idempotentHint true, and destructiveHint false, covering safety and idempotency. The description adds 'agent-readable API overview' but does not elaborate on behavior beyond that. It does not contradict annotations.

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

Conciseness5/5

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

The description is a single sentence with no extraneous words. It is front-loaded and efficient.

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

Completeness3/5

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

Given the tool has no parameters and annotations cover safety, the description is minimal. However, it does not describe the return value or what the 'API overview' contains. For an agent, this may be insufficient for understanding the output.

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?

There are zero parameters, and schema description coverage is 100% by default. The description does not add parameter details, but it is not needed. Baseline 4 for no parameters.

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 'Fetch TokenLab's agent-readable API overview' clearly uses a specific verb ('Fetch') and resource ('TokenLab API overview'). The title reinforces this. No sibling tool has a similar name or purpose, so it is well-distinguished.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives or any prerequisites. While the tool is simple, there is no context about its typical usage (e.g., before making other API calls).

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

get_modelGet modelA
Read-onlyIdempotent

Get model Retrieves current model details, including supported operations, request parameters, request endpoints, selector limits, and pricing when available. Non-chat integrations should read these current model-specific request details before creating a request.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelYesThe model ID

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, destructiveHint false. Description adds context on what data is returned but does not disclose additional behavioral traits beyond annotations.

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?

Two sentences, front-loaded with core purpose. Efficient but could be slightly more concise by removing redundancy (e.g., 'Get model' in title already says purpose).

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?

For a single-parameter tool with no output schema, description covers expected return content (operations, params, endpoints, limits, pricing) and includes a usage directive. Completely adequate.

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 coverage is 100%: single parameter 'model' described as 'The model ID'. Description does not add extra meaning or constraints beyond schema.

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?

Clearly specifies the action ('get') and resource ('model details'), and lists specific content (operations, params, endpoints, limits, pricing). Distinguishes from sibling tools like get_model_pricing and list_models.

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?

Provides explicit direction: 'Non-chat integrations should read these... before creating a request.' Implies use-case but doesn't explicitly exclude alternatives like get_model_pricing for pricing-only queries.

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

get_model_pricingGet model pricingA
Read-onlyIdempotent

Get model pricing Retrieves pricing-only detail for one model. Use this endpoint for price explanation, not for non-chat request construction.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelYesThe model ID

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare the tool as readOnly, openWorld, idempotent, and not destructive. The description adds minimal context ('pricing-only detail' and usage hint). It does not contradict annotations, but the annotations carry the main behavioral burden. The description adds some value but not much beyond what's already structured.

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

Conciseness5/5

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

The description is extremely concise: two sentences, no fluff. The first sentence clearly states the action, and the second adds usage guidance. Every sentence is meaningful and front-loaded.

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?

Given the tool's simplicity (single parameter, no output schema), the description provides adequate context. It explains the purpose and usage boundaries. Annotations cover behavioral traits. A minor gap is that it doesn't describe the return format or example output, but that may be inferred from 'pricing-only detail'. Overall, it is complete enough for an agent to use correctly.

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?

The input schema has one parameter 'model' with a brief description 'The model ID'. Schema description coverage is 100%. The tool description does not add any additional semantics or formatting details for the parameter, so it neither harms nor improves beyond the schema. Baseline 3 is appropriate.

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

Purpose4/5

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

The description clearly states the tool retrieves pricing-only detail for one model. It specifies 'pricing-only detail' and distinguishes its use for price explanation, not for non-chat request construction. However, it does not explicitly differentiate from the sibling tool 'get_pricing', which could cause confusion.

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?

The description provides clear usage guidance: 'Use this endpoint for price explanation, not for non-chat request construction.' It tells when to use (price explanation) and when not to (non-chat request construction), but it does not mention alternatives or compare to other pricing tools.

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

get_pricingList model pricingB
Read-onlyIdempotent

List model pricing Returns the public pricing surface for active models, with optional provider and tag filters.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNoFilter by model tag.
providerNoFilter by provider ID.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive. The description adds that it returns the 'public pricing surface' and mentions optional filters, which is useful but does not disclose response format, pagination, or rate limits. Adds moderate value beyond annotations.

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?

Description is very short, but the phrasing 'List model pricing Returns...' appears to be two fragments without punctuation, slightly reducing clarity. However, it is still mostly concise and front-loaded with the main action.

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

Completeness3/5

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

For a read-only list tool with no output schema, the description could mention the response format or return type. It is adequate but not thorough; the annotations cover safety aspects.

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 coverage is 100% with both parameters having clear descriptions ('Filter by model tag.' and 'Filter by provider ID.'). The description merely repeats 'optional provider and tag filters' without adding new meaning, so baseline of 3 is appropriate.

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

Purpose4/5

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

Description clearly states the tool lists model pricing for active models with optional filters. The verb 'List' and resource 'model pricing' are specific. Distinguishes from sibling 'get_model_pricing' by implying a comprehensive listing vs. potentially a single model, but not explicitly stated.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. Does not mention when not to use or provide context about prerequisites or exclusions.

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

get_task_statusGet async task statusA
Read-onlyIdempotent

Get async task status Retrieves the status and result of an asynchronous generation task. Prefer the poll_url returned by the create response; /v1/tasks/{id} is the canonical fixed status endpoint for video, music, and 3D jobs.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe async task ID returned by `id` / `task_id`, or embedded in `poll_url`

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover readOnly, idempotent, and non-destructive nature. Description adds context about two access methods (poll_url vs canonical), which is behavioral information beyond what annotations provide.

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

Conciseness5/5

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

Two concise sentences: first defines purpose, second provides usage guidance. No wasted words, information is front-loaded.

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 simple tool with one parameter and rich annotations, the description sufficiently covers purpose and ID sources. However, it omits any mention of the return format, which could be helpful since no output schema is provided.

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%, but description adds meaning by explaining the parameter can come from `id`, `task_id`, or be embedded in `poll_url`. This aids the agent in correctly obtaining the ID.

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 clearly states the tool retrieves status and result of an async generation task. It specifies the verb 'get', the resource 'async task status', and distinguishes from other purposes by mentioning polling vs canonical endpoint.

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?

Explicit guidance to prefer the `poll_url` returned by the create response, and contrasts with the canonical `/v1/tasks/{id}` endpoint. This helps the agent choose between alternatives, though it doesn't explicitly mention when not to use the tool.

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

list_filesList filesD
Read-onlyIdempotent

List files

ParametersJSON Schema
NameRequiredDescriptionDefault
afterNo
limitNo
purposeNoOptional file purpose filter. batch and batch_output cover Batch API files; user_data and vision cover TokenLab image/reference file bindings. Anthropic Files API mode is selected by Anthropic headers rather than this query parameter.
after_idNoAnthropic Files cursor. Return files after this public file id. Requires the Anthropic Files beta header and cannot be combined with before_id.
scope_idNoReserved Anthropic Files scope cursor. TokenLab currently returns an explicit unsupported error rather than silently ignoring this value.
before_idNoAnthropic Files cursor. Return files before this public file id. Requires the Anthropic Files beta header and cannot be combined with after_id.
anthropic-betaNoInclude files-api-2025-04-14 to use Anthropic Files API mode.

TDQS

D1.9/5.0
Behavior2/5

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

The description adds no behavioral context beyond the annotations (readOnlyHint, openWorldHint, idempotentHint, destructiveHint). Annotations already indicate safety, but the description fails to mention pagination, cursor usage, or beta header requirements.

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

Conciseness2/5

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

Extremely short but not informative. It is under-specified, wasting the opportunity to provide essential context in a concise manner.

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

Completeness1/5

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

With 7 parameters, no output schema, and complex features (pagination cursors, purpose enum, beta header), the description is completely inadequate. An agent cannot determine behavior like filtering, pagination limits, or mode switching.

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

Parameters2/5

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

Schema description coverage is 71% (below 80%), so the description should compensate but does not. It adds no meaning beyond what the schema already provides for parameters like 'purpose', 'after', 'before_id', etc.

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

Purpose2/5

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

Tautological: description restates name/title.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., retrieve_file for a single file). No context on prerequisites or typical usage scenarios.

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

list_modelsList modelsA
Read-onlyIdempotent

List models Lists the currently available models. Use view=compact for model selection and view=full for the existing OpenAI-compatible discovery shape. Native API calls default to full; integrations may choose compact as their default. Non-chat recommendations are available through recommended_for.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNoFilter by a public capability tag.
viewNoCompact model-selection output is the MCP default. Set view to full only when the complete OpenAI-compatible list shape is required.compact
categoryNoFilter by model category.
providerNoFilter by public model provider, for example openai, anthropic, google, or minimax.
recommended_forNoSort supported non-chat models for a task category and include recommendation evidence.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, clearly indicating a safe read operation. The description adds behavioral context about view defaults and recommended_for usage, enhancing transparency beyond annotations.

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?

The description is relatively short and front-loaded with the core purpose. It could be slightly more structured, but it contains no filler and every sentence adds value.

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

Completeness3/5

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

Without an output schema, the description gives a high-level idea of the output (list, OpenAI-compatible shape) but does not detail the structure or fields returned. For a list tool, this is acceptable but leaves some ambiguity.

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?

All 5 parameters are well-described in the schema (100% coverage). The description adds extra meaning for view (explains defaults and use cases) and recommended_for (non-chat recommendations), providing value beyond the schema.

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 clearly states the tool lists available models, and distinguishes between views for model selection vs. full OpenAI-compatible shape. It differentiates from siblings like get_model and create tools by focusing on listing.

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?

Provides explicit guidance on when to use view=compact vs view=full, and mentions non-chat recommendations via recommended_for. However, it does not explicitly contrast with other list-like tools (e.g., list_files) or specify when not to use.

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

rerank_documentsRerank documentsC

Rerank documents Reranks documents by relevance to a query using semantic similarity.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelYesReranker model to use
queryYesQuery to rank against
top_nNoNumber of results to return
documentsYesDocuments to rerank
return_documentsNo

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already indicate readOnlyHint=false and destructiveHint=false. The description adds no behavioral details beyond the basic function. No mention of side effects, required permissions, or response behavior.

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

Conciseness2/5

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

The description is very short but contains repetition ('Rerank documents Reranks documents'), which reduces clarity. It could be condensed into one sentence without loss of meaning.

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

Completeness2/5

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

No output schema is provided, and the description does not explain what the tool returns or how to interpret the reranked documents. Given the complexity of reranking, more context (e.g., ordering, scoring) would be helpful.

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 80%, so baseline is 3. The description does not add any parameter-level details beyond the schema. It only restates the tool's purpose, not parameter guidance.

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

Purpose4/5

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

The description clearly states the verb 'rerank' and the resource 'documents', and explains it uses semantic similarity for relevance ranking. It distinguishes from sibling tools which are mostly for generation, embedding, or file operations.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, nor does it mention when not to use it. It simply states what it does without usage context.

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

retrieve_fileRetrieve fileD
Read-onlyIdempotent

Retrieve file

ParametersJSON Schema
NameRequiredDescriptionDefault
file_idYes
anthropic-betaNoInclude files-api-2025-04-14 to use Anthropic Files API mode.

TDQS

D1.5/5.0
Behavior2/5

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

Annotations already indicate read-only, idempotent, and open-world hints. The description adds no further behavioral context such as authentication needs, return format, or what 'retrieve' entails.

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

Conciseness2/5

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

Overly brief to the point of being uninformative. It is not concise in a helpful way—it fails to convey any useful information beyond the tool name.

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

Completeness1/5

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

Without an output schema, the description should explain what is returned. It does not. With two parameters and no behavioral details, the description is grossly incomplete for an AI agent to understand its usage.

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

Parameters2/5

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

Schema coverage is only 50% (file_id lacks a description). The tool description does not clarify the meaning of file_id or the purpose of the 'anthropic-beta' parameter beyond what the schema already provides.

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

Purpose1/5

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

Tautological: description restates name/title.

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

Usage Guidelines1/5

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

No guidance is provided on when to use this tool versus alternatives. For example, it does not clarify how it differs from 'retrieve_file_content' or 'list_files'.

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

retrieve_file_contentRetrieve file contentD
Read-onlyIdempotent

Retrieve file content

ParametersJSON Schema
NameRequiredDescriptionDefault
file_idYes

TDQS

D1/5.0
Behavior1/5

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

The description adds no behavioral details beyond what annotations already indicate; no mention of file size limits, content type, or other operational traits.

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

Conciseness1/5

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

Extreme under-specification; three words do not constitute a useful description.

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

Completeness1/5

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

Given no output schema and no parameter details, the description is completely inadequate for an agent to correctly invoke the tool.

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

Parameters1/5

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

With 0% schema description coverage, the description fails to explain the required 'file_id' parameter, its format, or how to obtain it.

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

Purpose1/5

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

Tautological: description restates name/title.

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

Usage Guidelines1/5

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

No guidance is provided on when to use this tool versus alternatives; there is no mention of context, prerequisites, or exclusions.

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

transcribe_audioCreate transcriptionC

Create transcription Transcribes audio into text (Speech-to-Text).

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesAudio file to transcribe Pass local file path.
modelYesModel to use (whisper-1)
promptNoOptional prompt text
languageNoISO-639-1 language code
temperatureNoSampling temperature
response_formatNoResponse formatjson
timestamp_granularitiesNoTimestamp granularity selection. Requires verbose_json output when requesting word-level timestamps.

TDQS

C2.8/5.0
Behavior2/5

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

Annotations indicate readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false. The description adds no behavioral context beyond these annotations, such as side effects or resource creation details.

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

Conciseness3/5

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

The description is short but awkwardly constructed with 'Create transcription Transcribes...' It could be a single clear sentence. Information density is low, but no filler words.

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

Completeness2/5

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

With 7 parameters, 2 required, and no output schema, the description provides minimal context. It does not explain return values, file handling, or limitations. The annotations are sparse, leaving gaps.

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 coverage is 100%, so all parameters have descriptions. The tool description does not add additional meaning beyond the schema, but it does not detract. Baseline 3 is appropriate.

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

Purpose4/5

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

The description clearly states the tool transcribes audio to text using 'Speech-to-Text'. It identifies the verb and resource, differentiating from sibling 'translate_audio'. However, the phrase 'Create transcription' is slightly redundant.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like 'translate_audio' or 'create_chat_completion'. No exclusions or prerequisites mentioned.

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

translate_audioTranslate audioB

Translate audio Transcribes audio and translates the result to English.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesPass local file path.
modelNowhisper-1
promptNo
temperatureNo
response_formatNo

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already indicate readOnlyHint=false (mutation), destructiveHint=false, openWorldHint=true. The description only says 'transcribes and translates to English', adding no behavioral context beyond annotations (e.g., file constraints, language support, result handling).

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

Conciseness3/5

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

The description is extremely short (one fragment). While front-loaded and concise, it lacks structure and omits important details. Not overly verbose but under-specified.

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

Completeness2/5

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

With 5 parameters, no output schema, and low schema coverage, the description does not explain key aspects like model options, prompt usage, or output format. Significant gaps for a complex translation task.

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

Parameters2/5

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

Schema coverage is 20% (only file has a description). The description does not clarify parameters like model, prompt, temperature, or response_format, leaving 4 parameters undocumented. Description fails to compensate for low schema coverage.

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 clearly states the tool transcribes audio and translates to English, distinguishing it from siblings like transcribe_audio (transcription only) and translate_text (text input).

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

Usage Guidelines3/5

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

The description implies usage for audio-to-English translation tasks but does not explicitly state when to use it versus alternatives like transcribe_audio or translate_text, nor does it provide prerequisites or exclusions.

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

translate_textTranslate textC

Translate text Translates text into a target language using the current translation request format.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
userNo
modelYes
mime_typeNo
source_languageNo
target_languageYes

TDQS

C2.6/5.0
Behavior2/5

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

Annotations are present (readOnlyHint=false, openWorldHint=true), but the description adds no additional behavioral context beyond 'translates text'. It does not disclose synchronous/asynchronous behavior, auth needs, rate limits, or any side effects hinted by openWorldHint=true.

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

Conciseness3/5

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

Two sentences, but the first sentence 'Translate text' is redundant with the title. Could be merged into one concise sentence. Overall efficient but not optimally structured.

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

Completeness2/5

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

With 6 parameters and no output schema, the description is insufficient. It does not explain return format, error handling, or any additional context like nesting or enum details (only mime_type has enum).

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It mentions 'text' and 'target_language' implicitly, but does not explain 'model', 'user', 'mime_type', or 'source_language'. Only a fraction of the parameters are addressed.

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

Purpose4/5

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

Description clearly states it translates text into a target language, which is a specific verb+resource. However, it does not differentiate from sibling tools like translate_audio beyond the resource type (text vs audio), and the phrase 'using the current translation request format' is vague.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives like translate_audio or other translation tools. No when-not-to-use or prerequisite information provided.

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

upload_fileUpload fileB

Upload file Uploads a TokenLab/OpenAI-compatible batch or image file. With anthropic-beta: files-api-2025-04-14, uploads an Anthropic Files resource without a purpose field and returns Anthropic file metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesPass local file path.
modelNoOptional TokenLab extension for image file uploads. Defaults to gpt-image-2 and binds the returned file_id to the selected image-edit configuration.
purposeNoRequired in TokenLab/OpenAI-compatible mode: use batch for Batch API JSONL files, or user_data/vision for image edits. Omit in Anthropic Files mode.
anthropic-betaNoInclude files-api-2025-04-14 to use Anthropic Files API mode.

TDQS

B3.3/5.0
Behavior3/5

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

Annotations indicate readOnlyHint=false and openWorldHint=true, and the description confirms a write operation. It mentions returning metadata for Anthropic mode but does not elaborate on persistence or other side effects. It adds some context but falls short of full transparency.

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

Conciseness3/5

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

The description is two sentences but starts with a redundant 'Upload file' that repeats the title. The second sentence is dense but informative. Could be trimmed for conciseness without losing clarity.

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

Completeness2/5

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

No output schema is provided, but the description only mentions the return value for Anthropic Files mode. For the primary TokenLab/OpenAI mode, it does not specify the return format (e.g., a file object with id). This is a significant gap in completeness.

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%, and the description adds meaningful context: explaining the purpose parameter's three values, the model parameter's default and binding behavior, and the anthropic-beta header's effect. This adds value beyond the schema alone.

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

Purpose4/5

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

The description clearly states the tool uploads TokenLab/OpenAI-compatible batch or image files, and optionally Anthropic Files resource via a header. It distinguishes between two modes, but the initial repetition of 'Upload file' and mixing of modes could be clearer. No explicit sibling differentiation, but the purpose is well-defined.

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

Usage Guidelines3/5

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

The description provides context on when to use each mode (TokenLab/OpenAI vs Anthropic Files) based on the anthropic-beta header. However, it does not guide the agent away from alternatives like create_image_file or edit_image_file, nor does it specify prerequisites or limitations.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 31 tool updatesv0.6.4
    • Changedcancel_task1 field changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedcompare_models2 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcreate_3d_model3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / properties / seed / maximum
        Removed value: -9007199254740991
      • removedInput schema / properties / seed / minimum
        Removed value: --9007199254740991
    • Changedcreate_anthropic_message15 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / properties / max_tokens / maximum
        Removed value: -9007199254740991
      • removedInput schema / properties / messages / items / additionalProperties
        Removed value: -{}
      • removedInput schema / properties / messages / items / properties / content / oneOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "items": {
        -      "additionalProperties": {},
        -      "properties": {
        -        "source": {
        -          "additionalProperties": {},
        -          "properties": {
        -            "data": {
        -              "type": "string"
        -            },
        -            "media_type": {
        -              "type": "string"
        -            },
        -            "type": {
        -              "enum": [
        -                "base64",
        -                "url"
        -              ],
        -              "type": "string"
        -            },
        -            "url": {
        -              "type": "string"
        -            }
        -          },
        -          "type": "object"
        -        },
        -        "text": {
        -          "type": "string"
        -        },
        -        "type": {
        -          "enum": [
        -            "text",
        -            "image"
        -          ],
        -          "type": "string"
        -        }
        -      },
        -      "type": "object"
        -    },
        -    "type": "array"
        -  }
        -]
      • changedInput schema / properties / metadata / additionalProperties
        Previous value: -{}New value: +true
      • removedInput schema / properties / metadata / properties
        Removed value: -{}
      • removedInput schema / properties / stream
        Removed value: -{
        -  "const": false,
        -  "default": false,
        -  "description": "MCP tool calls return one final result; omit stream or set it to false.",
        -  "type": "boolean"
        -}
      • changedInput schema / properties / stream_options / additionalProperties
        Previous value: -{}New value: +true
      • removedInput schema / properties / stream_options / properties
        Removed value: -{}
      • changedInput schema / properties / thinking / additionalProperties
        Previous value: -{}New value: +true
      • removedInput schema / properties / thinking / properties
        Removed value: -{}
      • changedInput schema / properties / tool_choice / oneOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "additionalProperties": {},
        -    "properties": {},
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "additionalProperties": true,
        +    "type": "object"
        +  }
        +]
      • changedInput schema / properties / tools / items / additionalProperties
        Previous value: -{}New value: +true
      • removedInput schema / properties / tools / items / properties
        Removed value: -{}
      • removedInput schema / properties / top_k / maximum
        Removed value: -9007199254740991
    • Changedcreate_chat_completion35 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • changedInput schema / properties / audio / additionalProperties
        Previous value: -{}New value: +true
      • removedInput schema / properties / audio / properties
        Removed value: -{}
      • addedInput schema / properties / function_call
        Added value: +{
        +  "description": "Deprecated function-call selection retained by the official Chat Completions contract.",
        +  "oneOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "additionalProperties": true,
        +      "type": "object"
        +    }
        +  ]
        +}
      • addedInput schema / properties / functions
        Added value: +{
        +  "description": "Deprecated function definitions retained by the official Chat Completions contract.",
        +  "items": {
        +    "additionalProperties": true,
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • removedInput schema / properties / logit_bias / properties
        Removed value: -{}
      • removedInput schema / properties / max_completion_tokens / maximum
        Removed value: -9007199254740991
      • removedInput schema / properties / max_tokens / maximum
        Removed value: -9007199254740991
      • removedInput schema / properties / messages / items / additionalProperties
        Removed value: -{}
      • removedInput schema / properties / messages / items / properties / content / oneOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "items": {
        -      "oneOf": [
        -        {
        -          "additionalProperties": {},
        -          "properties": {
        -            "text": {
        -              "type": "string"
        -            },
        -            "type": {
        -              "const": "text",
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "type",
        -            "text"
        -          ],
        -          "type": "object"
        -        },
        -        {
        -          "additionalProperties": {},
        -          "properties": {
        -            "image_url": {
        -              "additionalProperties": {},
        -              "properties": {
        -                "detail": {
        -                  "enum": [
        -                    "auto",
        -                    "low",
        -                    "high"
        -                  ],
        -                  "type": "string"
        -                },
        -                "url": {
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "url"
        -              ],
        -              "type": "object"
        -            },
        -            "type": {
        -              "const": "image_url",
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "type",
        -            "image_url"
        -          ],
        -          "type": "object"
        -        },
        -        {
        -          "additionalProperties": {},
        -          "properties": {
        -            "type": {
        -              "const": "video_url",
        -              "type": "string"
        -            },
        -            "video_url": {
        -              "additionalProperties": {},
        -              "properties": {
        -                "url": {
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "url"
        -              ],
        -              "type": "object"
        -            }
        -          },
        -          "required": [
        -            "type",
        -            "video_url"
        -          ],
        -          "type": "object"
        -        },
        -        {
        -          "additionalProperties": {},
        -          "properties": {
        -            "input_audio": {
        -              "additionalProperties": {},
        -              "properties": {
        -                "data": {
        -                  "description": "Public audio URL or Base64 data URL.",
        -                  "type": "string"
        -                },
        -                "format": {
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "data"
        -              ],
        -              "type": "object"
        -            },
        -            "type": {
        -              "const": "input_audio",
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "type",
        -            "input_audio"
        -          ],
        -          "type": "object"
        -        }
        -      ]
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedInput schema / properties / messages / items / properties / tool_calls / items / additionalProperties
        Removed value: -{}
      • removedInput schema / properties / messages / items / properties / tool_calls / items / properties
        Removed value: -{
        -  "function": {
        -    "additionalProperties": {},
        -    "properties": {
        -      "arguments": {
        -        "type": "string"
        -      },
        -      "name": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "name",
        -      "arguments"
        -    ],
        -    "type": "object"
        -  },
        -  "id": {
        -    "description": "Tool call ID",
        -    "type": "string"
        -  },
        -  "type": {
        -    "const": "function",
        -    "type": "string"
        -  }
        -}
      • removedInput schema / properties / messages / items / properties / tool_calls / items / required
        Removed value: -[
        -  "id",
        -  "type",
        -  "function"
        -]
      • removedInput schema / properties / messages / items / properties / tool_calls / items / type
        Removed value: -"object"
      • changedInput schema / properties / prediction / additionalProperties
        Previous value: -{}New value: +true
      • removedInput schema / properties / prediction / properties
        Removed value: -{}
      • removedInput schema / properties / repetition_penalty
        Removed value: -{
        -  "description": "Repetition penalty for compatible models.",
        -  "exclusiveMinimum": 0,
        -  "type": "number"
        -}
      • removedInput schema / properties / response_format / additionalProperties
        Removed value: -{}
      • removedInput schema / properties / seed / maximum
        Removed value: -9007199254740991
      • removedInput schema / properties / seed / minimum
        Removed value: --9007199254740991
      • removedInput schema / properties / service_tier / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / service_tier / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedInput schema / properties / speech_rate
        Removed value: -{
        -  "description": "Speech rate for compatible translated audio output.",
        -  "maximum": 2,
        -  "minimum": 0.5,
        -  "type": "number"
        -}
      • removedInput schema / properties / stream
        Removed value: -{
        -  "const": false,
        -  "default": false,
        -  "description": "MCP tool calls return one final result; omit stream or set it to false.",
        -  "type": "boolean"
        -}
      • changedInput schema / properties / stream_options / additionalProperties
        Previous value: -{}New value: +true
      • removedInput schema / properties / stream_options / properties
        Removed value: -{}
      • changedInput schema / properties / tool_choice / oneOf
        Previous value: -[
        -  {
        -    "enum": [
        -      "none",
        -      "auto",
        -      "required"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "additionalProperties": {},
        -    "properties": {
        -      "function": {
        -        "additionalProperties": {},
        -        "properties": {
        -          "name": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "name"
        -        ],
        -        "type": "object"
        -      },
        -      "type": {
        -        "const": "function",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "type",
        -      "function"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "enum": [
        +      "none",
        +      "auto",
        +      "required"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "properties": {
        +      "function": {
        +        "type": "object"
        +      },
        +      "type": {
        +        "enum": [
        +          "function"
        +        ],
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "function"
        +    ],
        +    "type": "object"
        +  }
        +]
      • removedInput schema / properties / tools / items / additionalProperties
        Removed value: -{}
      • removedInput schema / properties / tools / items / properties / function / additionalProperties
        Removed value: -{}
      • removedInput schema / properties / tools / items / properties / function / properties
        Removed value: -{
        -  "description": {
        -    "description": "Function description",
        -    "type": "string"
        -  },
        -  "name": {
        -    "description": "Function name",
        -    "maxLength": 64,
        -    "type": "string"
        -  },
        -  "parameters": {
        -    "additionalProperties": {},
        -    "description": "JSON Schema for function parameters",
        -    "properties": {},
        -    "type": "object"
        -  }
        -}
      • removedInput schema / properties / tools / items / properties / function / required
        Removed value: -[
        -  "name"
        -]
      • removedInput schema / properties / tools / items / properties / type / const
        Removed value: -"function"
      • addedInput schema / properties / tools / items / properties / type / enum
        Added value: +[
        +  "function"
        +]
      • removedInput schema / properties / top_k
        Removed value: -{
        -  "description": "Top-k sampling cutoff for compatible providers.",
        -  "maximum": 9007199254740991,
        -  "minimum": 0,
        -  "type": "integer"
        -}
      • removedInput schema / properties / translation_options / additionalProperties
        Removed value: -{}
    • Changedcreate_embedding3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / properties / dimensions / maximum
        Removed value: -9007199254740991
      • changedInput schema / properties / input / oneOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "items": {
        -      "type": "number"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "items": {
        -      "items": {
        -        "type": "number"
        -      },
        -      "type": "array"
        -    },
        -    "type": "array"
        -  }
        -]New value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "items": {
        +      "type": "number"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "items": {
        +      "items": {},
        +      "type": "array"
        +    },
        +    "type": "array"
        +  }
        +]
    • Changedcreate_gemini_content58 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • addedInput schema / properties / cached_content
        Added value: +{
        +  "description": "Original proto field-name spelling of cachedContent.",
        +  "type": "string"
        +}
      • removedInput schema / properties / contents / items / additionalProperties
        Removed value: -{}
      • removedInput schema / properties / contents / items / properties / parts / items / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": {},
        -    "properties": {
        -      "text": {
        -        "type": "string"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": {},
        -    "properties": {
        -      "inlineData": {
        -        "additionalProperties": {},
        -        "properties": {
        -          "data": {
        -            "type": "string"
        -          },
        -          "mimeType": {
        -            "type": "string"
        -          }
        -        },
        -        "type": "object"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": {},
        -    "properties": {
        -      "inline_data": {
        -        "additionalProperties": {},
        -        "properties": {
        -          "data": {
        -            "type": "string"
        -          },
        -          "mime_type": {
        -            "type": "string"
        -          }
        -        },
        -        "type": "object"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": {},
        -    "properties": {
        -      "fileData": {
        -        "additionalProperties": {},
        -        "properties": {
        -          "fileUri": {
        -            "type": "string"
        -          },
        -          "mimeType": {
        -            "type": "string"
        -          }
        -        },
        -        "type": "object"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": {},
        -    "properties": {
        -      "file_data": {
        -        "additionalProperties": {},
        -        "properties": {
        -          "file_uri": {
        -            "type": "string"
        -          },
        -          "mime_type": {
        -            "type": "string"
        -          }
        -        },
        -        "type": "object"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": {},
        -    "properties": {
        -      "videoMetadata": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": {},
        -    "properties": {
        -      "video_metadata": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": {},
        -    "properties": {
        -      "thought": {
        -        "type": "boolean"
        -      },
        -      "thoughtSignature": {
        -        "type": "string"
        -      },
        -      "thought_signature": {
        -        "type": "string"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": {},
        -    "properties": {
        -      "functionCall": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": {},
        -    "properties": {
        -      "functionResponse": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": {},
        -    "properties": {
        -      "executableCode": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": {},
        -    "properties": {
        -      "codeExecutionResult": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": {},
        -    "properties": {
        -      "function_call": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": {},
        -    "properties": {
        -      "function_response": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": {},
        -    "properties": {
        -      "executable_code": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": {},
        -    "properties": {
        -      "code_execution_result": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      }
        -    },
        -    "type": "object"
        -  }
        -]
      • removedInput schema / properties / generationConfig / additionalProperties
        Removed value: -{}
      • changedInput schema / properties / generationConfig / properties / candidateCount / description
        Previous value: -"Number of response candidates for non-streaming generation. Streaming requests must omit this field or keep it at 1."New value: +"Requested number of response candidates. Support is determined by the selected service."
      • removedInput schema / properties / generationConfig / properties / candidateCount / maximum
        Removed value: -9007199254740991
      • removedInput schema / properties / generationConfig / properties / maxOutputTokens / maximum
        Removed value: -9007199254740991
      • changedInput schema / properties / generationConfig / properties / responseSchema / additionalProperties
        Previous value: -{}New value: +true
      • removedInput schema / properties / generationConfig / properties / responseSchema / properties
        Removed value: -{}
      • changedInput schema / properties / generationConfig / properties / thinkingConfig / additionalProperties
        Previous value: -{}New value: +true
      • removedInput schema / properties / generationConfig / properties / thinkingConfig / properties / thinkingBudget / maximum
        Removed value: -9007199254740991
      • removedInput schema / properties / generationConfig / properties / thinkingConfig / properties / thinkingBudget / minimum
        Removed value: --9007199254740991
      • changedInput schema / properties / generationConfig / properties / thinking_config / additionalProperties
        Previous value: -{}New value: +true
      • removedInput schema / properties / generationConfig / properties / thinking_config / properties / thinking_budget / maximum
        Removed value: -9007199254740991
      • removedInput schema / properties / generationConfig / properties / thinking_config / properties / thinking_budget / minimum
        Removed value: --9007199254740991
      • removedInput schema / properties / generationConfig / properties / topK / maximum
        Removed value: -9007199254740991
      • addedInput schema / properties / generation_config
        Added value: +{
        +  "additionalProperties": true,
        +  "description": "Original proto field-name spelling of generationConfig.",
        +  "type": "object"
        +}
      • removedInput schema / properties / safetySettings / items / additionalProperties
        Removed value: -{}
      • addedInput schema / properties / safety_settings
        Added value: +{
        +  "description": "Original proto field-name spelling of safetySettings.",
        +  "items": {
        +    "additionalProperties": true,
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • removedInput schema / properties / systemInstruction / additionalProperties
        Removed value: -{}
      • removedInput schema / properties / systemInstruction / properties / parts / items / additionalProperties
        Removed value: -{}
      • removedInput schema / properties / systemInstruction / properties / parts / items / properties
        Removed value: -{
        -  "text": {
        -    "type": "string"
        -  }
        -}
      • addedInput schema / properties / system_instruction
        Added value: +{
        +  "additionalProperties": true,
        +  "description": "Original proto field-name spelling of systemInstruction.",
        +  "type": "object"
        +}
      • changedInput schema / properties / toolConfig / additionalProperties
        Previous value: -{}New value: +true
      • changedInput schema / properties / toolConfig / properties / functionCallingConfig / additionalProperties
        Previous value: -{}New value: +true
      • removedInput schema / properties / toolConfig / properties / functionCallingConfig / properties / allowedFunctionNames / items / type
        Removed value: -"string"
      • changedInput schema / properties / toolConfig / properties / function_calling_config / additionalProperties
        Previous value: -{}New value: +true
      • removedInput schema / properties / toolConfig / properties / function_calling_config / properties / allowed_function_names / items / type
        Removed value: -"string"
      • addedInput schema / properties / tool_config
        Added value: +{
        +  "additionalProperties": true,
        +  "description": "Original proto field-name spelling of toolConfig.",
        +  "type": "object"
        +}
      • changedInput schema / properties / tools / description
        Previous value: -"Gemini tools. Supported tool combinations depend on the selected model and route; unsupported native image-output tool combinations are rejected before upstream retries."New value: +"Gemini tools. Tool types and combinations are interpreted by the selected service."
      • changedInput schema / properties / tools / items / additionalProperties
        Previous value: -{}New value: +true
      • removedInput schema / properties / tools / items / properties / codeExecution / additionalProperties
        Removed value: -{}
      • removedInput schema / properties / tools / items / properties / codeExecution / properties
        Removed value: -{}
      • removedInput schema / properties / tools / items / properties / code_execution / additionalProperties
        Removed value: -{}
      • removedInput schema / properties / tools / items / properties / code_execution / properties
        Removed value: -{}
      • removedInput schema / properties / tools / items / properties / computerUse / additionalProperties
        Removed value: -{}
      • removedInput schema / properties / tools / items / properties / computerUse / properties
        Removed value: -{}
      • removedInput schema / properties / tools / items / properties / computer_use / additionalProperties
        Removed value: -{}
      • removedInput schema / properties / tools / items / properties / computer_use / properties
        Removed value: -{}
      • removedInput schema / properties / tools / items / properties / functionDeclarations / items / additionalProperties
        Removed value: -{}
      • removedInput schema / properties / tools / items / properties / functionDeclarations / items / properties
        Removed value: -{}
      • removedInput schema / properties / tools / items / properties / functionDeclarations / items / type
        Removed value: -"object"
      • removedInput schema / properties / tools / items / properties / function_declarations / items / additionalProperties
        Removed value: -{}
      • removedInput schema / properties / tools / items / properties / function_declarations / items / properties
        Removed value: -{}
      • removedInput schema / properties / tools / items / properties / function_declarations / items / type
        Removed value: -"object"
      • removedInput schema / properties / tools / items / properties / googleSearch / additionalProperties
        Removed value: -{}
      • removedInput schema / properties / tools / items / properties / googleSearch / properties
        Removed value: -{}
      • removedInput schema / properties / tools / items / properties / googleSearchRetrieval / additionalProperties
        Removed value: -{}
      • removedInput schema / properties / tools / items / properties / googleSearchRetrieval / properties
        Removed value: -{}
      • removedInput schema / properties / tools / items / properties / google_search / additionalProperties
        Removed value: -{}
      • removedInput schema / properties / tools / items / properties / google_search / properties
        Removed value: -{}
      • removedInput schema / properties / tools / items / properties / google_search_retrieval / additionalProperties
        Removed value: -{}
      • removedInput schema / properties / tools / items / properties / google_search_retrieval / properties
        Removed value: -{}
      • removedInput schema / properties / tools / items / properties / urlContext / additionalProperties
        Removed value: -{}
      • removedInput schema / properties / tools / items / properties / urlContext / properties
        Removed value: -{}
      • removedInput schema / properties / tools / items / properties / url_context / additionalProperties
        Removed value: -{}
      • removedInput schema / properties / tools / items / properties / url_context / properties
        Removed value: -{}
    • Changedcreate_image6 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • changedInput schema / properties / background / description
        Previous value: -"Background handling for compatible image generation flows such as gpt-image-2 text-to-image. Not supported for gpt-image-2 image edits."New value: +"Background handling for compatible image flows. For gpt-image-2 generation and edits, accepted values are auto and opaque; transparent is not supported. Other models may support different values."
      • removedInput schema / properties / seed / maximum
        Removed value: -9007199254740991
      • removedInput schema / properties / seed / minimum
        Removed value: --9007199254740991
      • removedInput schema / properties / stream
        Removed value: -{
        -  "const": false,
        -  "description": "Image streaming is not exposed through MCP tool calls; omit stream or set it to false.",
        -  "type": "boolean"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "prompt",
        -  "model"
        -]New value: +[
        +  "model",
        +  "prompt"
        +]
    • Changedcreate_image_file4 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / properties / seed / maximum
        Removed value: -9007199254740991
      • removedInput schema / properties / seed / minimum
        Removed value: --9007199254740991
      • removedInput schema / properties / stream
        Removed value: -{
        -  "const": false,
        -  "description": "Image streaming is not exposed through MCP tool calls; omit stream or set it to false.",
        -  "type": "boolean"
        -}
    • Changedcreate_multimodal_embedding3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / properties / dimensions / maximum
        Removed value: -9007199254740991
      • changedInput schema / properties / input / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "description": "A multimodal embedding input item. Text input is generally available; image input may require feature enablement.",
        -    "properties": {
        -      "image_base64": {
        -        "description": "Base64-encoded image content",
        -        "type": "string"
        -      },
        -      "image_mime_type": {
        -        "description": "MIME type for image_base64",
        -        "type": "string"
        -      },
        -      "image_url": {
        -        "description": "Public image URL to embed",
        -        "type": "string"
        -      },
        -      "text": {
        -        "description": "Text to embed",
        -        "type": "string"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "items": {
        -      "additionalProperties": false,
        -      "description": "A multimodal embedding input item. Text input is generally available; image input may require feature enablement.",
        -      "properties": {
        -        "image_base64": {
        -          "description": "Base64-encoded image content",
        -          "type": "string"
        -        },
        -        "image_mime_type": {
        -          "description": "MIME type for image_base64",
        -          "type": "string"
        -        },
        -        "image_url": {
        -          "description": "Public image URL to embed",
        -          "type": "string"
        -        },
        -        "text": {
        -          "description": "Text to embed",
        -          "type": "string"
        -        }
        -      },
        -      "type": "object"
        -    },
        -    "minItems": 1,
        -    "type": "array"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "description": "A multimodal embedding input item. Text input is generally available; image input may require feature enablement.",
        +    "properties": {
        +      "image_base64": {
        +        "description": "Base64-encoded image content",
        +        "type": "string"
        +      },
        +      "image_mime_type": {
        +        "description": "MIME type for image_base64",
        +        "type": "string"
        +      },
        +      "image_url": {
        +        "description": "Public image URL to embed",
        +        "type": "string"
        +      },
        +      "text": {
        +        "description": "Text to embed",
        +        "type": "string"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  {
        +    "items": {
        +      "description": "A multimodal embedding input item. Text input is generally available; image input may require feature enablement.",
        +      "type": "object"
        +    },
        +    "minItems": 1,
        +    "type": "array"
        +  }
        +]
    • Changedcreate_music1 field changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedcreate_response28 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • addedInput schema / properties / background
        Added value: +{
        +  "description": "Whether to run the response asynchronously.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / input / oneOf
        Previous value: -[
        -  {
        -    "description": "Single string input.",
        -    "type": "string"
        -  },
        -  {
        -    "description": "Structured input items for the conversation.",
        -    "items": {},
        -    "type": "array"
        -  }
        -]New value: +[
        +  {
        +    "description": "Single string input.",
        +    "type": "string"
        +  },
        +  {
        +    "description": "Structured input items for the conversation.",
        +    "type": "array"
        +  }
        +]
      • removedInput schema / properties / max_output_tokens / maximum
        Removed value: -9007199254740991
      • removedInput schema / properties / max_output_tokens / minimum
        Removed value: --9007199254740991
      • changedInput schema / properties / metadata / additionalProperties
        Previous value: -{}New value: +true
      • removedInput schema / properties / metadata / properties
        Removed value: -{}
      • addedInput schema / properties / previous_response_id
        Added value: +{
        +  "description": "ID of a previous response to continue.",
        +  "type": "string"
        +}
      • addedInput schema / properties / prompt
        Added value: +{
        +  "additionalProperties": true,
        +  "description": "Reference to a reusable prompt template and variables.",
        +  "type": "object"
        +}
      • addedInput schema / properties / reasoning
        Added value: +{
        +  "additionalProperties": true,
        +  "description": "Reasoning configuration.",
        +  "type": "object"
        +}
      • removedInput schema / properties / reasoning_effort
        Removed value: -{
        -  "description": "Reasoning effort hint for compatible models.",
        -  "type": "string"
        -}
      • removedInput schema / properties / seed
        Removed value: -{
        -  "description": "Seed for deterministic-compatible providers.",
        -  "maximum": 9007199254740991,
        -  "minimum": -9007199254740991,
        -  "type": "integer"
        -}
      • removedInput schema / properties / service_tier / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedInput schema / properties / service_tier / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • addedInput schema / properties / store
        Added value: +{
        +  "description": "Whether the response is stored for later retrieval.",
        +  "type": "boolean"
        +}
      • removedInput schema / properties / stream
        Removed value: -{
        -  "const": false,
        -  "description": "MCP tool calls return one final result; omit stream or set it to false.",
        -  "type": "boolean"
        -}
      • changedInput schema / properties / stream_options / additionalProperties
        Previous value: -falseNew value: +true
      • changedInput schema / properties / text / additionalProperties
        Previous value: -{}New value: +true
      • removedInput schema / properties / text / properties
        Removed value: -{}
      • changedInput schema / properties / tool_choice / oneOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "additionalProperties": {},
        -    "properties": {},
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "additionalProperties": true,
        +    "type": "object"
        +  }
        +]
      • changedInput schema / properties / tools / description
        Previous value: -"Tools available to the model. For hosted image_generation tools that use the default image tool model or explicitly set model: gpt-image-2, TokenLab removes unsupported input_fidelity before forwarding because GPT Image 2 already treats image inputs as high fidelity. Do not send background: transparent for that tool; TokenLab does not silently remove it because that changes output semantics."New value: +"Tools available to the model. Tool types and combinations are validated by the selected service."
      • changedInput schema / properties / tools / items / additionalProperties
        Previous value: -{}New value: +true
      • removedInput schema / properties / tools / items / properties
        Removed value: -{}
      • addedInput schema / properties / top_p
        Added value: +{
        +  "description": "Nucleus sampling probability.",
        +  "type": "number"
        +}
      • addedInput schema / properties / truncation
        Added value: +{
        +  "description": "Truncation strategy for long conversations.",
        +  "type": "string"
        +}
      • removedInput schema / properties / truncation_strategy
        Removed value: -{
        -  "description": "Truncation strategy for long conversations when supported.",
        -  "type": "string"
        -}
      • removedInput schema / properties / user
        Removed value: -{
        -  "description": "End-user identifier.",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "model",
        -  "input"
        -]New value: +[
        +  "model"
        +]
    • Changedcreate_speech1 field changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedcreate_video13 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • changedInput schema / properties / end_image / description
        Previous value: -"Last frame image input for start-end-to-video flows. When the selected Seedance model can use the TokenLab material library, TokenLab prepares this image input as a reusable material before generation; if it is not ACTIVE within 60 seconds, the API returns 409 seedance_material_preparing with auto_material_asset_ids. If the selected model cannot use the material library, ordinary image inputs continue on the regular image path."New value: +"Last frame image input for start-end-to-video flows. Seedance accepts a public image reference or asset://asset-YYYYMMDDHHMMSS-xxxxx for an ACTIVE TokenLab material owned by the requesting organization. When the selected Seedance model can use the TokenLab material library, TokenLab prepares ordinary image input as a reusable material before generation; if it is not ACTIVE within 60 seconds, the API returns 409 seedance_material_preparing with auto_material_asset_ids. If the selected model cann…"
      • removedInput schema / properties / extend_at / maximum
        Removed value: -9007199254740991
      • removedInput schema / properties / frames / maximum
        Removed value: -9007199254740991
      • changedInput schema / properties / image / description
        Previous value: -"Inline image as a data URL (for example, data:image/png;base64,...). Prefer image_url for broader production compatibility. When the selected Seedance model can use the TokenLab material library, TokenLab prepares this image input as a reusable material before generation; if it is not ACTIVE within 60 seconds, the API returns 409 seedance_material_preparing with auto_material_asset_ids. If the selected model cannot use the material library, ordinary image inputs continue on the regular image path."New value: +"Inline image as a data URL (for example, data:image/png;base64,...). Prefer image_url for broader production compatibility. When the selected Seedance model can use the TokenLab material library, TokenLab prepares this image input as a reusable material before generation; if it is not ACTIVE within 60 seconds, the API returns 409 seedance_material_preparing with auto_material_asset_ids. If the selected model cannot use the material library, ordinary image inputs continue on the regular image pa…"
      • changedInput schema / properties / image_url / description
        Previous value: -"Publicly reachable image URL for image-to-video generation. Preferred over inline base64 in production. When the selected Seedance model can use the TokenLab material library, TokenLab prepares this image input as a reusable material before generation; if it is not ACTIVE within 60 seconds, the API returns 409 seedance_material_preparing with auto_material_asset_ids. If the selected model cannot use the material library, ordinary image inputs continue on the regular image path."New value: +"Publicly reachable image URL for image-to-video generation, or asset://asset-YYYYMMDDHHMMSS-xxxxx for an ACTIVE TokenLab Seedance material used as the first frame. Preferred over inline base64 in production. TokenLab verifies material ownership. When the selected Seedance model can use the TokenLab material library, TokenLab prepares ordinary image input as a reusable material before generation; if it is not ACTIVE within 60 seconds, the API returns 409 seedance_material_preparing with auto_mat…"
      • removedInput schema / properties / kling_elements / items / properties / element_input_urls / items / format
        Removed value: -"uri"
      • removedInput schema / properties / kling_elements / items / properties / element_input_urls / items / type
        Removed value: -"string"
      • removedInput schema / properties / kling_elements / items / properties / element_input_urls / maxItems
        Removed value: -4
      • removedInput schema / properties / kling_elements / items / properties / element_input_urls / minItems
        Removed value: -2
      • changedInput schema / properties / material_asset_id / description
        Previous value: -"TokenLab Seedance material asset ID returned by /v1/videos/assets, by automatic image preparation, or by a real-person verification bind flow. Use it after the asset is ACTIVE with Seedance models that can use the TokenLab material library. The asset must belong to the current account."New value: +"TokenLab Seedance material asset ID returned by /v1/videos/assets, by automatic image preparation, or from a real-person group returned by GetVisualValidateResult. Use it after the asset is ACTIVE with Seedance models that can use the TokenLab material library. The asset must belong to the current account. This field is a generic reference input; to assign first-frame, last-frame, or reference-image semantics explicitly, put asset://<material_asset_id> in start_image, end_image, or reference_im…"
      • changedInput schema / properties / reference_images / description
        Previous value: -"Canonical public reference-image field for reference-to-video conditioning. This endpoint currently allows up to 9 URLs or compatible data URLs; model-specific limits can be lower. xAI grok-imagine-video accepts up to 7 image references with duration capped at 10 seconds, and grok-imagine-video-1.5-preview does not accept reference images. When the selected Seedance model can use the TokenLab material library, TokenLab prepares this image input as reusable material before generation; if it is not ACTIVE within 60 seconds, the API returns 409 seedance_material_preparing with auto_material_asset_ids. If the selected model cannot use the material library, ordinary image inputs continue on the regular image path."New value: +"Canonical public reference-image field for reference-to-video conditioning. This endpoint currently allows up to 9 URLs, compatible data URLs, or for Seedance, asset://asset-YYYYMMDDHHMMSS-xxxxx URIs for ACTIVE TokenLab materials owned by the requesting organization; model-specific limits can be lower. xAI grok-imagine-video accepts up to 7 image references with duration capped at 10 seconds; grok-imagine-video-1.5 and grok-imagine-video-1.5-preview are image-to-video only and do not accept ref…"
      • changedInput schema / properties / start_image / description
        Previous value: -"First frame image input for start-end-to-video flows. When the selected Seedance model can use the TokenLab material library, TokenLab prepares this image input as a reusable material before generation; if it is not ACTIVE within 60 seconds, the API returns 409 seedance_material_preparing with auto_material_asset_ids. If the selected model cannot use the material library, ordinary image inputs continue on the regular image path."New value: +"First frame image input for start-end-to-video flows. Seedance accepts a public image reference or asset://asset-YYYYMMDDHHMMSS-xxxxx for an ACTIVE TokenLab material owned by the requesting organization. When the selected Seedance model can use the TokenLab material library, TokenLab prepares ordinary image input as a reusable material before generation; if it is not ACTIVE within 60 seconds, the API returns 409 seedance_material_preparing with auto_material_asset_ids. If the selected model can…"
    • Changeddelete_file2 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • addedInput schema / properties / anthropic-beta
        Added value: +{
        +  "description": "Include files-api-2025-04-14 to use Anthropic Files API mode.",
        +  "type": "string"
        +}
    • Changededit_image13 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • addedInput schema / properties / images / items / additionalProperties
        Added value: +false
      • removedInput schema / properties / images / items / allOf
        Removed value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "file_id": {
        -        "description": "A file id returned by TokenLab /v1/files and bound to the same image-edit configuration.",
        -        "type": "string"
        -      },
        -      "image_url": {
        -        "format": "uri",
        -        "type": "string"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "oneOf": [
        -      {},
        -      {}
        -    ]
        -  }
        -]
      • addedInput schema / properties / images / items / oneOf
        Added value: +[
        +  {},
        +  {}
        +]
      • addedInput schema / properties / images / items / properties
        Added value: +{
        +  "file_id": {
        +    "description": "A file id returned by TokenLab /v1/files and bound to the same image-edit configuration.",
        +    "type": "string"
        +  },
        +  "image_url": {
        +    "format": "uri",
        +    "type": "string"
        +  }
        +}
      • addedInput schema / properties / images / items / type
        Added value: +"object"
      • addedInput schema / properties / mask / additionalProperties
        Added value: +false
      • removedInput schema / properties / mask / allOf
        Removed value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "file_id": {
        -        "description": "A file id returned by TokenLab /v1/files and bound to the same image-edit configuration.",
        -        "type": "string"
        -      },
        -      "image_url": {
        -        "description": "Source mask image URL. Public http/https URLs and compatible data URLs are supported by the runtime validation path.",
        -        "format": "uri",
        -        "type": "string"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "oneOf": [
        -      {},
        -      {}
        -    ]
        -  }
        -]
      • addedInput schema / properties / mask / oneOf
        Added value: +[
        +  {
        +    "required": [
        +      "image_url"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "file_id"
        +    ]
        +  }
        +]
      • addedInput schema / properties / mask / properties
        Added value: +{
        +  "file_id": {
        +    "description": "A file id returned by TokenLab /v1/files and bound to the same image-edit configuration.",
        +    "type": "string"
        +  },
        +  "image_url": {
        +    "description": "Source mask image URL. Public http/https URLs and compatible data URLs are supported by the runtime validation path.",
        +    "format": "uri",
        +    "type": "string"
        +  }
        +}
      • addedInput schema / properties / mask / type
        Added value: +"object"
      • removedInput schema / properties / n / maximum
        Removed value: -9007199254740991
      • removedInput schema / properties / stream
        Removed value: -{
        -  "const": false,
        -  "description": "Image streaming is not exposed through MCP tool calls; omit stream or set it to false.",
        -  "type": "boolean"
        -}
    • Changededit_image_file3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / properties / n / maximum
        Removed value: -9007199254740991
      • removedInput schema / properties / stream
        Removed value: -{
        -  "const": false,
        -  "description": "Image streaming is not exposed through MCP tool calls; omit stream or set it to false.",
        -  "type": "boolean"
        -}
    • Changedget_api_overview2 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_model1 field changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedget_model_pricing1 field changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedget_pricing1 field changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedget_task_status1 field changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedlist_files7 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • addedInput schema / properties / after_id
        Added value: +{
        +  "description": "Anthropic Files cursor. Return files after this public file id. Requires the Anthropic Files beta header and cannot be combined with before_id.",
        +  "type": "string"
        +}
      • addedInput schema / properties / anthropic-beta
        Added value: +{
        +  "description": "Include files-api-2025-04-14 to use Anthropic Files API mode.",
        +  "type": "string"
        +}
      • addedInput schema / properties / before_id
        Added value: +{
        +  "description": "Anthropic Files cursor. Return files before this public file id. Requires the Anthropic Files beta header and cannot be combined with after_id.",
        +  "type": "string"
        +}
      • addedInput schema / properties / limit / default
        Added value: +20
      • changedInput schema / properties / limit / maximum
        Previous value: -100New value: +1000
      • addedInput schema / properties / scope_id
        Added value: +{
        +  "description": "Reserved Anthropic Files scope cursor. TokenLab currently returns an explicit unsupported error rather than silently ignoring this value.",
        +  "type": "string"
        +}
    • Changedlist_models1 field changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedrerank_documents3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / properties / top_n / maximum
        Removed value: -9007199254740991
      • removedInput schema / properties / top_n / minimum
        Removed value: --9007199254740991
    • Changedretrieve_file2 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • addedInput schema / properties / anthropic-beta
        Added value: +{
        +  "description": "Include files-api-2025-04-14 to use Anthropic Files API mode.",
        +  "type": "string"
        +}
    • Changedretrieve_file_content1 field changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedtranscribe_audio1 field changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedtranslate_audio1 field changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedtranslate_text1 field changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedupload_file4 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • addedInput schema / properties / anthropic-beta
        Added value: +{
        +  "description": "Include files-api-2025-04-14 to use Anthropic Files API mode.",
        +  "type": "string"
        +}
      • changedInput schema / properties / purpose / description
        Previous value: -"Use batch for Batch API JSONL files. Use user_data or vision for image files that will be referenced from image edits."New value: +"Required in TokenLab/OpenAI-compatible mode: use batch for Batch API JSONL files, or user_data/vision for image edits. Omit in Anthropic Files mode."
      • changedInput schema / required
        Previous value: -[
        -  "file",
        -  "purpose"
        -]New value: +[
        +  "file"
        +]
  2. 2 tool updatesv0.6.3
    • Changedcreate_image5 fields changed
      • removedInput schema / properties / quality / default
        Removed value: -"standard"
      • changedInput schema / properties / quality / description
        Previous value: -"Image quality. GPT Image models such as gpt-image-2 use auto/low/medium/high. Other image families may use provider-specific values."New value: +"Image quality. Defaults and accepted values are model-specific. For gpt-image-2, omit this field or use auto for automatic quality, or send low, medium, or high. Other image families may use provider-specific values."
      • removedInput schema / properties / quality / enum
        Removed value: -[
        -  "standard",
        -  "hd",
        -  "auto",
        -  "low",
        -  "medium",
        -  "high"
        -]
      • removedInput schema / properties / size / default
        Removed value: -"1024x1024"
      • changedInput schema / properties / size / description
        Previous value: -"Image size. For gpt-image-2, use auto or WIDTHxHEIGHT; custom dimensions must both be multiples of 16, longest edge <= 3840px, long/short ratio <= 3:1, and total pixels between 655,360 and 8,294,400."New value: +"Image size. Defaults are model-specific. For gpt-image-2, omit this field or use auto for automatic sizing, or send WIDTHxHEIGHT; custom dimensions must both be multiples of 16, longest edge <= 3840px, long/short ratio <= 3:1, and total pixels between 655,360 and 8,294,400."
    • Changedlist_models5 fields changed
      • addedInput schema / properties / category
        Added value: +{
        +  "description": "Filter by model category.",
        +  "enum": [
        +    "chat",
        +    "embedding",
        +    "translation",
        +    "image",
        +    "video",
        +    "audio",
        +    "tts",
        +    "stt",
        +    "rerank",
        +    "3d",
        +    "music"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / provider
        Added value: +{
        +  "description": "Filter by public model provider, for example openai, anthropic, google, or minimax.",
        +  "type": "string"
        +}
      • addedInput schema / properties / recommended_for
        Added value: +{
        +  "description": "Sort supported non-chat models for a task category and include recommendation evidence.",
        +  "enum": [
        +    "image",
        +    "video",
        +    "music",
        +    "3d",
        +    "tts",
        +    "stt",
        +    "embedding",
        +    "rerank",
        +    "translation"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / tag
        Added value: +{
        +  "description": "Filter by a public capability tag.",
        +  "type": "string"
        +}
      • addedInput schema / properties / view
        Added value: +{
        +  "default": "compact",
        +  "description": "Compact model-selection output is the MCP default. Set view to full only when the complete OpenAI-compatible list shape is required.",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
  3. 1 tool updatev0.4.2
    • Changedcreate_chat_completion5 fields changed
      • changedInput schema / properties / messages / items / properties / content / oneOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "items": {
        -      "oneOf": [
        -        {
        -          "additionalProperties": {},
        -          "properties": {
        -            "text": {
        -              "type": "string"
        -            },
        -            "type": {
        -              "const": "text",
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "type",
        -            "text"
        -          ],
        -          "type": "object"
        -        },
        -        {
        -          "additionalProperties": {},
        -          "properties": {
        -            "image_url": {
        -              "additionalProperties": {},
        -              "properties": {
        -                "detail": {
        -                  "enum": [
        -                    "auto",
        -                    "low",
        -                    "high"
        -                  ],
        -                  "type": "string"
        -                },
        -                "url": {
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "url"
        -              ],
        -              "type": "object"
        -            },
        -            "type": {
        -              "const": "image_url",
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "type",
        -            "image_url"
        -          ],
        -          "type": "object"
        -        }
        -      ]
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "items": {
        +      "oneOf": [
        +        {
        +          "additionalProperties": {},
        +          "properties": {
        +            "text": {
        +              "type": "string"
        +            },
        +            "type": {
        +              "const": "text",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "type",
        +            "text"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "additionalProperties": {},
        +          "properties": {
        +            "image_url": {
        +              "additionalProperties": {},
        +              "properties": {
        +                "detail": {
        +                  "enum": [
        +                    "auto",
        +                    "low",
        +                    "high"
        +                  ],
        +                  "type": "string"
        +                },
        +                "url": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "url"
        +              ],
        +              "type": "object"
        +            },
        +            "type": {
        +              "const": "image_url",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "type",
        +            "image_url"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "additionalProperties": {},
        +          "properties": {
        +            "type": {
        +              "const": "video_url",
        +              "type": "string"
        +            },
        +            "video_url": {
        +              "additionalProperties": {},
        +              "properties": {
        +                "url": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "url"
        +              ],
        +              "type": "object"
        +            }
        +          },
        +          "required": [
        +            "type",
        +            "video_url"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "additionalProperties": {},
        +          "properties": {
        +            "input_audio": {
        +              "additionalProperties": {},
        +              "properties": {
        +                "data": {
        +                  "description": "Public audio URL or Base64 data URL.",
        +                  "type": "string"
        +                },
        +                "format": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "data"
        +              ],
        +              "type": "object"
        +            },
        +            "type": {
        +              "const": "input_audio",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "type",
        +            "input_audio"
        +          ],
        +          "type": "object"
        +        }
        +      ]
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / repetition_penalty
        Added value: +{
        +  "description": "Repetition penalty for compatible models.",
        +  "exclusiveMinimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / speech_rate
        Added value: +{
        +  "description": "Speech rate for compatible translated audio output.",
        +  "maximum": 2,
        +  "minimum": 0.5,
        +  "type": "number"
        +}
      • changedInput schema / properties / top_k / minimum
        Previous value: -1New value: +0
      • addedInput schema / properties / translation_options
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Language settings for models that translate audio or video through Chat Completions.",
        +  "properties": {
        +    "source_lang": {
        +      "description": "Source language code. Omit when the model supports automatic detection.",
        +      "type": "string"
        +    },
        +    "target_lang": {
        +      "description": "Target language code.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "target_lang"
        +  ],
        +  "type": "object"
        +}
  4. 30 tool updatesv0.3.1
    • Addedcancel_task
    • Changedcompare_models2 fields changed
      • removedInput schema / properties / include_raw / description
        Removed value: -"Return raw details and pricing payloads instead of compact summaries."
      • removedInput schema / properties / models / description
        Removed value: -"Public TokenLab model IDs to compare."
    • Addedcreate_3d_model
    • Changedcreate_anthropic_message25 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / max_tokens / default
        Removed value: -512
      • changedInput schema / properties / max_tokens / description
        Previous value: -"Maximum output tokens."New value: +"Maximum number of tokens to generate"
      • changedInput schema / properties / messages / description
        Previous value: -"Native Anthropic conversation messages."New value: +"Messages in the conversation"
      • addedInput schema / properties / messages / items / additionalProperties
        Added value: +{}
      • removedInput schema / properties / messages / items / properties / content / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "items": {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    },
        -    "minItems": 1,
        -    "type": "array"
        -  }
        -]
      • addedInput schema / properties / messages / items / properties / content / oneOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "items": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "source": {
        +          "additionalProperties": {},
        +          "properties": {
        +            "data": {
        +              "type": "string"
        +            },
        +            "media_type": {
        +              "type": "string"
        +            },
        +            "type": {
        +              "enum": [
        +                "base64",
        +                "url"
        +              ],
        +              "type": "string"
        +            },
        +            "url": {
        +              "type": "string"
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "text": {
        +          "type": "string"
        +        },
        +        "type": {
        +          "enum": [
        +            "text",
        +            "image"
        +          ],
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "type": "array"
        +  }
        +]
      • removedInput schema / properties / messages / minItems
        Removed value: -1
      • changedInput schema / properties / metadata / description
        Previous value: -"Optional request metadata."New value: +"Request metadata echoed into downstream logs or traces when supported."
      • changedInput schema / properties / model / description
        Previous value: -"Public TokenLab Claude-compatible model ID."New value: +"Model to use (e.g., claude-sonnet-4-6)"
      • removedInput schema / properties / model / minLength
        Removed value: -1
      • removedInput schema / properties / prompt
        Removed value: -{
        -  "description": "Convenience shortcut for one user text message; do not combine with messages.",
        -  "minLength": 1,
        -  "type": "string"
        -}
      • changedInput schema / properties / service_tier / description
        Previous value: -"Optional service-tier hint."New value: +"Service tier hint for compatible providers."
      • removedInput schema / properties / stop_sequences / description
        Removed value: -"Optional stop sequences."
      • addedInput schema / properties / stream
        Added value: +{
        +  "const": false,
        +  "default": false,
        +  "description": "MCP tool calls return one final result; omit stream or set it to false.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / stream_options
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Streaming options such as usage chunk inclusion.",
        +  "properties": {},
        +  "type": "object"
        +}
      • changedInput schema / properties / system / description
        Previous value: -"Optional system prompt."New value: +"System prompt"
      • removedInput schema / properties / temperature / description
        Removed value: -"Optional sampling temperature."
      • changedInput schema / properties / thinking / description
        Previous value: -"Thinking configuration for compatible models."New value: +"Thinking configuration for compatible Anthropic-style models."
      • removedInput schema / properties / tool_choice / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "additionalProperties": {},
        -    "properties": {},
        -    "type": "object"
        -  }
        -]
      • addedInput schema / properties / tool_choice / oneOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "additionalProperties": {},
        +    "properties": {},
        +    "type": "object"
        +  }
        +]
      • changedInput schema / properties / tools / description
        Previous value: -"Native Anthropic tool definitions."New value: +"Tool definitions available to the model."
      • removedInput schema / properties / top_k / description
        Removed value: -"Optional top-k sampling cutoff."
      • removedInput schema / properties / top_p / description
        Removed value: -"Optional nucleus sampling probability."
      • changedInput schema / required
        Previous value: -[
        -  "model"
        -]New value: +[
        +  "model",
        +  "max_tokens",
        +  "messages"
        +]
    • Changedcreate_chat_completion60 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / audio / description
        Previous value: -"Optional audio output configuration."New value: +"Audio output configuration when requesting audio modality."
      • addedInput schema / properties / frequency_penalty / default
        Added value: +0
      • changedInput schema / properties / frequency_penalty / description
        Previous value: -"Optional frequency penalty."New value: +"Frequency penalty (-2 to 2)"
      • changedInput schema / properties / logit_bias / description
        Previous value: -"Optional per-token logit-bias map."New value: +"Per-token logit bias map."
      • addedInput schema / properties / logit_bias / properties
        Added value: +{}
      • removedInput schema / properties / logit_bias / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
      • changedInput schema / properties / logprobs / description
        Previous value: -"Whether to return output-token log probabilities."New value: +"Whether to return log probabilities for output tokens."
      • changedInput schema / properties / max_completion_tokens / description
        Previous value: -"Optional completion-token cap for compatible reasoning models."New value: +"Maximum completion tokens for newer reasoning-enabled model families"
      • changedInput schema / properties / max_tokens / description
        Previous value: -"Optional maximum generated tokens."New value: +"Maximum number of tokens to generate"
      • changedInput schema / properties / messages / description
        Previous value: -"OpenAI-compatible conversation messages, including text, image, tool, and function messages."New value: +"A list of messages comprising the conversation"
      • removedInput schema / properties / messages / items / properties / content / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "items": {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • changedInput schema / properties / messages / items / properties / content / description
        Previous value: -"Text, OpenAI-compatible multimodal content parts, or null for tool/function messages."New value: +"Message content (text or multimodal)"
      • addedInput schema / properties / messages / items / properties / content / oneOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "items": {
        +      "oneOf": [
        +        {
        +          "additionalProperties": {},
        +          "properties": {
        +            "text": {
        +              "type": "string"
        +            },
        +            "type": {
        +              "const": "text",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "type",
        +            "text"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "additionalProperties": {},
        +          "properties": {
        +            "image_url": {
        +              "additionalProperties": {},
        +              "properties": {
        +                "detail": {
        +                  "enum": [
        +                    "auto",
        +                    "low",
        +                    "high"
        +                  ],
        +                  "type": "string"
        +                },
        +                "url": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "url"
        +              ],
        +              "type": "object"
        +            },
        +            "type": {
        +              "const": "image_url",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "type",
        +            "image_url"
        +          ],
        +          "type": "object"
        +        }
        +      ]
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / messages / items / properties / name / description
        Previous value: -"Optional name for a function or tool message."New value: +"Name of the function/tool (for function/tool messages)"
      • changedInput schema / properties / messages / items / properties / role / description
        Previous value: -"OpenAI Chat Completions message role."New value: +"The role of the message author"
      • changedInput schema / properties / messages / items / properties / tool_call_id / description
        Previous value: -"Tool call ID answered by a tool message."New value: +"ID of the tool call being responded to"
      • changedInput schema / properties / messages / items / properties / tool_calls / description
        Previous value: -"Tool calls made by an assistant message."New value: +"Tool calls made by the assistant"
      • addedInput schema / properties / messages / items / properties / tool_calls / items / properties / function
        Added value: +{
        +  "additionalProperties": {},
        +  "properties": {
        +    "arguments": {
        +      "type": "string"
        +    },
        +    "name": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "name",
        +    "arguments"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / messages / items / properties / tool_calls / items / properties / id
        Added value: +{
        +  "description": "Tool call ID",
        +  "type": "string"
        +}
      • addedInput schema / properties / messages / items / properties / tool_calls / items / properties / type
        Added value: +{
        +  "const": "function",
        +  "type": "string"
        +}
      • addedInput schema / properties / messages / items / properties / tool_calls / items / required
        Added value: +[
        +  "id",
        +  "type",
        +  "function"
        +]
      • changedInput schema / properties / modalities / description
        Previous value: -"Optional requested output modalities, such as text or audio."New value: +"Requested output modalities such as text or audio."
      • removedInput schema / properties / modalities / minItems
        Removed value: -1
      • changedInput schema / properties / model / description
        Previous value: -"Public TokenLab model ID."New value: +"ID of the model to use (e.g., gpt-5.4, claude-sonnet-4-6)"
      • removedInput schema / properties / model / minLength
        Removed value: -1
      • addedInput schema / properties / n / default
        Added value: +1
      • changedInput schema / properties / n / description
        Previous value: -"Optional number of non-streaming completions."New value: +"Number of completions to generate"
      • changedInput schema / properties / parallel_tool_calls / description
        Previous value: -"Whether compatible models may make parallel tool calls."New value: +"Whether the model may issue parallel tool calls."
      • changedInput schema / properties / prediction / description
        Previous value: -"Optional prediction hint for compatible models."New value: +"Prediction hints for providers that support draft or speculative decoding."
      • addedInput schema / properties / presence_penalty / default
        Added value: +0
      • changedInput schema / properties / presence_penalty / description
        Previous value: -"Optional presence penalty."New value: +"Presence penalty (-2 to 2)"
      • changedInput schema / properties / reasoning_effort / description
        Previous value: -"Optional reasoning-effort hint for compatible models."New value: +"Reasoning effort hint for compatible model families."
      • addedInput schema / properties / response_format / additionalProperties
        Added value: +{}
      • changedInput schema / properties / response_format / description
        Previous value: -"Optional response format."New value: +"Response format specification"
      • removedInput schema / properties / response_format / required
        Removed value: -[
        -  "type"
        -]
      • changedInput schema / properties / seed / description
        Previous value: -"Optional deterministic seed for compatible models."New value: +"Seed for deterministic generation"
      • changedInput schema / properties / service_tier / description
        Previous value: -"Optional service-tier hint for compatible models."New value: +"Service tier hint for compatible providers."
      • removedInput schema / properties / stop / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "maxItems": 4,
        -    "minItems": 1,
        -    "type": "array"
        -  }
        -]
      • changedInput schema / properties / stop / description
        Previous value: -"Optional stop sequence or up to four stop sequences."New value: +"Stop sequences"
      • addedInput schema / properties / stop / oneOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "items": {
        +      "type": "string"
        +    },
        +    "maxItems": 4,
        +    "type": "array"
        +  }
        +]
      • addedInput schema / properties / stream
        Added value: +{
        +  "const": false,
        +  "default": false,
        +  "description": "MCP tool calls return one final result; omit stream or set it to false.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / stream_options
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Streaming options such as usage chunk inclusion.",
        +  "properties": {},
        +  "type": "object"
        +}
      • addedInput schema / properties / temperature / default
        Added value: +1
      • changedInput schema / properties / temperature / description
        Previous value: -"Optional sampling temperature."New value: +"Sampling temperature (0-2)"
      • removedInput schema / properties / tool_choice / anyOf
        Removed value: -[
        -  {
        -    "enum": [
        -      "none",
        -      "auto",
        -      "required"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "properties": {
        -      "function": {
        -        "properties": {
        -          "name": {
        -            "minLength": 1,
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "name"
        -        ],
        -        "type": "object"
        -      },
        -      "type": {
        -        "const": "function",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "type",
        -      "function"
        -    ],
        -    "type": "object"
        -  }
        -]
      • changedInput schema / properties / tool_choice / description
        Previous value: -"Optional OpenAI tool-choice setting."New value: +"Controls which function is called"
      • addedInput schema / properties / tool_choice / oneOf
        Added value: +[
        +  {
        +    "enum": [
        +      "none",
        +      "auto",
        +      "required"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "additionalProperties": {},
        +    "properties": {
        +      "function": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "name": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "name"
        +        ],
        +        "type": "object"
        +      },
        +      "type": {
        +        "const": "function",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "function"
        +    ],
        +    "type": "object"
        +  }
        +]
      • changedInput schema / properties / tools / description
        Previous value: -"Optional OpenAI function tools available to the model."New value: +"List of tools the model may call"
      • addedInput schema / properties / tools / items / properties / function / properties / description / description
        Added value: +"Function description"
      • addedInput schema / properties / tools / items / properties / function / properties / name / description
        Added value: +"Function name"
      • addedInput schema / properties / tools / items / properties / function / properties / name / maxLength
        Added value: +64
      • removedInput schema / properties / tools / items / properties / function / properties / name / minLength
        Removed value: -1
      • addedInput schema / properties / tools / items / properties / function / properties / parameters / description
        Added value: +"JSON Schema for function parameters"
      • addedInput schema / properties / tools / items / properties / type / description
        Added value: +"Tool type (currently only 'function')"
      • changedInput schema / properties / top_k / description
        Previous value: -"Optional top-k sampling cutoff for compatible models."New value: +"Top-k sampling cutoff for compatible providers."
      • changedInput schema / properties / top_logprobs / description
        Previous value: -"Optional number of likely tokens to include with log probabilities."New value: +"Number of most likely tokens to return at each position when logprobs is enabled."
      • addedInput schema / properties / top_p / default
        Added value: +1
      • changedInput schema / properties / top_p / description
        Previous value: -"Optional nucleus sampling probability."New value: +"Nucleus sampling probability"
      • changedInput schema / properties / user / description
        Previous value: -"Optional end-user identifier."New value: +"End-user identifier for abuse detection"
    • Addedcreate_embedding
    • Changedcreate_gemini_content48 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / cachedContent / description
        Previous value: -"Optional cached content resource name."New value: +"Gemini cached content resource name for compatible models."
      • changedInput schema / properties / contents / description
        Previous value: -"Native Gemini conversation contents."New value: +"Conversation contents"
      • removedInput schema / properties / contents / items / properties / parts / items / additionalProperties
        Removed value: -{}
      • addedInput schema / properties / contents / items / properties / parts / items / anyOf
        Added value: +[
        +  {
        +    "additionalProperties": {},
        +    "properties": {
        +      "text": {
        +        "type": "string"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": {},
        +    "properties": {
        +      "inlineData": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "data": {
        +            "type": "string"
        +          },
        +          "mimeType": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": {},
        +    "properties": {
        +      "inline_data": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "data": {
        +            "type": "string"
        +          },
        +          "mime_type": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": {},
        +    "properties": {
        +      "fileData": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "fileUri": {
        +            "type": "string"
        +          },
        +          "mimeType": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": {},
        +    "properties": {
        +      "file_data": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "file_uri": {
        +            "type": "string"
        +          },
        +          "mime_type": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": {},
        +    "properties": {
        +      "videoMetadata": {
        +        "additionalProperties": {},
        +        "properties": {},
        +        "type": "object"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": {},
        +    "properties": {
        +      "video_metadata": {
        +        "additionalProperties": {},
        +        "properties": {},
        +        "type": "object"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": {},
        +    "properties": {
        +      "thought": {
        +        "type": "boolean"
        +      },
        +      "thoughtSignature": {
        +        "type": "string"
        +      },
        +      "thought_signature": {
        +        "type": "string"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": {},
        +    "properties": {
        +      "functionCall": {
        +        "additionalProperties": {},
        +        "properties": {},
        +        "type": "object"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": {},
        +    "properties": {
        +      "functionResponse": {
        +        "additionalProperties": {},
        +        "properties": {},
        +        "type": "object"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": {},
        +    "properties": {
        +      "executableCode": {
        +        "additionalProperties": {},
        +        "properties": {},
        +        "type": "object"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": {},
        +    "properties": {
        +      "codeExecutionResult": {
        +        "additionalProperties": {},
        +        "properties": {},
        +        "type": "object"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": {},
        +    "properties": {
        +      "function_call": {
        +        "additionalProperties": {},
        +        "properties": {},
        +        "type": "object"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": {},
        +    "properties": {
        +      "function_response": {
        +        "additionalProperties": {},
        +        "properties": {},
        +        "type": "object"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": {},
        +    "properties": {
        +      "executable_code": {
        +        "additionalProperties": {},
        +        "properties": {},
        +        "type": "object"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": {},
        +    "properties": {
        +      "code_execution_result": {
        +        "additionalProperties": {},
        +        "properties": {},
        +        "type": "object"
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
      • removedInput schema / properties / contents / items / properties / parts / items / properties
        Removed value: -{}
      • removedInput schema / properties / contents / items / properties / parts / items / type
        Removed value: -"object"
      • removedInput schema / properties / contents / items / properties / parts / minItems
        Removed value: -1
      • removedInput schema / properties / contents / items / required
        Removed value: -[
        -  "parts"
        -]
      • removedInput schema / properties / contents / minItems
        Removed value: -1
      • removedInput schema / properties / generationConfig / description
        Removed value: -"Native Gemini generation configuration."
      • addedInput schema / properties / generationConfig / properties / candidateCount
        Added value: +{
        +  "description": "Number of response candidates for non-streaming generation. Streaming requests must omit this field or keep it at 1.",
        +  "maximum": 9007199254740991,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / generationConfig / properties / maxOutputTokens
        Added value: +{
        +  "maximum": 9007199254740991,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / generationConfig / properties / responseMimeType
        Added value: +{
        +  "description": "Requested output MIME type, such as text/plain or application/json.",
        +  "type": "string"
        +}
      • addedInput schema / properties / generationConfig / properties / responseModalities
        Added value: +{
        +  "description": "Requested output modalities for compatible native Gemini routes.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / generationConfig / properties / responseSchema
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "JSON schema for structured output when responseMimeType requests JSON.",
        +  "properties": {},
        +  "type": "object"
        +}
      • addedInput schema / properties / generationConfig / properties / stopSequences
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / generationConfig / properties / temperature
        Added value: +{
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / generationConfig / properties / thinkingConfig
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Thinking budget options for compatible Gemini models.",
        +  "properties": {
        +    "thinkingBudget": {
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / generationConfig / properties / thinking_config
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Snake-case thinking budget options for compatible Gemini models.",
        +  "properties": {
        +    "thinking_budget": {
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / generationConfig / properties / topK
        Added value: +{
        +  "maximum": 9007199254740991,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / generationConfig / properties / topP
        Added value: +{
        +  "maximum": 1,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • changedInput schema / properties / model / description
        Previous value: -"Public TokenLab Gemini-compatible model ID."New value: +"Model name (e.g., gemini-2.5-pro)"
      • removedInput schema / properties / model / minLength
        Removed value: -1
      • removedInput schema / properties / prompt
        Removed value: -{
        -  "description": "Convenience shortcut for one user text part; do not combine with contents.",
        -  "minLength": 1,
        -  "type": "string"
        -}
      • removedInput schema / properties / safetySettings / description
        Removed value: -"Native Gemini safety settings."
      • addedInput schema / properties / safetySettings / items / properties / category
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / safetySettings / items / properties / threshold
        Added value: +{
        +  "type": "string"
        +}
      • removedInput schema / properties / systemInstruction / description
        Removed value: -"Native Gemini system instruction."
      • addedInput schema / properties / systemInstruction / properties / parts
        Added value: +{
        +  "items": {
        +    "additionalProperties": {},
        +    "properties": {
        +      "text": {
        +        "type": "string"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • removedInput schema / properties / temperature
        Removed value: -{
        -  "description": "Convenience temperature setting; do not combine with generationConfig.temperature.",
        -  "minimum": 0,
        -  "type": "number"
        -}
      • changedInput schema / properties / toolConfig / description
        Previous value: -"Native Gemini tool configuration."New value: +"Gemini tool configuration such as functionCallingConfig."
      • addedInput schema / properties / toolConfig / properties / functionCallingConfig
        Added value: +{
        +  "additionalProperties": {},
        +  "properties": {
        +    "allowedFunctionNames": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "mode": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / toolConfig / properties / function_calling_config
        Added value: +{
        +  "additionalProperties": {},
        +  "properties": {
        +    "allowed_function_names": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "mode": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
      • changedInput schema / properties / tools / description
        Previous value: -"Native Gemini tools."New value: +"Gemini tools. Supported tool combinations depend on the selected model and route; unsupported native image-output tool combinations are rejected before upstream retries."
      • addedInput schema / properties / tools / items / properties / codeExecution
        Added value: +{
        +  "additionalProperties": {},
        +  "properties": {},
        +  "type": "object"
        +}
      • addedInput schema / properties / tools / items / properties / code_execution
        Added value: +{
        +  "additionalProperties": {},
        +  "properties": {},
        +  "type": "object"
        +}
      • addedInput schema / properties / tools / items / properties / computerUse
        Added value: +{
        +  "additionalProperties": {},
        +  "properties": {},
        +  "type": "object"
        +}
      • addedInput schema / properties / tools / items / properties / computer_use
        Added value: +{
        +  "additionalProperties": {},
        +  "properties": {},
        +  "type": "object"
        +}
      • addedInput schema / properties / tools / items / properties / functionDeclarations
        Added value: +{
        +  "items": {
        +    "additionalProperties": {},
        +    "properties": {},
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / tools / items / properties / function_declarations
        Added value: +{
        +  "items": {
        +    "additionalProperties": {},
        +    "properties": {},
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / tools / items / properties / googleSearch
        Added value: +{
        +  "additionalProperties": {},
        +  "properties": {},
        +  "type": "object"
        +}
      • addedInput schema / properties / tools / items / properties / googleSearchRetrieval
        Added value: +{
        +  "additionalProperties": {},
        +  "properties": {},
        +  "type": "object"
        +}
      • addedInput schema / properties / tools / items / properties / google_search
        Added value: +{
        +  "additionalProperties": {},
        +  "properties": {},
        +  "type": "object"
        +}
      • addedInput schema / properties / tools / items / properties / google_search_retrieval
        Added value: +{
        +  "additionalProperties": {},
        +  "properties": {},
        +  "type": "object"
        +}
      • addedInput schema / properties / tools / items / properties / urlContext
        Added value: +{
        +  "additionalProperties": {},
        +  "properties": {},
        +  "type": "object"
        +}
      • addedInput schema / properties / tools / items / properties / url_context
        Added value: +{
        +  "additionalProperties": {},
        +  "properties": {},
        +  "type": "object"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "model"
        -]New value: +[
        +  "model",
        +  "contents"
        +]
    • Addedcreate_image
    • Addedcreate_image_file
    • Addedcreate_multimodal_embedding
    • Addedcreate_music
    • Changedcreate_response23 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / include / description
        Previous value: -"Additional response sections to include."New value: +"Additional response sections to include when supported."
      • removedInput schema / properties / input / anyOf
        Removed value: -[
        -  {
        -    "minLength": 1,
        -    "type": "string"
        -  },
        -  {
        -    "items": {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    },
        -    "minItems": 1,
        -    "type": "array"
        -  }
        -]
      • changedInput schema / properties / input / description
        Previous value: -"Responses API input as text or native structured input items."New value: +"Input content as a string or structured item array."
      • addedInput schema / properties / input / oneOf
        Added value: +[
        +  {
        +    "description": "Single string input.",
        +    "type": "string"
        +  },
        +  {
        +    "description": "Structured input items for the conversation.",
        +    "items": {},
        +    "type": "array"
        +  }
        +]
      • changedInput schema / properties / instructions / description
        Previous value: -"Optional system/developer instructions."New value: +"System instructions"
      • changedInput schema / properties / max_output_tokens / description
        Previous value: -"Optional output token cap."New value: +"Maximum output tokens"
      • changedInput schema / properties / max_output_tokens / minimum
        Previous value: -1New value: +-9007199254740991
      • changedInput schema / properties / metadata / description
        Previous value: -"Optional request metadata."New value: +"Request metadata."
      • changedInput schema / properties / model / description
        Previous value: -"Public TokenLab model ID."New value: +"Model to use"
      • removedInput schema / properties / model / minLength
        Removed value: -1
      • changedInput schema / properties / reasoning_effort / description
        Previous value: -"Reasoning-effort hint for compatible models."New value: +"Reasoning effort hint for compatible models."
      • changedInput schema / properties / seed / description
        Previous value: -"Optional deterministic seed."New value: +"Seed for deterministic-compatible providers."
      • changedInput schema / properties / service_tier / description
        Previous value: -"Optional service-tier hint."New value: +"Service tier hint for compatible providers."
      • addedInput schema / properties / stream
        Added value: +{
        +  "const": false,
        +  "description": "MCP tool calls return one final result; omit stream or set it to false.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / stream_options
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Responses streaming options.",
        +  "properties": {
        +    "include_obfuscation": {
        +      "description": "When true, request obfuscated tokens in Responses stream events from compatible upstreams.",
        +      "type": "boolean"
        +    }
        +  },
        +  "type": "object"
        +}
      • removedInput schema / properties / temperature / description
        Removed value: -"Optional sampling temperature."
      • changedInput schema / properties / text / description
        Previous value: -"Optional native text formatting configuration."New value: +"Text formatting options."
      • removedInput schema / properties / tool_choice / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "additionalProperties": {},
        -    "properties": {},
        -    "type": "object"
        -  }
        -]
      • addedInput schema / properties / tool_choice / oneOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "additionalProperties": {},
        +    "properties": {},
        +    "type": "object"
        +  }
        +]
      • changedInput schema / properties / tools / description
        Previous value: -"Native Responses API tool definitions."New value: +"Tools available to the model. For hosted image_generation tools that use the default image tool model or explicitly set model: gpt-image-2, TokenLab removes unsupported input_fidelity before forwarding because GPT Image 2 already treats image inputs as high fidelity. Do not send background: transparent for that tool; TokenLab does not silently remove it because that changes output semantics."
      • changedInput schema / properties / truncation_strategy / description
        Previous value: -"Optional truncation strategy."New value: +"Truncation strategy for long conversations when supported."
      • changedInput schema / properties / user / description
        Previous value: -"Optional end-user identifier."New value: +"End-user identifier."
    • Addedcreate_speech
    • Addedcreate_video
    • Addeddelete_file
    • Addededit_image
    • Addededit_image_file
    • Changedget_model3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / model / description
        Previous value: -"Public TokenLab model ID, for example gpt-5.5 or gemini-3.5-flash."New value: +"The model ID"
      • removedInput schema / properties / model / minLength
        Removed value: -1
    • Changedget_model_pricing3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / model / description
        Previous value: -"Public TokenLab model ID."New value: +"The model ID"
      • removedInput schema / properties / model / minLength
        Removed value: -1
    • Addedget_pricing
    • Addedget_task_status
    • Addedlist_files
    • Changedlist_models3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / limit
        Removed value: -{
        -  "default": 25,
        -  "description": "Maximum number of models to return.",
        -  "maximum": 100,
        -  "minimum": 1,
        -  "type": "integer"
        -}
      • removedInput schema / properties / recommended_for
        Removed value: -{
        -  "description": "Optional task filter such as image, video, embedding, or rerank.",
        -  "enum": [
        -    "image",
        -    "video",
        -    "music",
        -    "3d",
        -    "tts",
        -    "stt",
        -    "embedding",
        -    "rerank",
        -    "translation"
        -  ],
        -  "type": "string"
        -}
    • Addedrerank_documents
    • Addedretrieve_file
    • Addedretrieve_file_content
    • Addedtranscribe_audio
    • Addedtranslate_audio
    • Addedtranslate_text
    • Addedupload_file
  5. 4 tool updatesv0.3.0
    • Changedcreate_anthropic_message13 fields changed
      • changedInput schema / properties / max_tokens / maximum
        Previous value: -8192New value: +9007199254740991
      • addedInput schema / properties / messages
        Added value: +{
        +  "description": "Native Anthropic conversation messages.",
        +  "items": {
        +    "properties": {
        +      "content": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "items": {
        +              "additionalProperties": {},
        +              "properties": {},
        +              "type": "object"
        +            },
        +            "minItems": 1,
        +            "type": "array"
        +          }
        +        ]
        +      },
        +      "role": {
        +        "enum": [
        +          "user",
        +          "assistant"
        +        ],
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "role",
        +      "content"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / metadata
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Optional request metadata.",
        +  "properties": {},
        +  "type": "object"
        +}
      • changedInput schema / properties / prompt / description
        Previous value: -"User prompt text."New value: +"Convenience shortcut for one user text message; do not combine with messages."
      • addedInput schema / properties / service_tier
        Added value: +{
        +  "description": "Optional service-tier hint.",
        +  "type": "string"
        +}
      • addedInput schema / properties / stop_sequences
        Added value: +{
        +  "description": "Optional stop sequences.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / temperature
        Added value: +{
        +  "description": "Optional sampling temperature.",
        +  "maximum": 1,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / thinking
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Thinking configuration for compatible models.",
        +  "properties": {},
        +  "type": "object"
        +}
      • addedInput schema / properties / tool_choice
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "additionalProperties": {},
        +      "properties": {},
        +      "type": "object"
        +    }
        +  ],
        +  "description": "Tool choice policy or explicit tool selection."
        +}
      • addedInput schema / properties / tools
        Added value: +{
        +  "description": "Native Anthropic tool definitions.",
        +  "items": {
        +    "additionalProperties": {},
        +    "properties": {},
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / top_k
        Added value: +{
        +  "description": "Optional top-k sampling cutoff.",
        +  "maximum": 9007199254740991,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / top_p
        Added value: +{
        +  "description": "Optional nucleus sampling probability.",
        +  "maximum": 1,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "model",
        -  "prompt"
        -]New value: +[
        +  "model"
        +]
    • Addedcreate_chat_completion
    • Changedcreate_gemini_content11 fields changed
      • addedInput schema / properties / cachedContent
        Added value: +{
        +  "description": "Optional cached content resource name.",
        +  "type": "string"
        +}
      • addedInput schema / properties / contents
        Added value: +{
        +  "description": "Native Gemini conversation contents.",
        +  "items": {
        +    "additionalProperties": {},
        +    "properties": {
        +      "parts": {
        +        "items": {
        +          "additionalProperties": {},
        +          "properties": {},
        +          "type": "object"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "role": {
        +        "enum": [
        +          "user",
        +          "model"
        +        ],
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "parts"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / generationConfig
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Native Gemini generation configuration.",
        +  "properties": {},
        +  "type": "object"
        +}
      • changedInput schema / properties / prompt / description
        Previous value: -"User prompt text."New value: +"Convenience shortcut for one user text part; do not combine with contents."
      • addedInput schema / properties / safetySettings
        Added value: +{
        +  "description": "Native Gemini safety settings.",
        +  "items": {
        +    "additionalProperties": {},
        +    "properties": {},
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / systemInstruction
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Native Gemini system instruction.",
        +  "properties": {},
        +  "type": "object"
        +}
      • changedInput schema / properties / temperature / description
        Previous value: -"Optional Gemini generation temperature."New value: +"Convenience temperature setting; do not combine with generationConfig.temperature."
      • removedInput schema / properties / temperature / maximum
        Removed value: -2
      • addedInput schema / properties / toolConfig
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Native Gemini tool configuration.",
        +  "properties": {},
        +  "type": "object"
        +}
      • addedInput schema / properties / tools
        Added value: +{
        +  "description": "Native Gemini tools.",
        +  "items": {
        +    "additionalProperties": {},
        +    "properties": {},
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "model",
        -  "prompt"
        -]New value: +[
        +  "model"
        +]
    • Changedcreate_response17 fields changed
      • addedInput schema / properties / include
        Added value: +{
        +  "description": "Additional response sections to include.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / input / anyOf
        Added value: +[
        +  {
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "items": {
        +      "additionalProperties": {},
        +      "properties": {},
        +      "type": "object"
        +    },
        +    "minItems": 1,
        +    "type": "array"
        +  }
        +]
      • changedInput schema / properties / input / description
        Previous value: -"Responses API input text."New value: +"Responses API input as text or native structured input items."
      • removedInput schema / properties / input / minLength
        Removed value: -1
      • removedInput schema / properties / input / type
        Removed value: -"string"
      • changedInput schema / properties / max_output_tokens / maximum
        Previous value: -8192New value: +9007199254740991
      • addedInput schema / properties / metadata
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Optional request metadata.",
        +  "properties": {},
        +  "type": "object"
        +}
      • addedInput schema / properties / parallel_tool_calls
        Added value: +{
        +  "description": "Whether the model may issue parallel tool calls.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / reasoning_effort
        Added value: +{
        +  "description": "Reasoning-effort hint for compatible models.",
        +  "type": "string"
        +}
      • addedInput schema / properties / seed
        Added value: +{
        +  "description": "Optional deterministic seed.",
        +  "maximum": 9007199254740991,
        +  "minimum": -9007199254740991,
        +  "type": "integer"
        +}
      • addedInput schema / properties / service_tier
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Optional service-tier hint."
        +}
      • addedInput schema / properties / temperature
        Added value: +{
        +  "description": "Optional sampling temperature.",
        +  "type": "number"
        +}
      • addedInput schema / properties / text
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Optional native text formatting configuration.",
        +  "properties": {},
        +  "type": "object"
        +}
      • addedInput schema / properties / tool_choice
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "additionalProperties": {},
        +      "properties": {},
        +      "type": "object"
        +    }
        +  ],
        +  "description": "Tool choice policy or explicit tool selection."
        +}
      • addedInput schema / properties / tools
        Added value: +{
        +  "description": "Native Responses API tool definitions.",
        +  "items": {
        +    "additionalProperties": {},
        +    "properties": {},
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / truncation_strategy
        Added value: +{
        +  "description": "Optional truncation strategy.",
        +  "type": "string"
        +}
      • addedInput schema / properties / user
        Added value: +{
        +  "description": "Optional end-user identifier.",
        +  "type": "string"
        +}
  6. 8 tool updatesv0.2.0
    • First observedcompare_models
    • First observedcreate_anthropic_message
    • First observedcreate_gemini_content
    • First observedcreate_response
    • First observedget_api_overview
    • First observedget_model
    • First observedget_model_pricing
    • First observedlist_models

TDQS

C2.6/5.0
Disambiguation2/5

Significant overlap exists: two tools for creating images (create_image, create_image_file) and two for editing images (edit_image, edit_image_file), plus multiple chat completion tools (create_chat_completion, create_anthropic_message, create_gemini_content, create_response) that serve similar purposes but differ in API shape. Agents may struggle to choose the correct tool without reading detailed descriptions.

Naming Consistency4/5

All tools use snake_case with a verb_noun pattern (e.g., create_video, list_models). The naming is mostly consistent, but minor issues arise with duplicate verbs like 'create' for similar tasks (create_image vs create_image_file) and mixed verb tenses (get vs retrieve). Overall, the pattern is predictable.

Tool Count3/5

With 31 tools, the count is somewhat high for the server's scope (a unified AI API gateway). While many operations are covered, there is redundancy (e.g., four completion tools, two image creation tools) that could be consolidated. A more streamlined set of 20-25 tools would be more appropriate.

Completeness4/5

The tool set covers a broad range of AI operations: text completion, image generation/editing, audio, video, 3D models, embeddings, file management, and model info. Minor gaps exist (e.g., no tool to list async tasks, no update for files), but overall, the surface is comprehensive for the domain.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/hedging8563/tokenlab-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server