Skip to main content
Glama

dare-mcp-server

npm node licence

Generate video and images from inside Claude, billed to your own Dare credits.

Ask Claude for a shot and it makes one — Seedance 2.5, Seedance 2.0, Veo 3.1, Kling 3.0 Pro, Hailuo 2.3 for video, Nano Banana 2, GPT Image 2 and Seedream 5 Pro for stills. No new subscription, no API key to buy: it spends the Dare credits you already have.

> make me a 10 second 720p cinematic shot of rain on a neon Tokyo street, 16:9

  Estimated 110 credits (you have 4,280). Generating…
  Done: https://storage.trydare.com/…/rain-tokyo.mp4

Works with Claude Code, the Claude desktop app, and Cowork.

IMPORTANT

Dare does not publish a developer API. This server talks to the same private endpoint the Dare web app uses, signed in as you with your own browser session. It works today — every tool here has been exercised against Dare's live servers, including a generation run to completion — but Dare can change that contract without notice, and using it may sit outside Dare's terms of service. Your account, your credits, your call.


Install

You need Node.js 20 or newer. Check with node --version; if that errors, install the LTS build from nodejs.org (on a Mac, brew install node also works).

Then run one command in your terminal:

npx dare-mcp-server setup

That is the whole install. The wizard:

  1. shows you where to find your Dare token (four clicks in your browser),

  2. checks it against Dare and prints your credit balance,

  3. saves it to ~/.dare-mcp/config.json with owner-only permissions,

  4. adds Dare to Claude Code and/or the Claude desktop app for you.

Restart Claude when it finishes. In Claude Code, /mcp should now list dare.

npx dare-mcp setup works too — dare-mcp is a short alias that forwards to the same package.

The server signs in as you, using the long-lived Clerk __client cookie from your browser. It mints a fresh 60-second session token for every call, exactly as the Dare web app does.

  1. Sign in at https://trydare.com in Chrome, Edge, Arc or Brave.

  2. Open DevTools — Cmd+Option+I on macOS, F12 on Windows and Linux.

  3. Go to the Application tab → StorageCookieshttps://clerk.trydare.com. (In Firefox and Safari the tab is called Storage instead.)

  4. Find the row named __client and copy its Value — a long string starting eyJ. Copy the value, not the name.

  5. Paste it into the wizard. Your terminal will not echo it back.

The cookie is valid for about a year, so this is a one-time step unless you sign out of Dare.

Treat it like a password. It grants full access to your Dare account and can spend your credits. The wizard keeps it in one file with 0600 permissions and deliberately does not write it into your Claude config, so your Claude settings stay safe to sync or share.

Claude Code

claude mcp add dare --scope user -- npx -y dare-mcp-server

Claude desktop app — edit the config file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "dare": {
      "command": "npx",
      "args": ["-y", "dare-mcp-server"]
    }
  }
}

Then quit and reopen the app.

Both of these read your token from ~/.dare-mcp/config.json. If you would rather pass it as an environment variable (CI, containers, a shared machine), set DARE_CLIENT_TOKEN instead — it takes precedence over the stored file. See Configuration.

git clone https://github.com/avi-aggarwal14/dare-mcp-server.git
cd dare-mcp-server
npm install          # builds automatically
npm run setup        # same wizard

Point Claude at node /absolute/path/to/dare-mcp-server/dist/cli.js instead of npx.

Related MCP server: MuAPI Claude Code MCP Server

Check it works

npx dare-mcp-server check

Mints a token, reads your balance, lists a few library items. Run it any time the tools start failing — it is the fastest way to tell a stale cookie from a Dare outage.

First things to try

Once Claude has restarted, just ask in plain English:

> how many Dare credits do I have?
> what video models can I use, and what do they cost?
> make a 5 second clip of a paper boat going down a rain gutter, cinematic, 16:9
> use ~/shots/hero.png as a reference and animate the character walking toward camera
> what's in my Dare library from this week?

Claude will quote you a credit estimate before spending anything, and you can always ask it to do a dry run first.

Tools

Tool

Spends credits

What it does

dare_list_models

no

Models with durations, qualities, aspect ratios, reference limits

dare_estimate_cost

no

Local credit estimate before you commit

dare_get_credit_balance

no

Current balance

dare_generate_video

yes

Text-to-video, Seedance 2.5 by default; optional reference media. dry_run: true previews the spec and price for free

dare_generate_image

yes

Stills via Nano Banana 2, GPT Image 2, Seedream 5 Pro. Supports dry_run

dare_get_generation

no

Poll status, get the output URL

dare_list_generations

no

Paginated library listing

dare_cancel_generation

no

Stop an in-flight job

dare_delete_generation

no

Delete from the library (destructive)

dare_upload_media

no

Upload a reference image/clip/audio, returns a storage_key

dare_list_uploads

no

Previously uploaded references

dare_delete_upload

no

Delete an uploaded reference (destructive)

dare_list_projects

no

Your Dare projects

CLI

Command

What it does

npx dare-mcp-server setup

Interactive first-run wizard

npx dare-mcp-server check

Verify credentials, print credit balance

npx dare-mcp-server

Start the MCP server on stdio (Claude runs this for you)

npx dare-mcp-server http

Optional HTTP transport for self-hosting

npx dare-mcp-server --help

Everything above

Configuration

Credentials are read in this order, first hit wins:

  1. DARE_CLIENT_TOKEN in the environment

  2. ~/.dare-mcp/config.json (written by setup)

The stored file is plain JSON, so you can edit it directly:

{
  "clientToken": "eyJ...",
  "maxCreditsPerCall": 500,
  "uploadRoots": ["/Users/you/Movies", "/Users/you/Pictures"]
}

Everything else is environment variables:

Variable

Default

Purpose

DARE_CLIENT_TOKEN

from stored config

The __client cookie from clerk.trydare.com. Required one way or the other.

DARE_CONFIG_DIR

~/.dare-mcp

Where the stored config lives.

DARE_MAX_CREDITS_PER_CALL

500

Refuse any single generation estimated above this many credits. 0 disables.

DARE_UPLOAD_ROOTS

— (blocked)

Comma-separated directories dare_upload_media may read local files from. Empty means local file reads are refused.

DARE_ALLOW_URL_UPLOADS

true

Allow uploading from a public URL. Private and link-local addresses are always refused.

DARE_MAX_UPLOAD_BYTES

536870912

Largest upload accepted.

DARE_SESSION_TOKEN

A ready-made 60s session JWT. Testing only.

DARE_SESSION_ID

auto

Pin a specific sess_... id instead of auto-detecting.

DARE_REQUEST_TIMEOUT_MS

120000

Per-request timeout.

DARE_SERVER_URL

https://api.trydare.com

Dare RPC base.

DARE_CLERK_FAPI_URL

https://clerk.trydare.com

Clerk Frontend API base.

DARE_MAX_CREDITS_PER_CALL is a client-side circuit breaker against a model talking itself into a 10-variation 30-second batch (3,200 credits). The default of 500 allows any single Seedance 2.5 clip while blocking runaway batches; raise it deliberately when you want a batch. The estimate is conservative in the one place it cannot be exact: a video reference whose length Dare cannot report is priced at 30 seconds, which is Dare's own assumption. The guard fails closed: if a reference clip's duration cannot be read, the generation is refused rather than submitted on a guessed estimate.

DARE_UPLOAD_ROOTS is an allowlist, not a convenience. Without it, dare_upload_media refuses local paths entirely — otherwise a prompt-injected model could ask the server to upload your shell environment or Claude config, both of which contain DARE_CLIENT_TOKEN. Point it at the folders that actually hold your source footage.

Credit costs

Dare prices every job as provider cost in dollars, times 1.5, converted at 750 credits per $49.99, rounded up to the nearest 1, 5 or 10 credits. The server reproduces that formula exactly; it was checked against real charges (a 4s 480p Seedance 2.5 clip billed 20 credits, as predicted). Typical figures:

Job

Credits

Seedance 2.5, 4s, 480p

20

Seedance 2.5, 8s, 720p

90

Seedance 2.5, 10s, 720p

110

Seedance 2.5, 30s, 480p

150

Seedance 2.5, 30s, 720p

320

Seedance 2.0 Fast, 5s, 480p

15

Seedance 2.0, 15s, 4K

530

Veo 3.1, 8s, 1080p

80

Kling 3.0 Pro, 5s

20

Hailuo 2.3 Pro (fixed 6s)

15

Nano Banana 2 image, 2K

4

GPT Image 2, 1:1

5

Attaching a video reference applies a 0.6x multiplier on Seedance models, and on Seedance 2.5 the reference clip's own seconds are billed on top. Image and audio references do not change the price.

Always sanity-check with dare_estimate_cost before a batch.

Reference-driven generation

1. dare_upload_media  { file_path: "/Users/you/shots/hero.png" }
     -> storage_key: "uploads/abc123..."
2. dare_generate_video {
     prompt: "the character from the reference walks toward camera through fog",
     reference_storage_keys: ["uploads/abc123..."],
     duration_seconds: 8
   }

Seedance 2.5 takes up to 50 references (30 image, 10 video, 10 audio), each clip 2–30s, 30 combined seconds per kind. With a video reference attached it derives duration and aspect ratio automatically. Seedance 2.0 models take 12 (9/3/3), 15s combined, and need a visual reference alongside any audio one. Veo 3.1 takes up to 3 images and is then fixed at 8 seconds. Kling and Hailuo take no references at all.

Remote HTTP (optional)

A stateless streamable-HTTP entrypoint is included for hosting the server behind a URL:

DARE_CLIENT_TOKEN='eyJ...' \
DARE_MCP_BEARER_TOKEN="$(openssl rand -hex 32)" \
  PORT=3000 npx dare-mcp-server http

POST /mcp, health check at /health. The server refuses to start without a bearer token of at least 24 characters, since these tools spend real money. DNS-rebinding protection is on by default and scoped to localhost; widen it with DARE_ALLOWED_HOSTS / DARE_ALLOWED_ORIGINS when deploying behind a domain. Local file uploads and URL uploads are both disabled on this transport regardless of configuration.

Troubleshooting

DARE_UNAUTHORIZED — the __client cookie is missing, stale, or you signed out of Dare in that browser. Run npx dare-mcp-server setup again with a fresh value.

DARE_UNKNOWN_PROCEDURE — Dare changed their internal RPC. The procedure names live in src/dare.ts; compare against a fresh capture from the web app's network tab.

DARE_INSUFFICIENT_CREDITS — the error reports credits required versus available.

DARE_COST_GUARD — your own DARE_MAX_CREDITS_PER_CALL limit fired. Working as intended.

DARE_REFERENCE_UNKNOWN — a reference storage key could not be resolved, so the cost could not be estimated. Check the key came from dare_upload_media or dare_list_uploads.

DARE_UPLOAD_FORBIDDEN — the file is outside DARE_UPLOAD_ROOTS, or you are on the HTTP transport where local reads are disabled.

Security notes

  • The __client token is account-level access. Anything that can read it can spend your credits. setup therefore stores it in ~/.dare-mcp/config.json at 0600 rather than in your Claude config, which is often synced, backed up or committed.

  • dare_generate_* calls are never retried automatically after an auth failure. Dare's create endpoint has no idempotency key, so a blind retry could bill you twice.

  • Uploading from a URL resolves the host first, refuses loopback, private, link-local, CGNAT, multicast and IPv4-mapped/6to4/NAT64 forms of those, pins the connection to the vetted address so DNS rebinding cannot race the check, and re-checks every redirect hop.

How it works

Claude Code / desktop / Cowork
        │  MCP (stdio)
        ▼
  dare-mcp-server
        │  1. POST clerk.trydare.com/v1/client/sessions/{id}/tokens   (__client cookie)
        │     -> 60s session JWT, cached 45s
        │  2. POST api.trydare.com/rpc/{procedure}                    (Bearer JWT)
        │     oRPC envelope: { json, meta }
        ▼
    Dare backend

Uploads are three steps: storage.generateUploadUrl -> PUT to signed storage -> uploads.create.

Procedures used

Procedure

Input

generations.create

{ spec, count, projectId?, metaEventId, timezone }

generations.get / cancel / delete

{ id }

generations.getMediaInfo

{ storageKey }

libraryItems.list, uploads.list

{ cursor, limit }

storage.generateUploadUrl

{ contentType, fileExtension }

uploads.create

{ storageKey, name, prompt, projectId, timezone }

uploads.delete

{ id }

credits.getBalance, projects.list

no input

spec carries only the keys the chosen model declares, exactly as Dare's composer builds it: Seedance models send { tool, prompt, model, audioEnabled, aspectRatio, duration, quality, context? }, Kling omits quality, Hailuo sends { tool, prompt, model } and nothing else, GPT Image 2 has no quality. duration is a string like "8s", context is { mediaStorageKeys, webLinkIds }, and every attached asset is also referenced in the prompt as @<storageKey>. Use dry_run: true on either generate tool to see the spec for any combination without submitting.

Errors are mapped so an agent can act on them: a missing record is DARE_NOT_FOUND, a renamed procedure DARE_UNKNOWN_PROCEDURE, a schema mismatch DARE_BAD_REQUEST with the field-level issues included.

Generation statuses seen in the wild: queued and processing while running, succeeded or failed at the end. The finished file is at generation.outputAsset.storageUrl. Anything unrecognised is treated as still-running, so a renamed in-progress state is never mistaken for a finished one.

Uninstall

claude mcp remove dare --scope user     # Claude Code
rm -rf ~/.dare-mcp                      # your stored token

For the desktop app, delete the "dare" entry from claude_desktop_config.json. Nothing else is installed — npx does not leave the package behind.

Contributing

Issues and pull requests are welcome, especially:

  • Dare changed a procedure name or spec shape and something broke

  • pricing drifted from the table above

  • a model was added or removed from Dare's composer

git clone https://github.com/avi-aggarwal14/dare-mcp-server.git
cd dare-mcp-server
npm install
npm run build
npm run check        # needs a real token
npm run inspect      # MCP Inspector against a local build

See CONTRIBUTING.md. Please never paste a __client token into an issue, a log, or a test fixture — it is a live credential.

Licence

MIT. Not affiliated with, endorsed by, or supported by Dare. "Dare", "Seedance", "Veo", "Kling" and "Hailuo" belong to their respective owners.

Available Tools

13 tools
dare_cancel_generationCancel a Dare generationA
Idempotent

Cancel an in-flight generation. Use when a job was started by mistake, to stop it consuming credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
generation_idYesGeneration id to cancel.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate this is a mutating, non-destructive, idempotent operation. The description adds useful behavioral context beyond those hints: it only applies to in-flight generations and its purpose is to stop credit consumption. No contradiction with annotations is present.

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 short sentences deliver the core action immediately and then provide the key use case. There is no redundant or filler content, and the most critical information is 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?

This is a simple one-parameter tool with no output schema and complete schema documentation. The description, combined with the annotations, gives an agent everything needed to invoke it correctly and understand its effect.

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 100% coverage for the single parameter generation_id, with a clear description. The tool description does not add extra meaning beyond the schema, but the schema itself is sufficient, so a 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?

The description states a specific verb ('Cancel'), a specific resource ('an in-flight generation'), and clarifies the scope ('in-flight') so it is distinct from deleting a completed or stored generation. This clearly differentiates it from sibling tools like dare_delete_generation.

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 explicitly says when to use it: when a job was started by mistake and to stop credit consumption. It does not explicitly state when not to use it or mention alternatives like delete_generation, but the 'in-flight' qualifier provides a clear context boundary.

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

dare_delete_generationDelete a Dare generationA
DestructiveIdempotent

Permanently delete a generation and its output from the Dare library. Destructive and irreversible — confirm with the user first. Does not refund credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
generation_idYesGeneration id to delete.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already provide destructiveHint=true and readOnlyHint=false, and the description adds meaningful behavior beyond that: deletion also removes the output, is irreversible, requires confirmation, and has financial consequences ('Does not refund credits'). This strongly helps the agent understand the full impact of the operation.

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 compact and front-loaded: it states the action and resource first, then delivers critical cautions. Every sentence earns its place with no filler or redundancy.

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 one-parameter, no-output-schema tool, this description is complete. It covers what is deleted, the destructive nature, the need for confirmation, and the credit policy, leaving no critical operational gap.

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%, and the only parameter generation_id is already described as 'Generation id to delete.' The tool description adds no additional parameter meaning, which is acceptable because the schema fully covers it.

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 ('delete') and identifies the exact resource ('a generation and its output from the Dare library'). It clearly distinguishes this from siblings like get, list, and cancel by emphasizing permanence.

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 context: deletion is destructive, irreversible, requires user confirmation, and does not refund credits. It does not explicitly name alternatives such as dare_cancel_generation, but the safety guidance is strong enough for an agent to know when not to invoke it casually.

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

dare_delete_uploadDelete a Dare uploadA
DestructiveIdempotent

Permanently delete an uploaded reference asset from the Dare library. Destructive and irreversible — confirm with the user first. Generations that already used it are unaffected.

ParametersJSON Schema
NameRequiredDescriptionDefault
upload_idYesUpload id from dare_upload_media or dare_list_uploads.

TDQS

A4.5/5.0
Behavior5/5

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

The description adds meaningful behavioral detail beyond the annotations: deletion is 'permanent,' 'destructive and irreversible,' and requires user confirmation. It also clarifies the important side-effect that 'generations that already used it are unaffected,' which is not visible in 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.

Conciseness5/5

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

Three short sentences deliver the purpose, risk warning, and side-effect clarification without unnecessary detail. The most important information is 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 single-parameter deletion tool, the description covers the action, the destructive nature, the need for confirmation, and the impact on existing generations. The annotations handle safety signals, and no output schema is needed for this simple operation.

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 schema already fully documents upload_id with 100% coverage, including its source from dare_upload_media or dare_list_uploads. The description does not add additional parameter-level meaning, so the baseline 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?

The description clearly states the action: 'Permanently delete an uploaded reference asset from the Dare library.' This distinguishes it from siblings like dare_delete_generation and makes the resource and operation explicit.

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 establishes clear context for when to use the tool: when an uploaded reference asset needs to be deleted. It also provides an important prerequisite ('confirm with the user first'), though it does not explicitly name alternatives or exclusion conditions.

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

dare_estimate_costEstimate Dare credit costA
Read-onlyIdempotent

Estimate the credit cost of a generation before running it, using Dare's own pricing table. Purely local arithmetic: no network request, no credits spent. Use this to check affordability, compare quality tiers, or size a batch.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoWhat is being generated.video
countNoHow many variations to generate.
modelYesModel id, e.g. `seedance-2-5`.
qualityNoQuality tier, e.g. `720p` for video or `2k` for image.
aspect_ratioNoAspect ratio; affects cost on `gpt-image-2` only.
audio_enabledNoWhether audio is generated (affects Veo and Kling).
reference_countNoNumber of reference assets attached (images count toward image-model surcharges).
duration_secondsNoClip length in seconds (video).
video_reference_countNoHow many of the references are video clips. Only video references earn Seedance's 0.6x discount.
reference_video_secondsNoTotal seconds of video references attached; billed in addition on Seedance 2.5.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already provide readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds meaningful behavioral context beyond these: it performs no network request and spends no credits, and operates purely with local arithmetic. This gives the agent confidence about side effects and cost implications that annotations alone do not fully convey.

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 tight sentences with no filler. The first sentence states the core purpose, the second discloses key behavioral traits, and the third gives concrete usage scenarios. It is front-loaded and every sentence earns its place.

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 10-parameter tool with no output schema, the description covers the essential selection and invocation context: what the tool does, that it is offline and free, and when to use it. The main omission is the exact return format, but the tool's purpose is simple enough that the output is largely inferable, and the schema covers all parameter semantics.

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 input schema already fully documents all 10 parameters. The description adds only high-level hints like 'compare quality tiers' and 'size a batch,' which map to quality and count but do not explain parameter behavior. This meets the baseline but does not exceed what the schema already 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 states a specific verb and resource: 'Estimate the credit cost of a generation before running it.' It also clarifies the scope with 'Purely local arithmetic: no network request, no credits spent,' which distinguishes it from generation and balance tools. The purpose is unmistakable and well differentiated from siblings like dare_generate_video and dare_get_credit_balance.

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 explicitly says when to use the tool: 'Use this to check affordability, compare quality tiers, or size a batch.' It clearly establishes that this is a pre-generation cost check. However, it does not explicitly name alternatives or state when not to use it, though the behavior makes this largely implicit.

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

dare_generate_imageGenerate an image on DareA

Generate a still image on Dare with Nano Banana 2, GPT Image 2 or Seedream 5 Pro. SPENDS CREDITS. Useful for producing a reference frame to feed into dare_generate_video.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of variations.
modelNoImage model id.nano-banana-2
promptYesWhat the image should show.
dry_runNoValidate and price without submitting. Spends nothing.
qualityNoQuality tier, e.g. `1k`, `2k`, `4k`.
project_idNoOptional Dare project id.
aspect_ratioNoAspect ratio such as `16:9` or `1:1`.
wait_secondsNoBlock up to this long for the result.
reference_storage_keysNoStorage keys to use as references.

TDQS

A3.9/5.0
Behavior3/5

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

The description goes beyond annotations by warning 'SPENDS CREDITS', which is critical behavioral information not captured in the schema or annotations. However, it does not explain the return value, asynchronous behavior, or side effects beyond credit consumption, leaving some transparency gaps.

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 compact and front-loaded: it states the core action, the key cost warning, and the main use case in three short sentences. Every sentence adds value and there is no redundant filler.

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?

The description is adequate for a straightforward generation tool, especially with a fully documented schema, but it lacks information about the expected output/result object and how to retrieve the generated image. Given the absence of an output schema, this is a meaningful gap.

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 already documents all 9 parameters with descriptions, and the description adds little parameter-level detail beyond listing model names. It provides useful context about the reference-frame use case but does not materially 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 identifies the operation ('Generate a still image on Dare'), specifies available models, and differentiates from the sibling dare_generate_video by explicitly mentioning still images and reference frames for video. This makes the tool's purpose unambiguous and distinct.

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 by stating that the tool is useful for producing a reference frame to feed into dare_generate_video, which implies a primary use case. It does not explicitly list exclusions or name alternative image tools, but the sibling list and model enum help disambiguate.

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

dare_generate_videoGenerate a video on DareA

Generate a video from a text prompt on Dare, defaulting to Seedance 2.5. SPENDS CREDITS from the signed-in Dare account (a 10s 720p Seedance 2.5 clip is ~110 credits; call dare_estimate_cost first). Returns generation ids immediately. Rendering is slow — Seedance 2.5 jobs commonly take 5–15 minutes — so leave wait_seconds at 0 and poll with dare_get_generation, or set it only if your client tolerates long tool calls. Attach reference images, clips or audio by uploading them first with dare_upload_media and passing the storage keys.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of variations. Each one costs credits.
modelNoVideo model id. Seedance 2.5 supports up to 30 seconds.seedance-2-5
promptYesWhat the video should show. Be specific about subject, action, camera and style.
dry_runNoValidate the request, resolve references and price it, but do not submit. Spends nothing. Returns the exact spec that would be sent.
qualityNoQuality tier, e.g. `480p` or `720p` for Seedance 2.5.
project_idNoOptional Dare project to file the generation under.
aspect_ratioNoAspect ratio such as `16:9`, `9:16` or `auto`.
wait_secondsNoBlock up to this many seconds waiting for the result. 0 returns immediately.
audio_enabledNoGenerate synchronised audio where the model supports it.
duration_secondsNoClip length in seconds. Seedance 2.5: 4–30; Seedance 2.0: 4–15; Kling: 3–15; Veo: 4/6/8 (8 with a reference); Hailuo: fixed. Ignored when a Seedance 2.5 video reference sets it.
reference_storage_keysNoStorage keys from dare_upload_media to use as reference images, clips or audio.

TDQS

A4.9/5.0
Behavior5/5

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

Discloses the credit spend with a concrete cost estimate, the async nature of rendering, typical 5–15 minute latency, and immediate generation-id return behavior. This adds meaningful behavioral context beyond the annotations, which only mark the operation as non-read-only and non-idempotent.

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?

Four dense, front-loaded sentences cover the core action, cost, latency/async behavior, and reference workflow with no filler. Every sentence earns its place.

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 complex, credit-spending async tool with no output schema, it covers return behavior, cost, latency, polling, and media references. The remaining parameter details are already supplied by the rich, fully described input schema.

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

Parameters4/5

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

The schema already covers all 11 parameters at 100%, so the baseline is 3. The description adds useful guidance on wait_seconds (prefer 0 and poll) and reference_storage_keys workflow, and clarifies the default model. This earns a 4 but not 5 because most per-parameter semantics remain in 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?

States the exact operation: 'Generate a video from a text prompt on Dare', with a concrete default model (Seedance 2.5). This clearly separates it from dare_generate_image and dare_get_generation.

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 instructs to call dare_estimate_cost first, poll with dare_get_generation instead of blocking, and upload references with dare_upload_media before invoking. It also tells when to set wait_seconds, giving clear workflow guidance relative to sibling tools.

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

dare_get_credit_balanceGet Dare credit balanceA
Read-onlyIdempotent

Fetch the signed-in Dare account's current credit balance. Read-only. Use before a large batch to confirm there is enough headroom.

ParametersJSON Schema
NameRequiredDescriptionDefault
response_formatNo`markdown` for a readable summary, `json` for the raw payload.markdown

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, and the description adds context about auth scope ('signed-in account') and temporal freshness ('current'). This goes beyond the annotations without contradicting them.

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 short sentences with zero wasted words. The core action is front-loaded, followed by a safety qualifier and a practical usage tip, making the definition easy to parse.

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?

The tool has a single optional parameter, rich annotations, and a concise description that covers what it does, when to use it, and its safety profile. There is no output schema, but the response_format parameter covers output structure, so nothing necessary for correct invocation is missing.

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%; the response_format parameter is fully documented in the schema with its enum and a clear description. The tool description adds no additional parameter information, so the baseline 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?

The description uses a specific verb and resource: 'Fetch the signed-in Dare account's current credit balance.' It clearly identifies the operation and the target, and the tool is easily distinguished from siblings like dare_estimate_cost or dare_list_generations.

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 explicitly says when to use it: 'Use before a large batch to confirm there is enough headroom.' It provides clear context for invocation, though it does not name alternatives or exclusions, which are not really needed given the tool's unique purpose.

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

dare_get_generationGet a Dare generationA
Read-onlyIdempotent

Fetch one generation by id: its status (queued, processing, succeeded, failed), credits charged, and — once finished — the output asset URL. Read-only. Poll this after dare_generate_video; video jobs commonly take 5–15 minutes. Use wait_seconds to block for up to that long per call, sized to what your client's tool timeout allows (e.g. 45 for desktop apps, 300+ for Claude Code), and call again until status is terminal.

ParametersJSON Schema
NameRequiredDescriptionDefault
wait_secondsNoPoll until the generation leaves a pending state, up to this many seconds.
generation_idYesGeneration id returned by a dare_generate_* tool.
response_formatNo`markdown` for a readable summary, `json` for the raw payload.markdown

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already carry readOnlyHint, idempotentHint, and destructiveHint=false, and the description's 'Read-only' line is consistent with them. It adds meaningful context beyond annotations: the long-running nature of video jobs, the blocking semantics of wait_seconds, and the notion of terminal statuses. It does not disclose edge behavior when wait_seconds expires while a job is still pending, which keeps it from a 5.

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 (~70 words) with zero filler: the opening sentence states function and return contents, the second declares read-only, and the final sentence covers when and how to poll. The most decision-relevant information (statuses, return contents, polling loop) 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?

With no output schema to explain return values, the description directly covers the return surface (status, credits, URL). Combined with the annotations' safety profile and the fully documented schema, an agent can determine whether to call, how long to wait, and how to interpret results. Minor gaps — behavior on unknown ids and on wait_seconds timeout — keep it short of a 5.

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 description coverage is 100%, so the schema already documents all three parameters well, giving a baseline of 3. The description earns an extra point by adding client-specific sizing guidance for wait_seconds (45 for desktop apps, 300+ for Claude Code) and grounding generation_id's provenance in the dare_generate_* tools.

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 names a specific verb ('Fetch'), a specific resource ('one generation by id'), and enumerates exactly what is returned (status, credits charged, output asset URL). The 'one... by id' framing unambiguously distinguishes it from the sibling dare_list_generations without any inference.

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

Usage Guidelines4/5

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

It explicitly anchors when to use this tool: 'Poll this after dare_generate_video,' with a concrete latency expectation (5–15 minutes) and a clear polling loop ('call again until status is terminal'). However, it never states when-not to use it or names an alternative tool for listing or other scenarios, so it falls just short of the explicit exclusion bar.

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

dare_list_generationsList Dare library itemsA
Read-onlyIdempotent

List recent items in the Dare library — generations and uploads, newest first — with cursor pagination. Read-only. Use it to find an earlier video's id or an upload's storage key.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoItems per page.
cursorNo`next_cursor` from a previous call.
response_formatNo`markdown` for a readable summary, `json` for the raw payload.markdown

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, and the description's 'Read-only' is consistent with these. The description adds valuable behavioral context beyond the annotations: the list is newest-first and uses cursor pagination, and it includes both generations and uploads in the same listing. That goes beyond what annotations alone convey.

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 two sentences with zero filler. It front-loads the action and scope, then immediately gives the practical use case. Every clause earns its place: ordering, pagination, read-only nature, and what to use it for.

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 read-only list tool with three optional, well-described parameters and no output schema, the description conveys the key context: what is listed, ordering, pagination, and a concrete use case. It doesn't explicitly state the return envelope (e.g., that results include a next_cursor), but the schema's cursor parameter implies it, so the gap is minor.

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 covers all three parameters (limit, cursor, response_format) with clear descriptions, so the baseline is 3. The description mentions pagination and the general use case but adds no new parameter-level detail beyond what the schema already 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 states a specific verb ('List') and resource ('items in the Dare library — generations and uploads'), and adds important scope details: newest-first ordering and cursor pagination. Mentioning both generations and uploads distinguishes it from sibling tools like dare_list_models or dare_list_uploads, so an agent can tell them apart.

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 gives one clear use case ('find an earlier video's id or an upload's storage key'), which implies when the tool is useful. However, it never explicitly says when to prefer this over dare_list_uploads or dare_get_generation, nor when not to use it. The routing guidance is implied rather than stated.

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

dare_list_modelsList Dare modelsA
Read-onlyIdempotent

List the video and image models available on Dare with their supported durations, aspect ratios, quality tiers and reference limits. Call this before generating so parameters are valid for the chosen model, and dare_estimate_cost for prices. Makes no network request and spends no credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoWhich model family to list.all
response_formatNo`markdown` for a readable summary, `json` for the raw payload.markdown

TDQS

A4.7/5.0
Behavior5/5

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

Although annotations already declare readOnlyHint and idempotentHint, the description adds the important behavior that the tool 'makes no network request and spends no credits.' This goes beyond the annotations and gives the agent confidence about side-effect-free invocation.

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: first states what the tool lists, second says when to call it, third clarifies side effects. Information is front-loaded and each sentence earns its place with no redundancy.

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 read-only list tool with fully documented parameters and safety annotations, the description is complete. It conveys the output contents, provides usage context, and discloses cost/network behavior; no output schema exists, but the description covers what an agent needs to know.

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%, and both parameters already have clear enum constraints and descriptions. The tool description adds no parameter-specific meaning, but it does not need to because the schema fully documents kind and response_format.

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 states a specific verb ('List') and resource ('video and image models available on Dare'), plus the key attributes returned: durations, aspect ratios, quality tiers, and reference limits. This clearly distinguishes it from sibling tools like dare_estimate_cost or dare_generate_video.

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?

It explicitly says to call this before generating so parameters are valid for the chosen model, and points to dare_estimate_cost for prices. This gives an agent concrete when-to-use guidance and names the relevant alternative tool.

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

dare_list_projectsList Dare projectsA
Read-onlyIdempotent

List the account's Dare projects, for filing generations under a project id. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
response_formatNo`markdown` for a readable summary, `json` for the raw payload.markdown

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already provide readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds useful context beyond those: projects are scoped to the account and are intended for filing generations under a project id. It is consistent with the annotations and adds 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?

The description is a single, tight sentence that leads with the action and resource, then states the purpose and read-only nature. No wasted words.

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 list tool with zero required parameters, a complete schema, and strong annotations, the description provides everything an agent needs: what it lists, the account scope, the purpose, and the safe read-only 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 description coverage is 100%; the only parameter, response_format, has a full description, enum, and default in the schema. The description adds no parameter-level detail, but none is needed because the schema is complete.

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 and resource: 'List the account's Dare projects'. It also states the intended use ('for filing generations under a project id'), which clearly distinguishes it from sibling list tools like dare_list_models, dare_list_generations, and dare_list_uploads.

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: use this tool when you need a project id to file generations. It does not explicitly name alternatives or state when not to use it, but the resource and purpose make the appropriate use case evident.

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

dare_list_uploadsList Dare uploadsA
Read-onlyIdempotent

List previously uploaded reference media with their storage keys. Read-only, cursor-paginated.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoItems per page.
cursorNo`next_cursor` from a previous call.
response_formatNo`markdown` for a readable summary, `json` for the raw payload.markdown

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, and the description reinforces the read-only nature. It also adds the 'cursor-paginated' behavior, which is not present in the annotations and is valuable for an agent to understand pagination semantics.

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 concise sentence that front-loads the action and object, then covers the two most important behavioral traits (read-only and cursor-paginated). There is no wasted wording or redundant restating of the title.

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 optional-parameter list tool with rich annotations, the description provides the essential context: what is listed, that it is read-only, and how pagination behaves. It doesn't spell out the exact response format, but the response_format parameter and the mention of storage keys give enough guidance for calling the tool 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?

Schema description coverage is 100%, so the parameters (limit, cursor, response_format) are already well-documented in the input schema. The description does not add parameter-specific meaning, which is acceptable given the high coverage; the baseline 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?

The description opens with a specific verb ('List') and resource ('previously uploaded reference media'), and adds the key output detail ('with their storage keys'). The scope is clear and it is easily distinguishable from sibling tools like dare_list_generations, dare_list_models, and dare_list_projects merely by the resource type.

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 the usage context: call this when you need to see previously uploaded reference media. However, it does not explicitly state when to choose this over alternatives or name any exclusions, so the guidance is only implied rather than directly stated.

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

dare_upload_mediaUpload reference media to DareA

Upload an image, video or audio file to Dare and return its storage key, for use as a reference in dare_generate_video or dare_generate_image. Accepts a local file path, a public URL, or base64 bytes. Spends no credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoPublic URL to download and upload.
nameNoDisplay name in the Dare library.
base64NoBase64-encoded file bytes.
file_pathNoAbsolute path to a local file this server can read.
project_idNoOptional Dare project id.
content_typeNoMIME type, e.g. `image/png`. Inferred when omitted.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already convey the mutation profile (readOnlyHint=false, not idempotent, not destructive). The description adds meaningful non-schema context: 'Spends no credits' and 'returns its storage key.' It does not detail persistence or failure behavior, but the annotation coverage lowers the burden, and what is disclosed is relevant.

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 tight sentences front-load the purpose, then cover accepted inputs and cost. There is no filler or duplication of schema details that are already present.

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?

With no output schema, the description correctly explains the return value (storage key) and its downstream use. The main gap is that although it says 'a local file path, a public URL, or base64 bytes,' it does not explicitly state that at least one of these is required, which is important given the schema lists zero required parameters.

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 baseline is 3 and the schema already documents all six parameters. The description adds a useful summary of the three source options (file_path, url, base64) but does not significantly extend the schema's meaning for individual 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 uses a specific verb and resource ('Upload an image, video or audio file to Dare'), states the concrete output ('return its storage key'), and connects the tool to its downstream consumers ('dare_generate_video or dare_generate_image'). This clearly distinguishes it from sibling tools like list/delete uploads.

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 clearly explains the intended context: uploading reference media to be used in generation tools. It also names the accepted input forms. It does not explicitly mention when not to use it or alternatives, but among the siblings there is no competing upload tool, so the guidance is sufficient.

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. 13 tool updatesv0.1.0
    • First observeddare_cancel_generation
    • First observeddare_delete_generation
    • First observeddare_delete_upload
    • First observeddare_estimate_cost
    • First observeddare_generate_image
    • First observeddare_generate_video
    • First observeddare_get_credit_balance
    • First observeddare_get_generation
    • First observeddare_list_generations
    • First observeddare_list_models
    • First observeddare_list_projects
    • First observeddare_list_uploads
    • First observeddare_upload_media

TDQS

A4.4/5.0
Disambiguation5/5

Each tool targets a distinct resource and action: models, costs, balance, video generation, image generation, generation lifecycle, media uploads, and projects. Even generation and upload operations are clearly separated by resource type, leaving no realistic ambiguity.

Naming Consistency5/5

All tools follow the same dare_<verb>_<noun> pattern with consistent verb choices like list, get, create/generate, cancel, delete, and upload. The naming is uniform and predictable across the entire tool set.

Tool Count5/5

13 tools is well-scoped for a media generation API: it covers model discovery, cost estimation, account balance, generation creation/status/listing/cancellation/deletion, media uploads, and project listing. Each tool earns its place without the set feeling bloated or thin.

Completeness5/5

The tool surface covers the full generation workflow: estimate cost, check balance, generate, poll status, list, cancel, and delete. Uploads and projects are also covered for their supporting roles. No critical gap prevents an agent from completing a realistic task.

Maintenance

ActivityMaintained
ResponsivenessNo issues

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/avi-aggarwal14/dare-mcp-server'

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