Skip to main content
Glama

StudioSphere Pulse — Audio Intelligence

estimate_cost

Read-onlyIdempotent

Estimate audio analysis cost anonymously and free before committing. Read analysis_options for eligible anonymous one-off Checkout, trial duration fit and key-based banked-token use; these do not verify balance or trial entitlement. Eligible quotes can include checkout.upfront_payment_estimate from the current charge builder; this is not a reserved price or a saved-link charge. Review the hosted amount before payment. Returns estimated dollars, job_estimate_id and expires_at. Review the estimate before spending; final cost depends on measured duration and completed analysis, and Checkout can collect a buffered amount with refund thresholds. If processing or payment returns estimate_pricing_changed, get a fresh free estimate, present the new price, and wait for explicit user approval before processing or payment. Never silently retry analysis or purchase.

Input Schema

NameRequiredDescriptionDefault
toolsYesAnalysis tools to price. Available in v1.0: bpm, key, waveform. Coming soon: structure, chords.
audio_urlYesPublicly accessible URL of the audio file (MP3, WAV, FLAC, OGG, Opus).

Output Schema

NameRequiredDescriptionDefault
noteNo
errorNoMachine-readable error code.
tokensNoEstimated Pulse tokens.
detailsNoAdditional structured context from Pulse.
messageNoHuman-readable recovery guidance.
cost_usdNoEstimated analysis cost in USD.
breakdownNoPer-tool token and cost estimate.
retryableNoWhether the caller may retry after changing state or waiting.
expires_atNoISO timestamp when the estimate expires.
content_typeNo
cost_displayNoHuman-readable USD estimate.
duration_sourceNoDuration provenance: prior worker measurement, declared WAV or MP3 frame metadata, MP3 bitrate inferred from a bounded prefix, assumed format byte rate, or placeholder. Prefix bitrate cannot establish that the whole file is constant bitrate. All quotes remain estimates; processing measures actual audio.
job_estimate_idNoEstimate identifier valid for the configured TTL.
analysis_optionsNoAdvisory continuation choices for this estimate, not a reserved charge, verified balance, trial grant or host certification.
normalize_sourceNo
duration_inferredNo
audio_url_originalNo
audio_url_normalizedNo
content_length_bytesNo
duration_estimate_secNoEstimated audio duration in seconds.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedOutput schema / properties / analysis_options / properties / result_delivery
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "guidance": {
      +      "type": "string"
      +    },
      +    "studio_notes_field": {
      +      "const": "studio_notes",
      +      "type": "string"
      +    },
      +    "tool": {
      +      "const": "get_job_status",
      +      "type": "string"
      +    },
      +    "when": {
      +      "const": "completed_or_partial_with_usable_results",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "tool",
      +    "studio_notes_field",
      +    "when",
      +    "guidance"
      +  ],
      +  "type": "object"
      +}
  2. Changed1 schema field changed
    • addedOutput schema / properties / analysis_options / properties / checkout / properties / minimum_charge_offer
      Added value: +{
      +  "description": "Optional below-admission Checkout choice. Explicitly approve its minimum final cost and upfront estimate; send both acceptance and an approved spending ceiling. It is not a reserved price.",
      +  "properties": {
      +    "acceptance_parameter": {
      +      "const": "accept_minimum_charge",
      +      "type": "string"
      +    },
      +    "eligible": {
      +      "const": true,
      +      "type": "boolean"
      +    },
      +    "minimum_final_cost_usd": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "requires_explicit_acceptance": {
      +      "const": true,
      +      "type": "boolean"
      +    },
      +    "spending_limit_parameter": {
      +      "const": "max_upfront_amount_cents",
      +      "type": "string"
      +    },
      +    "upfront_payment_estimate": {
      +      "properties": {
      +        "amount_cents": {
      +          "minimum": 1,
      +          "type": "integer"
      +        },
      +        "currency": {
      +          "const": "USD",
      +          "type": "string"
      +        },
      +        "display": {
      +          "type": "string"
      +        },
      +        "reserved": {
      +          "const": false,
      +          "type": "boolean"
      +        }
      +      },
      +      "required": [
      +        "amount_cents",
      +        "display",
      +        "currency",
      +        "reserved"
      +      ],
      +      "type": "object"
      +    }
      +  },
      +  "required": [
      +    "eligible",
      +    "requires_explicit_acceptance",
      +    "minimum_final_cost_usd",
      +    "upfront_payment_estimate",
      +    "acceptance_parameter",
      +    "spending_limit_parameter"
      +  ],
      +  "type": "object"
      +}
  3. Changed2 schema fields changed
    • changedOutput schema / properties / duration_source / description
      Previous value: -"Duration provenance: prior worker measurement, declared uncompressed WAV sample frames, assumed format byte rate, or placeholder. All quotes remain estimates; processing measures actual audio."New value: +"Duration provenance: prior worker measurement, declared WAV or MP3 frame metadata, MP3 bitrate inferred from a bounded prefix, assumed format byte rate, or placeholder. Prefix bitrate cannot establish that the whole file is constant bitrate. All quotes remain estimates; processing measures actual audio."
    • changedOutput schema / properties / duration_source / enum
      Previous value: -[
      -  "worker_cache",
      -  "wav_header",
      -  "byte_rate",
      -  "placeholder"
      -]New value: +[
      +  "worker_cache",
      +  "wav_header",
      +  "mp3_header",
      +  "mp3_bitrate",
      +  "byte_rate",
      +  "placeholder"
      +]
  4. Changed1 schema field changed
    • addedOutput schema / properties / analysis_options
      Added value: +{
      +  "description": "Advisory continuation choices for this estimate, not a reserved charge, verified balance, trial grant or host certification.",
      +  "properties": {
      +    "advisory": {
      +      "const": true,
      +      "type": "boolean"
      +    },
      +    "banked_tokens": {
      +      "properties": {
      +        "balance_tool": {
      +          "type": "string"
      +        },
      +        "balance_verified": {
      +          "const": false,
      +          "type": "boolean"
      +        },
      +        "estimated_tokens": {
      +          "type": "integer"
      +        },
      +        "guidance": {
      +          "type": "string"
      +        },
      +        "packs_tool": {
      +          "type": "string"
      +        },
      +        "requires_api_key": {
      +          "const": true,
      +          "type": "boolean"
      +        },
      +        "token_shop_url": {
      +          "type": "string"
      +        },
      +        "tool": {
      +          "const": "analyze_track",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "tool",
      +        "requires_api_key",
      +        "balance_verified",
      +        "estimated_tokens",
      +        "balance_tool",
      +        "packs_tool",
      +        "token_shop_url",
      +        "guidance"
      +      ],
      +      "type": "object"
      +    },
      +    "checkout": {
      +      "properties": {
      +        "billing_terms_url": {
      +          "type": "string"
      +        },
      +        "eligible": {
      +          "type": "boolean"
      +        },
      +        "guidance": {
      +          "type": "string"
      +        },
      +        "human_payment_required": {
      +          "const": true,
      +          "type": "boolean"
      +        },
      +        "minimum_usd": {
      +          "type": "number"
      +        },
      +        "reason": {
      +          "enum": [
      +            "eligible",
      +            "below_minimum_charge"
      +          ],
      +          "type": "string"
      +        },
      +        "requires_api_key": {
      +          "const": false,
      +          "type": "boolean"
      +        },
      +        "tool": {
      +          "const": "request_payment_link",
      +          "type": "string"
      +        },
      +        "upfront_payment_estimate": {
      +          "description": "Advisory current-builder upfront Checkout amount, not a reserved price or a saved-link charge. Review the hosted amount before payment.",
      +          "properties": {
      +            "amount_cents": {
      +              "minimum": 0,
      +              "type": "integer"
      +            },
      +            "currency": {
      +              "const": "USD",
      +              "type": "string"
      +            },
      +            "display": {
      +              "type": "string"
      +            },
      +            "reserved": {
      +              "const": false,
      +              "type": "boolean"
      +            }
      +          },
      +          "required": [
      +            "amount_cents",
      +            "display",
      +            "currency",
      +            "reserved"
      +          ],
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "eligible",
      +        "reason",
      +        "minimum_usd",
      +        "tool",
      +        "requires_api_key",
      +        "human_payment_required",
      +        "billing_terms_url",
      +        "guidance"
      +      ],
      +      "type": "object"
      +    },
      +    "guidance": {
      +      "type": "string"
      +    },
      +    "trial": {
      +      "properties": {
      +        "allowance_tool": {
      +          "type": "string"
      +        },
      +        "allowance_verified": {
      +          "const": false,
      +          "type": "boolean"
      +        },
      +        "analysis_tool": {
      +          "type": "string"
      +        },
      +        "credential_creation_requires_approval": {
      +          "const": true,
      +          "type": "boolean"
      +        },
      +        "duration_within_public_policy": {
      +          "type": "boolean"
      +        },
      +        "enabled": {
      +          "type": "boolean"
      +        },
      +        "guidance": {
      +          "type": "string"
      +        },
      +        "max_duration_sec": {
      +          "type": "number"
      +        },
      +        "requires_reconnection": {
      +          "const": true,
      +          "type": "boolean"
      +        }
      +      },
      +      "required": [
      +        "enabled",
      +        "duration_within_public_policy",
      +        "max_duration_sec",
      +        "allowance_verified",
      +        "credential_creation_requires_approval",
      +        "requires_reconnection",
      +        "allowance_tool",
      +        "analysis_tool",
      +        "guidance"
      +      ],
      +      "type": "object"
      +    }
      +  },
      +  "required": [
      +    "advisory",
      +    "guidance",
      +    "checkout",
      +    "trial",
      +    "banked_tokens"
      +  ],
      +  "type": "object"
      +}
  5. Changed1 schema field changed
    • addedOutput schema / properties / duration_source
      Added value: +{
      +  "description": "Duration provenance: prior worker measurement, declared uncompressed WAV sample frames, assumed format byte rate, or placeholder. All quotes remain estimates; processing measures actual audio.",
      +  "enum": [
      +    "worker_cache",
      +    "wav_header",
      +    "byte_rate",
      +    "placeholder"
      +  ],
      +  "type": "string"
      +}
  6. Changed3 schema fields changed
    • addedOutput schema / anyOf
      Added value: +[
      +  {
      +    "required": [
      +      "cost_usd",
      +      "cost_display",
      +      "tokens",
      +      "breakdown",
      +      "duration_estimate_sec",
      +      "job_estimate_id",
      +      "expires_at"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "error",
      +      "message"
      +    ]
      +  }
      +]
    • addedOutput schema / properties
      Added value: +{
      +  "audio_url_normalized": {
      +    "type": "string"
      +  },
      +  "audio_url_original": {
      +    "type": "string"
      +  },
      +  "breakdown": {
      +    "additionalProperties": {
      +      "additionalProperties": true,
      +      "properties": {
      +        "cost_usd": {
      +          "type": "number"
      +        },
      +        "tokens": {
      +          "type": "number"
      +        }
      +      },
      +      "required": [
      +        "tokens",
      +        "cost_usd"
      +      ],
      +      "type": "object"
      +    },
      +    "description": "Per-tool token and cost estimate.",
      +    "type": "object"
      +  },
      +  "content_length_bytes": {
      +    "type": "number"
      +  },
      +  "content_type": {
      +    "type": "string"
      +  },
      +  "cost_display": {
      +    "description": "Human-readable USD estimate.",
      +    "type": "string"
      +  },
      +  "cost_usd": {
      +    "description": "Estimated analysis cost in USD.",
      +    "type": "number"
      +  },
      +  "details": {
      +    "additionalProperties": true,
      +    "description": "Additional structured context from Pulse.",
      +    "type": "object"
      +  },
      +  "duration_estimate_sec": {
      +    "description": "Estimated audio duration in seconds.",
      +    "type": "number"
      +  },
      +  "duration_inferred": {
      +    "type": "boolean"
      +  },
      +  "error": {
      +    "description": "Machine-readable error code.",
      +    "type": "string"
      +  },
      +  "expires_at": {
      +    "description": "ISO timestamp when the estimate expires.",
      +    "type": "string"
      +  },
      +  "job_estimate_id": {
      +    "description": "Estimate identifier valid for the configured TTL.",
      +    "type": "string"
      +  },
      +  "message": {
      +    "description": "Human-readable recovery guidance.",
      +    "type": "string"
      +  },
      +  "normalize_source": {
      +    "type": "string"
      +  },
      +  "note": {
      +    "type": "string"
      +  },
      +  "retryable": {
      +    "description": "Whether the caller may retry after changing state or waiting.",
      +    "type": "boolean"
      +  },
      +  "tokens": {
      +    "description": "Estimated Pulse tokens.",
      +    "type": "number"
      +  }
      +}
    • addedOutput schema / required
      Added value: +[]
  7. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "type": "object"
      +}
  8. First observed

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and non-destructive, so the safety profile is covered. The description adds real value beyond that: it discloses that quotes are not reserved prices, that eligibility does not verify balance or trial entitlement, that outputs expire, and that Checkout may collect a buffered amount with refund thresholds. That is meaningful behavioral context the annotations do not carry.

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

Conciseness3/5

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

The first sentence is well front-loaded, but the body is a dense run-on mixing URL-format field names, refund semantics, and retry policy without structural breaks. Information is present but not efficiently organized; several clauses could be trimmed or split.

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 an output schema present, the return-value explanation (dollars, job_estimate_id, expires_at) is somewhat redundant. Still, the description covers the pre-spend verification flow, eligibility caveats, and the pricing-change recovery path, giving an agent enough to call and act on this 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% with only 2 parameters, so the schema fully documents audio_url and the tools enum. The description adds no format, constraint, or semantics beyond the schema, so the baseline of 3 applies.

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

Purpose4/5

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

The opening sentence names a specific verb ('Estimate') and resource ('audio analysis cost') with clear scope modifiers: anonymous, free, before committing. This distinguishes it from purchase_token_pack and analyze_track, which perform the spend/action. However, the heavy jargon (banked-token, checkout.upfront_payment_estimate) dilutes what should be a crisp statement of purpose.

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?

It implies context ('before committing') and gives a conditional workflow for the estimate_pricing_changed case, plus the instruction not to silently retry. But it never names an alternative sibling (analyze_track, purchase_token_pack) or states explicitly when NOT to use this tool, leaving the agent to infer the routing.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.