Skip to main content
Glama

StudioSphere Pulse — Audio Intelligence

Server Details

Free licensed loops and authorized audio analysis: BPM, key, waveform. Estimate before paid use.

Ownership verified
Status
Healthy
Uptime
100.0% over 59 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
notpaulb/studiosphere-pulse-mcp
GitHub Stars
0
Server Listing
studiosphere-pulse-mcp

TDQS

A4.1/5.0

Scored across 10 tools

Disambiguation4/5

Most tools target distinct actions (estimate_cost, get_job_status, get_token_balance, list/purchase token packs, sample search/get). However, three tools (analyze_track, request_payment_link, start_trial) all initiate analysis through different payment/access paths, and purchase_token_pack overlaps with request_payment_link on payment, so an agent must read descriptions carefully to pick the right entry point.

Naming Consistency5/5

All ten tools use consistent snake_case verb_noun form (analyze_track, estimate_cost, get_job_status, list_token_packs, search_open_loops, start_trial). The singular/plural contrast between get_open_loop and search_open_loops reflects the domain term rather than a naming inconsistency.

Tool Count5/5

Ten tools is well-scoped for an audio-analysis service with pay-per-use billing, covering estimation, submission, polling, trial, payment, token management, and a sample library. No tool appears redundant or trivial.

Completeness4/5

The core lifecycle is covered end to end (estimate → analyze/pay/trial → poll status, plus token and sample-library operations). Minor gaps exist, such as no job-history listing, cancel/refund operation, or explicit licence/attribution lookup beyond open loops, but agents can work around these.

Available Tools

10 tools
analyze_trackInspect

Run audio analysis on a public audio URL. Requires estimate_cost to be called first (job_estimate_id). Requires PULSE_API_KEY. Before calling, you MUST confirm with the user that they have a lawful basis to submit this audio for analysis. For a user-requested folder, project, playlist, or batch, one confirmation can cover every track in that scope. Returns job_id — poll get_job_status for results. If processing or payment returns estimate_pricing_changed, get a fresh free estimate with estimate_cost, present the new price, and wait for explicit user approval before processing or payment. Never silently retry analysis or purchase.

ParametersJSON Schema
NameRequiredDescriptionDefault
toolsYesAnalysis tools to run. Available in v1.0: bpm, key, waveform. Coming soon: structure, chords.
audio_urlYesPublic URL of the audio file.
job_estimate_idYesThe job_estimate_id returned by estimate_cost. Must not have passed the returned expires_at timestamp.
attestation_confirmedYesSet to true ONLY after the user has confirmed they have rights, permission, lawful access, or another legal basis to submit this audio, or the current user-requested batch/folder/project containing it, for analysis.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okNoTrue when analysis was accepted.
errorNoMachine-readable error code.
job_idNoPulse analysis job id.
statusNoCurrent job status.
detailsNoAdditional structured context from Pulse.
messageNoHuman-readable recovery guidance.
poll_urlNoRelative status polling URL.
retryableNoWhether the caller may retry after changing state or waiting.
cache_hitsNoTools served from cache.
stream_urlNoRelative SSE status URL.
account_typeNoAccount type used for the request.
upgrade_pathNo
conversion_noteNo
tokens_estimatedNoEstimated token charge.
cost_usd_estimatedNoEstimated USD value.
estimate_cost
Read-onlyIdempotent
Inspect

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.

ParametersJSON 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

ParametersJSON Schema
NameRequiredDescription
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.
get_job_status
Read-onlyIdempotent
Inspect

Resume a saved analysis job anonymously, including after interrupted Checkout or reconnection. Read continuation for human payment, bounded polling, result review or support. Preserve job_id; never create a replacement purchase to resume it. Checkout refund_status_source=local_ledger reflects durable Pulse reconciliation at refund_checked_at, not a fresh provider query; unconfirmed or needs_review must not be treated as a completed refund. Analysis cost is distinct from net payment. Completed/partial status and cost fields do not prove payment or refund settlement. Terminal Checkout result pages show billing separately; during recovery use the optional receipt API on demand; receipt_api_url is a separate on-demand read, not another MCP tool. Returns available results and provenance. Usable completed/partial results can include studio_notes: ready-to-save project notes with review warnings and failed tools. Notes are analysis snapshots, not payment/refund receipts; keep private job references and preserve review context.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesThe job_id returned by analyze_track or request_payment_link.
include_waveform_dataNoOptional. Defaults to false so chat agents receive a compact waveform summary plus result_url. Set true only if raw waveform samples are needed.
include_waveform_imageNoOptional. Defaults to true. When the job has waveform data, include a server-rendered SVG as MCP image content so the client can display it without fetching a URL.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoMachine-readable error code.
job_idNoPulse analysis job id.
statusNoCurrent or terminal job status.
billingNo
detailsNoAdditional structured context from Pulse.
messageNoHuman-readable recovery guidance.
resultsNoAnalysis results when available.
cost_usdNo
metadataNoAnalysis metadata, including asset type, source hints, library metadata, and confidence policy when available.
retryableNoWhether the caller may retry after changing state or waiting.
expires_atNo
result_urlNoPublic result page URL.
completed_atNo
continuationNoAdvisory saved-job recovery. URLs contain a private job reference. No provider read or settlement verification is performed.
studio_notesNoOptional plain-text project notes for completed/partial usable results. Preserve review warnings, provenance and failed tools. Contains no audio/source URL or payment/refund receipt fields; job references are private.
waveform_fileNo
payment_sourceNo
tokens_chargedNo
waveform_imageNo
tokens_estimatedNo
waveform_png_urlNo
waveform_svg_urlNo
result_provenanceNoPer-tool provenance and applicability summary for interpreting detected, audio_candidate (manual review required), filename-sourced, suppressed, or low-confidence results.
waveform_markdownNo
result_quality_notesNoHuman-readable quality notes for suppressed, low-confidence, filename-sourced, or review-needed results.
get_open_loopA
Read-onlyIdempotent
Inspect

Get a released sample’s metadata, exact licence, attribution, preview and WAV download URLs. Free; no account or tokens required. Keep attribution when using the sample in a song.

ParametersJSON Schema
NameRequiredDescriptionDefault
pol_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
packNo
errorNoMachine-readable error code.
titleNo
pol_idNo
detailsNoAdditional structured context from Pulse.
licenseNo
messageNoHuman-readable recovery guidance.
retryableNoWhether the caller may retry after changing state or waiting.
attributionNo
license_urlNo
download_urlNo
review_basisNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and openWorld, so the bar is lower. The description still adds real context beyond them: no cost, no account or token consumption, and a downstream attribution obligation for the returned licence terms.

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 tight sentences: the payload first, the cost/auth constraint second, the licence obligation last. No filler, and the most decision-relevant information is front-loaded.

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

Completeness4/5

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

An output schema exists, so return values need no prose, and the description still summarizes them usefully. Missing only the discovery path for pol_id and any error behavior for invalid or unreleased IDs.

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

Parameters3/5

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

Schema coverage is 0%, so the single parameter carries no documentation. The phrase 'a released sample's' implies pol_id identifies a sample, but the description never confirms the pol- ID format or where to obtain a valid value, leaving the burden only partly met.

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

Purpose4/5

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

States a specific verb and resource ('Get a released sample's metadata, exact licence, attribution, preview and WAV download URLs'), enumerating the concrete payload. It is distinguishable from search_open_loops by the singular 'a released sample', but never names that sibling or the ID-lookup nature explicitly.

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?

Gives prerequisite guidance (free, no account or tokens required) that tells an agent this call has no auth barrier. However, it offers no when-not conditions and does not route the agent to search_open_loops for discovering a pol_id or to analyze_track for analysis.

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

get_token_balanceA
Read-onlyIdempotent
Inspect

Check the banked token balance for the authenticated Pulse account. Requires PULSE_API_KEY.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoMachine-readable error code.
detailsNoAdditional structured context from Pulse.
messageNoHuman-readable recovery guidance.
retryableNoWhether the caller may retry after changing state or waiting.
account_typeNoPulse account type.
trial_policyNo
banked_tokensNoCurrent banked-token balance.
api_key_prefixNoRedacted API-key prefix.
trial_allowanceNo
trial_expires_atNoTrial expiry timestamp if this is a trial account.
account_created_atNoAccount creation timestamp.

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, non-destructive and closed-world, so the safety profile is covered. The description adds a genuinely useful behavioral detail beyond the annotations: the PULSE_API_KEY authentication requirement, which the rubric explicitly counts as credit-worthy context.

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 filler; the purpose is front-loaded and the auth constraint follows immediately. Nothing is wasted.

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?

An output schema exists, so the description need not explain return values, and with no input parameters there is little else to document. Purpose plus auth requirement is sufficient for an agent to call this correctly.

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 tool takes zero parameters, so per the rubric the baseline is 4. There is nothing for the description to clarify beyond the auth context it 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?

States a specific verb ('Check') and resource ('banked token balance') scoped to the authenticated Pulse account. This is clearly distinguishable from sibling tools like list_token_packs or purchase_token_pack, which deal with packs rather than balance.

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?

Usage is implied (query the current balance), but there is no explicit when-to-use or when-not-to-use guidance, and no alternatives are named. The auth prerequisite is stated but that is a precondition, not routing guidance.

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

list_token_packsA
Read-onlyIdempotent
Inspect

List the available Pulse token packs (tier label, token count, price). Use before purchase_token_pack to show options to the user.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoMachine-readable error code.
packsNoAvailable token-pack tiers.
detailsNoAdditional structured context from Pulse.
enabledNoWhether token-pack purchasing is enabled.
messageNoHuman-readable recovery guidance.
retryableNoWhether the caller may retry after changing state or waiting.

TDQS

A4.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, covering safety and idempotency. The description adds that the list includes tier label, token count, and price, which provides useful context about return content, but this may duplicate the output schema. No additional behavioral disclosures (e.g., auth requirements, rate limits, pagination) are provided, so a moderate score 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.

Conciseness5/5

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

The description is only two sentences. The first sentence states the action and output contents, the second provides usage context. It is succinct, front-loaded, and every word provides value.

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 is low complexity: no parameters, simple list operation, with output schema present and comprehensive annotations. The description covers the core purpose and the primary usage context (before purchase). There are no significant gaps for the agent to invoke this tool correctly.

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 tool has zero parameters and the schema is empty. With no parameters to document, the baseline is 4. The description does not need to add parameter meaning, and it does not. It correctly avoids mentioning parameters that do not exist.

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: 'List the available Pulse token packs' with specific return contents (tier label, token count, price). It also distinguishes this tool from sibling purchase_token_pack by referencing it and positioning this as a pre-purchase listing action.

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?

The description gives explicit usage guidance: 'Use before purchase_token_pack to show options to the user.' This tells the agent exactly when to invoke this tool and names the downstream alternative/pair, fulfilling the when-to-use requirement clearly.

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

purchase_token_packAInspect

Create a Stripe Checkout session for a Pulse token pack. Returns payment_url — DO NOT submit it programmatically; surface it to the user so they can complete payment in their browser. Once paid, banked tokens are credited automatically. Requires PULSE_API_KEY.

ParametersJSON Schema
NameRequiredDescriptionDefault
packYesToken pack tier

Output Schema

ParametersJSON Schema
NameRequiredDescription
packNoToken-pack tier label.
errorNoMachine-readable error code.
tokensNoTokens included in the pack.
detailsNoAdditional structured context from Pulse.
messageNoHuman-readable recovery guidance.
currencyNoCheckout currency.
retryableNoWhether the caller may retry after changing state or waiting.
amount_usdNoPack price in USD.
expires_atNoISO timestamp when the Checkout link expires.
payment_urlNoStripe Checkout URL to present to the user.
purchase_idNoPulse token-pack purchase id.

TDQS

A4/5.0
Behavior4/5

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

Annotations only cover safety hints (openWorldHint, non-idempotent, non-destructive); the description adds substantive context they cannot convey: the required PULSE_API_KEY, the asynchronous post-condition that tokens are credited after payment, and a hard prohibition on programmatic URL submission. It does not cover retry/idempotency semantics for repeated session creation, which matters for a non-idempotent tool.

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 tight sentences, purpose front-loaded, then the critical output-handling warning, then the auth prerequisite. No filler, and the most failure-prone instruction gets due prominence.

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 need not be explained, and the auth requirement plus post-payment crediting are stated, so an agent has enough to invoke it correctly. The one gap is routing versus request_payment_link, which the description never addresses.

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?

Only one parameter and schema description coverage is 100%, so the schema fully documents 'pack' including its enum tiers. The description adds no meaning about tier choice or relative value, so baseline 3 is appropriate.

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

Purpose4/5

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

States a specific verb and resource: 'Create a Stripe Checkout session for a Pulse token pack.' This clearly separates it from readers like get_token_balance and list_token_packs, but it does not distinguish itself from the sibling request_payment_link, which sounds like an overlapping purchasing path.

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?

Gives a clear operational constraint — do not submit the returned URL programmatically, surface it to the user instead — which tells the agent exactly how the tool is meant to be consumed. It does not state when to choose it over list_token_packs or request_payment_link, so an explicit alternative-selection rule is missing.

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

search_open_loopsA
Read-onlyIdempotent
Inspect

Find released original synthesis kits and individually auditioned source samples by keyword, pack, BPM, key and licence. Automated checks are not listening review. Free; no account or tokens required. Source tags are creator hints. Preserve attribution when required and follow each sample’s licence.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoSearch sample titles, pack names and source tags.
keyNo
packNo
limitNo
offsetNo
bpm_maxNo
bpm_minNo
licenseNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoMachine-readable error code.
itemsNo
limitNo
totalNo
offsetNo
detailsNoAdditional structured context from Pulse.
messageNoHuman-readable recovery guidance.
retryableNoWhether the caller may retry after changing state or waiting.

TDQS

A3.6/5.0
Behavior4/5

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

Beyond the annotations (which already declare readOnly/idempotent/non-destructive/openWorld), the description adds genuinely useful behavioral context: the automated checks are not a listening review, source tags are only creator hints, and callers must preserve attribution and follow each sample's licence. These caveats are not derivable from annotations or schema.

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

Conciseness4/5

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

Four short sentences, front-loaded with the core purpose before the cost, quality and licensing caveats. Dense but each sentence carries information; no wasted 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?

An output schema exists so return values need not be described, and the description covers cost, licence/attribution policy and metadata caveats. Still, with 8 parameters at 13% schema coverage and no mention of limit/offset, an agent lacks full calling guidance, so it is only minimally complete.

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

Parameters3/5

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

Schema coverage is only 13% (only 'q' documented), so the description would need to compensate. It names the searchable dimensions (keyword, pack, BPM, key, licence), partially mapping to q/pack/bpm_min/bpm_max/key/license, but gives no syntax or format detail and never covers limit/offset. Adequate but incomplete against a low-coverage schema.

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

Purpose4/5

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

The description names a specific verb (Find) and a precise resource set (released original synthesis kits and individually auditioned source samples) plus the search facets (keyword, pack, BPM, key, licence). It is clearly a search tool, but it never explicitly distinguishes itself from the singular sibling get_open_loop, so it stops short of 5.

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 notes the tool is 'Free; no account or tokens required,' which implicitly contrasts it with token/paid siblings like estimate_cost, get_token_balance, purchase_token_pack and start_trial. However, there is no explicit when-to-use/when-not statement and no named alternative (e.g., vs get_open_loop), leaving usage to inference.

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

start_trialAInspect

Start a temporary, email-free Pulse trial for one URL analysis. Read trial_policy and trial_allowance for the actual duration cap and remaining attempts; an existing trial key may have a lower cap. One completed/partial analysis consumes the allowance regardless of remaining tokens. A failed analysis may retry only when attempts remain. No Stripe Checkout session is created. Store the returned private API key in the client or a trusted local environment; never repost it in logs, screenshots, shared chats or issues. Confirm rights, permission, lawful access, or another legal basis before analysis. The original CC0 demo is https://pulse.studiosphere.space/assets/pulse-demo.mp3 (180 seconds); use it only if it fits the returned cap.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoMachine-readable error code.
api_keyNoTemporary Pulse API key for the trial account. Treat as private; do not print it in public logs, screenshots, GitHub issues, shared chats, or directory examples.
detailsNoAdditional structured context from Pulse.
messageNoHuman-readable recovery guidance.
retryableNoWhether the caller may retry after changing state or waiting.
expires_atNoISO timestamp when the temporary key expires.
usage_noteNoLimits and usage guidance for the trial.
account_typeNoThe account type created by this tool.
analyze_pathNoREST path for authenticated analysis.
trial_policyNo
upgrade_pathNoPath for converting to an account.
banked_tokensNoTrial token balance granted.
estimate_pathNoREST path for free estimates.
trial_allowanceNo

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already say readOnly=false, openWorld=true, idempotent=false, destructive=false, but the description adds crucial behavior: existing trial key may lower the cap, consumption semantics for completed/partial vs failed analyses, no Stripe Checkout, and secure handling of the returned private API key. No contradiction.

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

Conciseness4/5

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

Front-loaded with purpose and key constraints. Dense but every sentence carries operational, security, or legal meaning; could be made more scannable, but no significant waste.

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 zero-parameter tool with an output schema and annotations covering safety, the description supplies all needed calling context: trial policy references, allowance/retry rules, payment distinction, key storage, and legal prerequisites. Return values are covered by the output 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?

There are zero input parameters, so the baseline is 4. The description adds no parameter meaning because none exist, though it mentions a returned private API key and a demo URL.

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?

Specific verb (Start) and resource (temporary, email-free Pulse trial for one URL analysis). It also distinguishes itself from paid siblings by stating 'No Stripe Checkout session is created,' so an agent can tell it apart from purchase_token_pack or request_payment_link.

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?

Gives clear conditions: read trial_policy and trial_allowance, one analysis consumes allowance, failed analysis retries only if attempts remain, no Stripe session, confirm legal basis. It does not name alternative tools or explicitly say when to prefer them, so not a 5.

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.

  1. 2 tool updates
    • Changedestimate_cost1 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"
        +}
    • Changedget_job_status1 field changed
      • addedOutput schema / properties / studio_notes
        Added value: +{
        +  "description": "Optional plain-text project notes for completed/partial usable results. Preserve review warnings, provenance and failed tools. Contains no audio/source URL or payment/refund receipt fields; job references are private.",
        +  "type": "string"
        +}
  2. 2 tool updates
    • Changedestimate_cost1 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"
        +}
    • Changedrequest_payment_link2 fields changed
      • addedInput schema / properties / accept_minimum_charge
        Added value: +{
        +  "description": "Optional. Set true only after explicit human acceptance of minimum_charge_offer.minimum_final_cost_usd and its estimated upfront payment. Rights confirmation alone is not spending approval.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / max_upfront_amount_cents
        Added value: +{
        +  "description": "Optional approved upfront USD ceiling in whole cents; required for minimum-charge acceptance. The gateway rejects a higher charge before creating a purchase. Do not raise it without renewed human approval.",
        +  "maximum": 9007199254740991,
        +  "minimum": 1,
        +  "type": "integer"
        +}
  3. 1 tool update
    • Changedestimate_cost2 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. 2 tool updates
    • Changedget_job_status1 field changed
      • addedOutput schema / properties / continuation
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Advisory saved-job recovery. URLs contain a private job reference. No provider read or settlement verification is performed.",
        +  "properties": {
        +    "action": {
        +      "enum": [
        +        "complete_checkout",
        +        "wait",
        +        "review_results",
        +        "contact_support",
        +        "check_saved_job"
        +      ],
        +      "type": "string"
        +    },
        +    "arguments": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "job_id": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "job_id"
        +      ],
        +      "type": "object"
        +    },
        +    "automatic_resubmission_allowed": {
        +      "const": false,
        +      "type": "boolean"
        +    },
        +    "financial_status_verified": {
        +      "const": false,
        +      "type": "boolean"
        +    },
        +    "guidance": {
        +      "type": "string"
        +    },
        +    "max_poll_attempts": {
        +      "minimum": 1,
        +      "type": "integer"
        +    },
        +    "missing_payment_url_action": {
        +      "const": "contact_support",
        +      "type": "string"
        +    },
        +    "poll_after_seconds": {
        +      "minimum": 1,
        +      "type": "integer"
        +    },
        +    "receipt_api_url": {
        +      "type": "string"
        +    },
        +    "review_url": {
        +      "type": "string"
        +    },
        +    "status_url": {
        +      "type": "string"
        +    },
        +    "support_email": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "const": "get_job_status",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "action",
        +    "tool",
        +    "arguments",
        +    "status_url",
        +    "review_url",
        +    "automatic_resubmission_allowed",
        +    "financial_status_verified",
        +    "support_email",
        +    "guidance"
        +  ],
        +  "type": "object"
        +}
    • Changedrequest_payment_link1 field changed
      • addedOutput schema / properties / continuation
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Advisory saved-job recovery. URLs contain a private job reference. No provider read or settlement verification is performed.",
        +  "properties": {
        +    "action": {
        +      "enum": [
        +        "complete_checkout",
        +        "wait",
        +        "review_results",
        +        "contact_support",
        +        "check_saved_job"
        +      ],
        +      "type": "string"
        +    },
        +    "arguments": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "job_id": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "job_id"
        +      ],
        +      "type": "object"
        +    },
        +    "automatic_resubmission_allowed": {
        +      "const": false,
        +      "type": "boolean"
        +    },
        +    "financial_status_verified": {
        +      "const": false,
        +      "type": "boolean"
        +    },
        +    "guidance": {
        +      "type": "string"
        +    },
        +    "max_poll_attempts": {
        +      "minimum": 1,
        +      "type": "integer"
        +    },
        +    "missing_payment_url_action": {
        +      "const": "contact_support",
        +      "type": "string"
        +    },
        +    "poll_after_seconds": {
        +      "minimum": 1,
        +      "type": "integer"
        +    },
        +    "receipt_api_url": {
        +      "type": "string"
        +    },
        +    "review_url": {
        +      "type": "string"
        +    },
        +    "status_url": {
        +      "type": "string"
        +    },
        +    "support_email": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "const": "get_job_status",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "action",
        +    "tool",
        +    "arguments",
        +    "status_url",
        +    "review_url",
        +    "automatic_resubmission_allowed",
        +    "financial_status_verified",
        +    "support_email",
        +    "guidance"
        +  ],
        +  "type": "object"
        +}
  5. 2 tool updates
    • Changedestimate_cost1 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"
        +}
    • Changedrequest_payment_link1 field changed
      • changedOutput schema / anyOf
        Previous value: -[
        -  {
        -    "required": [
        -      "payment_url",
        -      "job_id",
        -      "cost_display",
        -      "charged_display",
        -      "amount_charged_cents",
        -      "amount_estimate_cents",
        -      "expires_at"
        -    ]
        -  },
        -  {
        -    "required": [
        -      "error",
        -      "message"
        -    ]
        -  }
        -]New value: +[
        +  {
        +    "required": [
        +      "payment_url",
        +      "job_id",
        +      "cost_display",
        +      "charged_display",
        +      "amount_charged_cents",
        +      "amount_estimate_cents",
        +      "expires_at"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error",
        +      "message"
        +    ]
        +  },
        +  {
        +    "properties": {
        +      "deduped": {
        +        "const": true
        +      }
        +    },
        +    "required": [
        +      "payment_url",
        +      "job_id",
        +      "cost_display",
        +      "expires_at",
        +      "deduped"
        +    ]
        +  }
        +]
  6. 1 tool update
    • Changedestimate_cost1 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"
        +}
  7. 1 tool update
    • Changedanalyze_track1 field changed
      • changedInput schema / properties / job_estimate_id / description
        Previous value: -"The job_estimate_id returned by estimate_cost. Must not be expired (30 min TTL)."New value: +"The job_estimate_id returned by estimate_cost. Must not have passed the returned expires_at timestamp."
  8. 4 tool updates
    • Changedget_job_status1 field changed
      • changedOutput schema / properties / result_provenance / description
        Previous value: -"Per-tool provenance and applicability summary for interpreting detected, filename-sourced, suppressed, or low-confidence results."New value: +"Per-tool provenance and applicability summary for interpreting detected, audio_candidate (manual review required), filename-sourced, suppressed, or low-confidence results."
    • Changedget_token_balance2 fields changed
      • addedOutput schema / properties / trial_allowance
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "analyses_remaining": {
        +      "type": "integer"
        +    },
        +    "attempts_remaining": {
        +      "type": "integer"
        +    },
        +    "max_duration_sec": {
        +      "type": "integer"
        +    },
        +    "state": {
        +      "enum": [
        +        "available",
        +        "in_progress",
        +        "used",
        +        "exhausted"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "state",
        +    "analyses_remaining",
        +    "attempts_remaining",
        +    "max_duration_sec"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / trial_policy
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "enabled": {
        +      "type": "boolean"
        +    },
        +    "expires_in_hours": {
        +      "type": "integer"
        +    },
        +    "max_duration_sec": {
        +      "type": "integer"
        +    },
        +    "max_queued_attempts": {
        +      "type": "integer"
        +    },
        +    "tokens": {
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "enabled",
        +    "tokens",
        +    "max_duration_sec",
        +    "max_queued_attempts",
        +    "expires_in_hours"
        +  ],
        +  "type": "object"
        +}
    • Changedpurchase_token_pack1 field changed
      • changedInput schema / properties / pack / enum
        Previous value: -[
        -  "10K",
        -  "50K",
        -  "200K"
        -]New value: +[
        +  "1K",
        +  "10K",
        +  "50K",
        +  "200K"
        +]
    • Changedstart_trial3 fields changed
      • changedOutput schema / anyOf
        Previous value: -[
        -  {
        -    "required": [
        -      "api_key",
        -      "account_type",
        -      "banked_tokens",
        -      "expires_at",
        -      "usage_note"
        -    ]
        -  },
        -  {
        -    "required": [
        -      "error",
        -      "message"
        -    ]
        -  }
        -]New value: +[
        +  {
        +    "required": [
        +      "api_key",
        +      "account_type",
        +      "banked_tokens",
        +      "expires_at",
        +      "usage_note",
        +      "trial_policy",
        +      "trial_allowance"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error",
        +      "message"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / trial_allowance
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "analyses_remaining": {
        +      "type": "integer"
        +    },
        +    "attempts_remaining": {
        +      "type": "integer"
        +    },
        +    "max_duration_sec": {
        +      "type": "integer"
        +    },
        +    "state": {
        +      "enum": [
        +        "available",
        +        "in_progress",
        +        "used",
        +        "exhausted"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "state",
        +    "analyses_remaining",
        +    "attempts_remaining",
        +    "max_duration_sec"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / trial_policy
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "enabled": {
        +      "type": "boolean"
        +    },
        +    "expires_in_hours": {
        +      "type": "integer"
        +    },
        +    "max_duration_sec": {
        +      "type": "integer"
        +    },
        +    "max_queued_attempts": {
        +      "type": "integer"
        +    },
        +    "tokens": {
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "enabled",
        +    "tokens",
        +    "max_duration_sec",
        +    "max_queued_attempts",
        +    "expires_in_hours"
        +  ],
        +  "type": "object"
        +}
  9. 2 tool updates
    • Changedget_open_loop2 fields changed
      • addedOutput schema / properties / pack
        Added value: +{
        +  "maxLength": 200,
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / review_basis
        Added value: +{
        +  "enum": [
        +    "original_synthesis",
        +    "individually_auditioned"
        +  ],
        +  "type": "string"
        +}
    • Changedsearch_open_loops2 fields changed
      • addedInput schema / properties / pack
        Added value: +{
        +  "maxLength": 200,
        +  "type": "string"
        +}
      • changedInput schema / properties / q / description
        Previous value: -"Search sample titles and source tags."New value: +"Search sample titles, pack names and source tags."
  10. 2 tool updates
    • Addedget_open_loop
    • Addedsearch_open_loops
  11. 1 tool update
    • Changedget_job_status3 fields changed
      • addedOutput schema / properties / metadata
        Added value: +{
        +  "additionalProperties": true,
        +  "description": "Analysis metadata, including asset type, source hints, library metadata, and confidence policy when available.",
        +  "type": "object"
        +}
      • addedOutput schema / properties / result_provenance
        Added value: +{
        +  "additionalProperties": true,
        +  "description": "Per-tool provenance and applicability summary for interpreting detected, filename-sourced, suppressed, or low-confidence results.",
        +  "type": "object"
        +}
      • addedOutput schema / properties / result_quality_notes
        Added value: +{
        +  "description": "Human-readable quality notes for suppressed, low-confidence, filename-sourced, or review-needed results.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
  12. 1 tool update
    • Changedstart_trial1 field changed
      • changedOutput schema / properties / api_key / description
        Previous value: -"Temporary Pulse API key for the trial account."New value: +"Temporary Pulse API key for the trial account. Treat as private; do not print it in public logs, screenshots, GitHub issues, shared chats, or directory examples."
  13. 8 tool updates
    • Changedanalyze_track3 fields changed
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "required": [
        +      "ok",
        +      "job_id",
        +      "status",
        +      "cache_hits",
        +      "tokens_estimated",
        +      "cost_usd_estimated",
        +      "poll_url",
        +      "stream_url"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error",
        +      "message"
        +    ]
        +  }
        +]
      • addedOutput schema / properties
        Added value: +{
        +  "account_type": {
        +    "description": "Account type used for the request.",
        +    "type": "string"
        +  },
        +  "cache_hits": {
        +    "description": "Tools served from cache.",
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  "conversion_note": {
        +    "type": "string"
        +  },
        +  "cost_usd_estimated": {
        +    "description": "Estimated USD value.",
        +    "type": "number"
        +  },
        +  "details": {
        +    "additionalProperties": true,
        +    "description": "Additional structured context from Pulse.",
        +    "type": "object"
        +  },
        +  "error": {
        +    "description": "Machine-readable error code.",
        +    "type": "string"
        +  },
        +  "job_id": {
        +    "description": "Pulse analysis job id.",
        +    "type": "string"
        +  },
        +  "message": {
        +    "description": "Human-readable recovery guidance.",
        +    "type": "string"
        +  },
        +  "ok": {
        +    "description": "True when analysis was accepted.",
        +    "type": "boolean"
        +  },
        +  "poll_url": {
        +    "description": "Relative status polling URL.",
        +    "type": "string"
        +  },
        +  "retryable": {
        +    "description": "Whether the caller may retry after changing state or waiting.",
        +    "type": "boolean"
        +  },
        +  "status": {
        +    "description": "Current job status.",
        +    "type": "string"
        +  },
        +  "stream_url": {
        +    "description": "Relative SSE status URL.",
        +    "type": "string"
        +  },
        +  "tokens_estimated": {
        +    "description": "Estimated token charge.",
        +    "type": "number"
        +  },
        +  "upgrade_path": {
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / required
        Added value: +[]
    • Changedestimate_cost3 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: +[]
    • Changedget_job_status3 fields changed
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "required": [
        +      "job_id",
        +      "status"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error",
        +      "message"
        +    ]
        +  }
        +]
      • addedOutput schema / properties
        Added value: +{
        +  "billing": {
        +    "additionalProperties": true,
        +    "type": "object"
        +  },
        +  "completed_at": {
        +    "type": "string"
        +  },
        +  "cost_usd": {
        +    "type": "number"
        +  },
        +  "details": {
        +    "additionalProperties": true,
        +    "description": "Additional structured context from Pulse.",
        +    "type": "object"
        +  },
        +  "error": {
        +    "description": "Machine-readable error code.",
        +    "type": "string"
        +  },
        +  "expires_at": {
        +    "type": "string"
        +  },
        +  "job_id": {
        +    "description": "Pulse analysis job id.",
        +    "type": "string"
        +  },
        +  "message": {
        +    "description": "Human-readable recovery guidance.",
        +    "type": "string"
        +  },
        +  "payment_source": {
        +    "type": "string"
        +  },
        +  "result_url": {
        +    "description": "Public result page URL.",
        +    "type": "string"
        +  },
        +  "results": {
        +    "additionalProperties": true,
        +    "description": "Analysis results when available.",
        +    "type": "object"
        +  },
        +  "retryable": {
        +    "description": "Whether the caller may retry after changing state or waiting.",
        +    "type": "boolean"
        +  },
        +  "status": {
        +    "description": "Current or terminal job status.",
        +    "type": "string"
        +  },
        +  "tokens_charged": {
        +    "type": "number"
        +  },
        +  "tokens_estimated": {
        +    "type": "number"
        +  },
        +  "waveform_file": {
        +    "additionalProperties": true,
        +    "type": "object"
        +  },
        +  "waveform_image": {
        +    "additionalProperties": true,
        +    "type": "object"
        +  },
        +  "waveform_markdown": {
        +    "type": "string"
        +  },
        +  "waveform_png_url": {
        +    "type": "string"
        +  },
        +  "waveform_svg_url": {
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / required
        Added value: +[]
    • Changedget_token_balance3 fields changed
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "required": [
        +      "banked_tokens",
        +      "api_key_prefix",
        +      "account_type",
        +      "trial_expires_at",
        +      "account_created_at"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error",
        +      "message"
        +    ]
        +  }
        +]
      • addedOutput schema / properties
        Added value: +{
        +  "account_created_at": {
        +    "description": "Account creation timestamp.",
        +    "type": "string"
        +  },
        +  "account_type": {
        +    "description": "Pulse account type.",
        +    "type": "string"
        +  },
        +  "api_key_prefix": {
        +    "description": "Redacted API-key prefix.",
        +    "type": "string"
        +  },
        +  "banked_tokens": {
        +    "description": "Current banked-token balance.",
        +    "type": "number"
        +  },
        +  "details": {
        +    "additionalProperties": true,
        +    "description": "Additional structured context from Pulse.",
        +    "type": "object"
        +  },
        +  "error": {
        +    "description": "Machine-readable error code.",
        +    "type": "string"
        +  },
        +  "message": {
        +    "description": "Human-readable recovery guidance.",
        +    "type": "string"
        +  },
        +  "retryable": {
        +    "description": "Whether the caller may retry after changing state or waiting.",
        +    "type": "boolean"
        +  },
        +  "trial_expires_at": {
        +    "description": "Trial expiry timestamp if this is a trial account.",
        +    "type": [
        +      "string",
        +      "null"
        +    ]
        +  }
        +}
      • addedOutput schema / required
        Added value: +[]
    • Changedlist_token_packs3 fields changed
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "required": [
        +      "enabled",
        +      "packs"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error",
        +      "message"
        +    ]
        +  }
        +]
      • addedOutput schema / properties
        Added value: +{
        +  "details": {
        +    "additionalProperties": true,
        +    "description": "Additional structured context from Pulse.",
        +    "type": "object"
        +  },
        +  "enabled": {
        +    "description": "Whether token-pack purchasing is enabled.",
        +    "type": "boolean"
        +  },
        +  "error": {
        +    "description": "Machine-readable error code.",
        +    "type": "string"
        +  },
        +  "message": {
        +    "description": "Human-readable recovery guidance.",
        +    "type": "string"
        +  },
        +  "packs": {
        +    "description": "Available token-pack tiers.",
        +    "items": {
        +      "additionalProperties": true,
        +      "properties": {
        +        "amount_cents": {
        +          "type": "number"
        +        },
        +        "amount_usd": {
        +          "type": "number"
        +        },
        +        "currency": {
        +          "type": "string"
        +        },
        +        "pack": {
        +          "type": "string"
        +        },
        +        "tokens": {
        +          "type": "number"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  "retryable": {
        +    "description": "Whether the caller may retry after changing state or waiting.",
        +    "type": "boolean"
        +  }
        +}
      • addedOutput schema / required
        Added value: +[]
    • Changedpurchase_token_pack3 fields changed
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "required": [
        +      "purchase_id",
        +      "pack",
        +      "tokens",
        +      "amount_usd",
        +      "currency",
        +      "payment_url",
        +      "expires_at"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error",
        +      "message"
        +    ]
        +  }
        +]
      • addedOutput schema / properties
        Added value: +{
        +  "amount_usd": {
        +    "description": "Pack price in USD.",
        +    "type": "number"
        +  },
        +  "currency": {
        +    "description": "Checkout currency.",
        +    "type": "string"
        +  },
        +  "details": {
        +    "additionalProperties": true,
        +    "description": "Additional structured context from Pulse.",
        +    "type": "object"
        +  },
        +  "error": {
        +    "description": "Machine-readable error code.",
        +    "type": "string"
        +  },
        +  "expires_at": {
        +    "description": "ISO timestamp when the Checkout link expires.",
        +    "type": "string"
        +  },
        +  "message": {
        +    "description": "Human-readable recovery guidance.",
        +    "type": "string"
        +  },
        +  "pack": {
        +    "description": "Token-pack tier label.",
        +    "type": "string"
        +  },
        +  "payment_url": {
        +    "description": "Stripe Checkout URL to present to the user.",
        +    "type": "string"
        +  },
        +  "purchase_id": {
        +    "description": "Pulse token-pack purchase id.",
        +    "type": "string"
        +  },
        +  "retryable": {
        +    "description": "Whether the caller may retry after changing state or waiting.",
        +    "type": "boolean"
        +  },
        +  "tokens": {
        +    "description": "Tokens included in the pack.",
        +    "type": "number"
        +  }
        +}
      • addedOutput schema / required
        Added value: +[]
    • Changedrequest_payment_link3 fields changed
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "required": [
        +      "payment_url",
        +      "job_id",
        +      "cost_display",
        +      "charged_display",
        +      "amount_charged_cents",
        +      "amount_estimate_cents",
        +      "expires_at"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error",
        +      "message"
        +    ]
        +  }
        +]
      • addedOutput schema / properties
        Added value: +{
        +  "amount_charged_cents": {
        +    "description": "Stripe Checkout charge in cents.",
        +    "type": "number"
        +  },
        +  "amount_estimate_cents": {
        +    "description": "Estimated usage value in cents.",
        +    "type": "number"
        +  },
        +  "charged_display": {
        +    "description": "Human-readable upfront Checkout charge.",
        +    "type": "string"
        +  },
        +  "cost_display": {
        +    "description": "Human-readable estimated cost.",
        +    "type": "string"
        +  },
        +  "deduped": {
        +    "description": "True when an existing active Checkout link was reused.",
        +    "type": "boolean"
        +  },
        +  "details": {
        +    "additionalProperties": true,
        +    "description": "Additional structured context from Pulse.",
        +    "type": "object"
        +  },
        +  "error": {
        +    "description": "Machine-readable error code.",
        +    "type": "string"
        +  },
        +  "expires_at": {
        +    "description": "ISO timestamp when the Checkout link expires.",
        +    "type": "string"
        +  },
        +  "job_id": {
        +    "description": "Pulse job id for polling after payment.",
        +    "type": "string"
        +  },
        +  "message": {
        +    "description": "Human-readable recovery guidance.",
        +    "type": "string"
        +  },
        +  "payment_url": {
        +    "description": "Stripe Checkout URL to present to the user.",
        +    "type": "string"
        +  },
        +  "retryable": {
        +    "description": "Whether the caller may retry after changing state or waiting.",
        +    "type": "boolean"
        +  }
        +}
      • addedOutput schema / required
        Added value: +[]
    • Changedstart_trial3 fields changed
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "required": [
        +      "api_key",
        +      "account_type",
        +      "banked_tokens",
        +      "expires_at",
        +      "usage_note"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error",
        +      "message"
        +    ]
        +  }
        +]
      • addedOutput schema / properties
        Added value: +{
        +  "account_type": {
        +    "description": "The account type created by this tool.",
        +    "enum": [
        +      "trial"
        +    ],
        +    "type": "string"
        +  },
        +  "analyze_path": {
        +    "description": "REST path for authenticated analysis.",
        +    "type": "string"
        +  },
        +  "api_key": {
        +    "description": "Temporary Pulse API key for the trial account.",
        +    "type": "string"
        +  },
        +  "banked_tokens": {
        +    "description": "Trial token balance granted.",
        +    "type": "number"
        +  },
        +  "details": {
        +    "additionalProperties": true,
        +    "description": "Additional structured context from Pulse.",
        +    "type": "object"
        +  },
        +  "error": {
        +    "description": "Machine-readable error code.",
        +    "type": "string"
        +  },
        +  "estimate_path": {
        +    "description": "REST path for free estimates.",
        +    "type": "string"
        +  },
        +  "expires_at": {
        +    "description": "ISO timestamp when the temporary key expires.",
        +    "type": "string"
        +  },
        +  "message": {
        +    "description": "Human-readable recovery guidance.",
        +    "type": "string"
        +  },
        +  "retryable": {
        +    "description": "Whether the caller may retry after changing state or waiting.",
        +    "type": "boolean"
        +  },
        +  "upgrade_path": {
        +    "description": "Path for converting to an account.",
        +    "type": "string"
        +  },
        +  "usage_note": {
        +    "description": "Limits and usage guidance for the trial.",
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / required
        Added value: +[]
  14. 1 tool update
    • Addedstart_trial
  15. 7 tool updates
    • Changedanalyze_track1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedestimate_cost1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedget_job_status1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedget_token_balance1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedlist_token_packs1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedpurchase_token_pack1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedrequest_payment_link1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
  16. 1 tool update
    • Changedget_job_status1 field changed
      • addedInput schema / properties / include_waveform_image
        Added value: +{
        +  "description": "Optional. Defaults to true. When the job has waveform data, include a server-rendered SVG as MCP image content so the client can display it without fetching a URL.",
        +  "type": "boolean"
        +}
  17. 1 tool update
    • Changedget_job_status1 field changed
      • addedInput schema / properties / include_waveform_data
        Added value: +{
        +  "description": "Optional. Defaults to false so chat agents receive a compact waveform summary plus result_url. Set true only if raw waveform samples are needed.",
        +  "type": "boolean"
        +}

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to analyze audio files, extracting tempo, key, beat drops, volume surges, high tones, loudness, brightness, and structure, and returning structured JSON and visualizations.
    2
    MIT
  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables agents to ingest local or URL video clips and have the footage itself analyzed for mood, pace, speech, and scene cuts, returning a shortlist of license-safe royalty-free or Creative Commons BGM tracks with attribution printed on every row. Also produces 12–20s hook windows, beat-snapped cut suggestions, mix previews, and ready-to-run ffmpeg ducking specs, with optional batch analysis and reusable brand kits.
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.