Arumi
Server Details
Generate AI images, video and audio with 55 models, priced in credits before you generate.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- weidotbuild/arumi
- GitHub Stars
- 0
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 9 tools
Each tool occupies a clearly distinct step or resource: upload lifecycle (create_upload/complete_upload), generation lifecycle (generate/get_generation/list_generations), catalog discovery (list_models/get_model), and cost/credit checks (quote/get_balance). Descriptions explicitly cross-reference each other (e.g. create_upload says to call complete_upload next), so an agent can sequence them without guessing. quote versus get_balance is the only near-neighbor pair, and the descriptions make the estimation-versus-actual distinction explicit.
The dominant pattern is a consistent snake_case verb_noun convention (create_upload, complete_upload, get_balance, get_generation, get_model, list_generations, list_models). Two tools are bare verbs (generate, quote), which breaks the noun pairing slightly but remains readable and idiomatic. No camelCase/snake_case mixing or vague verbs.
Nine tools is well within the sweet spot for a generation-platform surface, and each one earns its place: the two-step upload and the quote-before-generate pair are necessary, not padding. Nothing appears redundant or missing at this granularity.
The set covers the full happy path — discover models, get one model's settings, quote cost, generate, poll, inspect history, and check balance — plus reference-file upload. The main gap is lifecycle control: there is no cancel_generation even though credits are described as 'held by running generations,' and no tool to list or delete previously uploaded reference assets. These are workaroundable but leave agents without a way to reclaim held credits or reuse prior uploads.
Available Tools
9 toolscomplete_uploadAInspect
Finish an upload after the PUT; returns the asset_id to pass in a generation's references.
| Name | Required | Description | Default |
|---|---|---|---|
| upload_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| kind | Yes | |
| name | Yes | |
| asset_id | Yes | |
| duration_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the burden. It discloses the two-step ordering and the downstream use of asset_id, but says nothing about idempotency, whether a premature call fails, upload_id expiry, or authentication requirements for a state-finalizing operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler: action, prerequisite, and output are packed into one clause, and nothing is repeated from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter finalization step with an output schema present, the description covers sequencing and the follow-up use of the result, so an agent can place the call correctly. Only failure-mode and prerequisite detail about upload_id are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain upload_id, yet it never says where the id originates or what format it takes. The parameter name is self-describing, but the only real meaning added is implied by 'after the PUT'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action ('Finish an upload') plus the exact point it applies ('after the PUT') and what it yields ('asset_id'). This cleanly separates it from the sibling create_upload, which starts the sequence rather than ending it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear triggering condition — call it after the PUT — and tells the agent where the result goes (a generation's references). It does not name exclusions or contrast failures, so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_uploadAInspect
Start uploading one of the user's files to use as a reference. PUT the file's bytes to upload_url with exactly the returned headers, then call complete_upload.
| Name | Required | Description | Default |
|---|---|---|---|
| width | No | required for images: width in pixels | |
| height | No | required for images: height in pixels | |
| sha256 | Yes | the file's SHA-256 as 64 lower-case hex characters (shasum -a 256) | |
| file_name | Yes | the file's name, with its extension | |
| size_bytes | Yes | ||
| content_type | Yes | for example image/png, image/jpeg, video/mp4, audio/mpeg |
Output Schema
| Name | Required | Description |
|---|---|---|
| next | Yes | |
| headers | Yes | |
| upload_id | Yes | |
| expires_at | Yes | |
| upload_url | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose the non-obvious behavior that matters most: this is a two-phase protocol where the actual byte transfer happens outside the tool against a returned URL with exact headers. It omits other behavioral traits an agent would want — URL expiry, whether an uncompleted upload is retained or garbage-collected, and how sha256/size mismatch is handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, and the sequence is front-loaded so the agent learns the 'start' step before the follow-up instruction. Every clause carries actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so upload_url and headers needn't be described, and the input schema is well documented; the description fills the remaining gap by explaining the out-of-band PUT step and the handoff to complete_upload. Minor omissions around expiry and failure handling keep it from being fully self-sufficient for a multi-step tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 83%, so the schema already documents file_name, content_type, sha256, and the image width/height requirements. The description adds no parameter-level meaning of its own and never references size_bytes or the relationship between the declared hash/size and the bytes actually PUT.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Start uploading one of the user's files') and explicitly frames it as the first half of a two-step flow by naming complete_upload, which separates it from that sibling. It stops short of saying what a 'reference' file is used for downstream, so the agent knows the mechanism but not the full intent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear operational sequence: call this first, PUT the bytes to upload_url with exactly the returned headers, then call complete_upload. That is strong when-to-use guidance for the happy path, but it offers no exclusions or prerequisites — nothing about size limits, supported content types as a gate, or what to do if an upload is abandoned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generateAInspect
Start a generation with the user's credits. It is refused, with nothing charged, when it would cost more than max_credits. Returns at once with a generation_id: call get_generation until it has succeeded or failed.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes | the model id from list_models | |
| prompt | No | what to make; for speech models the text to read | |
| parameters | No | the model's settings by key (get_model); any left out take the model's default | |
| references | No | uploaded files the model works from | |
| max_credits | Yes | the most credits the user agreed to spend on this generation; it is refused when the quote is higher | |
| idempotency_key | No | optional, 16-128 characters [A-Za-z0-9._:-]: repeating a call with the same key returns the same generation instead of making another |
Output Schema
| Name | Required | Description |
|---|---|---|
| tip | No | |
| text | No | |
| error | No | |
| model | Yes | |
| prompt | No | |
| status | Yes | queued, processing, succeeded, failed or unknown |
| credits | Yes | |
| outputs | No | |
| modality | Yes | |
| progress | Yes | |
| created_at | Yes | |
| generation_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, destructiveHint=false), the description discloses the two traits an agent most needs: the call spends credits and is refused with nothing charged when over budget, and it returns immediately as an async job rather than producing a result. That polling contract is stated outright.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each carrying distinct information: spend, refusal condition, and async follow-up. The call pattern (get_generation) is front-loaded in the final clause where an agent needs it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a complex, chargeable, asynchronous tool with nested inputs and an output schema, and the description covers the spend/refusal contract and the polling requirement. Return-value details are correctly left to the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all six parameters including the nested references object are already documented; the description nonetheless adds real meaning by explaining that max_credits is a quote-based spend ceiling with refusal semantics rather than just an integer field.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Start a generation') plus the resource it consumes (the user's credits), which distinguishes it from quote (pricing) and get_generation (status) among the siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context: the call is refused when the quote exceeds max_credits, and it explicitly routes follow-up to get_generation until success or failure. It stops short of naming the quote sibling as the way to discover cost before calling, so the alternative path is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_balanceARead-onlyInspect
The user's Arumi credits: available, held by running generations, and owed. 1 credit = 0.01 USD.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safety is covered; the description's added value is explaining what the three balance components mean, notably that 'held' credits are tied to running generations. It does not discuss refresh/staleness or whether the balance is per-user or per-workspace. The idempotentHint=false annotation is slightly odd for a zero-argument read, but the description does not contradict it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler; the three balance categories and the credit-to-USD rate are the only facts an agent needs to interpret the numbers.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return formatting is already documented, and the description supplies the units and semantics ('1 credit = 0.01 USD') needed to read those values correctly. The only gap is a note on whether held credits fluctuate as generations run, which would matter for repeated calls.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so the baseline applies. There is nothing for the description to disambiguate, and it does not waste words on nonexistent inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the exact resource ('the user's Arumi credits') and enumerates the three sub-balances it reports: available, held by running generations, and owed. It is clearly distinguishable from siblings like get_generation or quote. It stops short of an explicit verb ('retrieve/return'), but the resource is specific enough that an agent knows what it gets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives. An agent must infer on its own that this is the tool to call before generate to check whether credits suffice, and nothing warns about when the balance is stale or changes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_generationBRead-onlyInspect
A generation's status; once it has succeeded, links to its results, and what it charged.
| Name | Required | Description | Default |
|---|---|---|---|
| generation_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| tip | No | |
| text | No | |
| error | No | |
| model | Yes | |
| prompt | No | |
| status | Yes | queued, processing, succeeded, failed or unknown |
| credits | Yes | |
| outputs | No | |
| modality | Yes | |
| progress | Yes | |
| created_at | Yes | |
| generation_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safety is covered; the description adds the useful state-conditional detail that result links only exist after success. It does not cover whether repeated calls are safe (notably idempotentHint=false is left unexplained) or whether failures surface in the same shape. With an output schema present, further return-value detail would be redundant, so a 3 is fair.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short clause with zero padding, and the highest-value facts are front-loaded. The telegraphic, semicolon-joined phrasing is terse to the point of reading as a note rather than a definition, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Annotations and an existing output schema carry much of the burden for a one-parameter read tool, so little is strictly missing. The gaps that remain, chiefly the meaning and provenance of generation_id and the lack of routing versus list_generations, keep it at minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single required parameter, so generation_id is undocumented in both places. The description never says what a generation_id is or where it comes from (presumably the generate response), which is exactly the gap the description should fill at low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the resource ('a generation') and what the call surfaces (status, result links, charge), which is enough to tell it apart from list_generations, generate and get_model. It is written as a noun phrase rather than a verb, so the retrieval action is implied rather than stated, and no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance: nothing says whether this is for polling after generate, for inspecting a single result, or how it differs from list_generations. The clause 'once it has succeeded' hints at polling but leaves the alternative and the pre-condition unstated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_modelCRead-onlyInspect
One model's prompt limit, the reference files it takes, and its settings with their allowed values and defaults.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes | the model id from list_models |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| name | Yes | |
| maker | Yes | |
| prompt | No | |
| modality | Yes | |
| settings | Yes | |
| reference_inputs | No | in order: references of one kind fill these slots in turn |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safety is covered. The description adds only a restatement of the payload contents, not behavioral context such as whether the call fails for unknown models, whether reference files are omitted when absent, or any reason idempotentHint is false for what looks like a pure read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single clause with no wasted words, and the most important information (single model, its limits and settings) leads. The only flaw is that it is a sentence fragment rather than a complete statement of action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description does not need to enumerate return values, yet it spends its whole length doing so. For a one-parameter read tool this is roughly adequate, but it omits error behavior and the sibling relationship an agent needs to select it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter 'model' is documented in the schema as 'the model id from list_models'. The description adds no format, casing, or lookup-dependency detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource ('One model') and enumerates the content returned (prompt limit, reference files, settings with allowed values and defaults), so the subject matter is clear. However, it is a noun-phrase fragment with no verb, and it never distinguishes itself from the sibling list_models, leaving the agent to infer that this is the single-model detail lookup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance. The adjacent list_models tool is only implicitly contrasted by the word 'One', and nothing states prerequisites such as needing a valid model id obtained from list_models or what happens on an unknown id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_generationsARead-onlyInspect
The user's latest generations, newest first, made on the site or through any of their keys.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | how many, newest first (1–20, default 10) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=false, so the safety profile is covered. The description adds real scope context — results span generations made on the site and via any API key — but says nothing about pagination behavior, result ceilings, or how non-idempotency manifests (e.g., results shifting as new generations arrive).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler, and the ordering constraint is front-loaded before the scope qualifier. It is efficient, though the phrase "made on the site or through any of their keys" is the one part that could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and the single parameter fully documented, the description only needs to carry scope and ordering, which it does. The main residual gap is not distinguishing this listing from get_generation, a low-complexity tool otherwise well covered by its structured fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the limit parameter is fully documented in the schema including range and default. The description's "newest first" phrasing corroborates the ordering, but adds no syntax or format detail beyond what the schema already states, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource ("the user's latest generations") and the ordering ("newest first"), so an agent can tell it is a listing call rather than a single-item fetch. It does not name or contrast with a sibling such as get_generation, and the verb is implicit in the name rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: "latest generations" suggests this is the browse/recent-activity entry point, while get_generation presumably fetches one by id. There is no explicit statement of when to prefer this tool over get_generation or how it relates to generate, leaving the choice to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_modelsARead-onlyInspect
The models the user can generate with, by kind (image, video, audio, text). get_model gives one model's inputs and settings.
| Name | Required | Description | Default |
|---|---|---|---|
| modality | No | only this kind: image, video, audio or text |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the agent knows this is a safe read; the description's added value is that results are restricted to models the calling user can actually generate with and are organized by kind. It says nothing about result volume, ordering, pagination, or what happens when the filter is omitted. With the safety profile already covered by annotations, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no filler, with the resource statement front-loaded and the sibling disambiguation second. The first sentence is an elliptical fragment that reads slightly awkwardly, which keeps it just short of a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-parameter, read-only listing tool with an output schema (so return shape needn't be explained), the definition covers purpose and sibling routing adequately. The remaining gap is that an agent cannot tell from the description whether calling with no modality returns all models or errors — a small but real omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the modality parameter already documents its allowed values, so the description's parenthetical list of kinds merely repeats the schema. It does not say that modality is optional or that omitting it returns every kind — the one piece of parameter behavior the schema leaves implicit. Baseline 3 for a fully documented single-parameter schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource (the set of generation models) and its scoping (models the user can generate with) plus the filter dimension (image, video, audio, text), and it explicitly contrasts with the sibling get_model, which returns a single model's inputs and settings. The only weakness is that it is written as a noun phrase with no verb, so the listing action is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence routes the agent: use this tool to survey available models, use get_model when you need one model's inputs and settings. That is a real when-to-use/when-to-use-the-alternative rule. It stops short of explicit exclusions (e.g., that this tool does not return pricing or per-model settings), so a 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quoteARead-onlyInspect
What a generation would cost, in credits, without making it. Tell the user before generating.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes | the model id from list_models | |
| prompt | No | what to make; for speech models the text to read | |
| parameters | No | the model's settings by key (get_model); any left out take the model's default | |
| references | No | uploaded files the model works from |
Output Schema
| Name | Required | Description |
|---|---|---|
| usd | Yes | credits in US dollars at 1 credit = 0.01 USD |
| exact | Yes | true when the price is fixed; false when the model decides part of it and only up to credits is charged |
| model | Yes | |
| credits | Yes | what is reserved; for a fixed price also what is charged |
| estimated_credits | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent nothing is mutated, and the description confirms the no-side-effect, no-generation nature plus the unit of return (credits). However, it leaves idempotentHint=false unexplained — an agent may wonder why a supposedly pure price lookup is non-idempotent (presumably pricing can change between calls) — and says nothing about whether the quote expires or must be reused.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short clauses, front-loaded with what it returns and immediately followed by the caller's obligation. No filler, nothing to cut.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is conceptually simple, an output schema covers the return shape, and the schema documents all four parameters, so the description is close to sufficient. The remaining gap is behavioral: it doesn't say how stale or binding a returned quote is, which matters given idempotentHint=false.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including nested reference slot ordering, so the schema carries the parameter burden. The description only implies that model/prompt/parameters drive the price and never says whether references affect cost, adding little beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific operation — costing a generation in credits — and its key defining property, 'without making it', which separates it from the generate sibling. An agent can tell immediately this is a price-preview call, not a job submission.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The imperative 'Tell the user before generating' gives a concrete trigger: call this prior to generation and surface the number. It implies the alternative (generate) without naming it explicitly, and gives no guidance on when a quote would be unnecessary.
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.
9 tool updates
- First observed
complete_upload - First observed
create_upload - First observed
generate - First observed
get_balance - First observed
get_generation - First observed
get_model - First observed
list_generations - First observed
list_models - First observed
quote
Related MCP Connectors
Generate AI images and videos from 89 models on one credit balance, refunds on failure.
AI image, video, audio and text tools for creators. Pay per use with credits.
Generate image, video, audio, 3D and vector media with 100+ AI models. Pay per generation.
Generate images, videos and audio across many AI models via one API, with quotes before you pay.
Related MCP Servers
- AlicenseBqualityCmaintenanceExecution control layer for AI agents - Reserve, execute, burn/refund pattern for media generation162MIT
- AlicenseNot gradedqualityCmaintenanceGenerate AI images and videos from Claude, Cursor or any MCP client: 48+ models on one account (Flux 2, Nano Banana 2, Seedream 5, Kling V3, Seedance 2.5, Veo 3.1), with the exact cost in credits returned on every call.1MIT
- AlicenseAqualityBmaintenanceGenerate video from a prompt, from an image, or from up to thirty reference images, routed across the field of AI video models (Sora, Veo, Kling, Seedance, Hailuo, Wan and more). Quotes the credit cost before spending it and refunds a technical failure automatically.5MIT

Createya MCP & APIofficial
AlicenseNot gradedqualityDmaintenanceEnables AI agents and developers to generate images, videos, audio, and text using 100+ models via MCP or REST with a single API key.4MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.