Servidor MCP

StudioSphere Pulse — Audio Intelligence

space.studiosphere/pulse
Medios y contenido Público y accesible MCP 2025-11-25

Qué hace este MCP

Analyzes audio from public URLs for BPM, musical key, waveform, and related audio characteristics through asynchronous jobs.

analyze_track
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.
Acceso externo
Esquema de entrada
{'type': 'object', 'required': ['audio_url', 'tools', 'job_estimate_id', 'attestation_confirmed'], 'properties': {'tools': {'type': 'array', 'items': {'enum': ['bpm', 'key', 'waveform'], 'type': 'string'}, 'description': 'Analysis tools to run. Available in v1.0: bpm, key, waveform. Coming soon: structure, chords.'}, 'audio_url': {'type': 'string', 'description': 'Public URL of the audio file.'}, 'job_estimate_id': {'type': 'string', 'description': 'The job_estimate_id returned by estimate_cost. Must not be expired (30 min TTL).'}, 'attestation_confirmed': {'type': 'boolean', 'description': 'Set 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.'}}}
Esquema de salida
{'type': 'object', 'anyOf': [{'required': ['ok', 'job_id', 'status', 'cache_hits', 'tokens_estimated', 'cost_usd_estimated', 'poll_url', 'stream_url']}, {'required': ['error', 'message']}], 'required': [], 'properties': {'ok': {'type': 'boolean', 'description': 'True when analysis was accepted.'}, 'error': {'type': 'string', 'description': 'Machine-readable error code.'}, 'job_id': {'type': 'string', 'description': 'Pulse analysis job id.'}, 'status': {'type': 'string', 'description': 'Current job status.'}, 'details': {'type': 'object', 'description': 'Additional structured context from Pulse.', 'additionalProperties': True}, 'message': {'type': 'string', 'description': 'Human-readable recovery guidance.'}, 'poll_url': {'type': 'string', 'description': 'Relative status polling URL.'}, 'retryable': {'type': 'boolean', 'description': 'Whether the caller may retry after changing state or waiting.'}, 'cache_hits': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Tools served from cache.'}, 'stream_url': {'type': 'string', 'description': 'Relative SSE status URL.'}, 'account_type': {'type': 'string', 'description': 'Account type used for the request.'}, 'upgrade_path': {'type': 'string'}, 'conversion_note': {'type': 'string'}, 'tokens_estimated': {'type': 'number', 'description': 'Estimated token charge.'}, 'cost_usd_estimated': {'type': 'number', 'description': 'Estimated USD value.'}}, 'additionalProperties': True}
estimate_cost
Get the exact price to analyze an audio file before committing. Always call this first. Returns cost in dollars and a job_estimate_id valid for 30 minutes. Free — never charged.
Solo lectura Acceso externo Idempotente
Esquema de entrada
{'type': 'object', 'required': ['audio_url', 'tools'], 'properties': {'tools': {'type': 'array', 'items': {'enum': ['bpm', 'key', 'waveform'], 'type': 'string'}, 'description': 'Analysis tools to price. Available in v1.0: bpm, key, waveform. Coming soon: structure, chords.'}, 'audio_url': {'type': 'string', 'description': 'Publicly accessible URL of the audio file (MP3, WAV, FLAC, OGG, Opus).'}}}
Esquema de salida
{'type': 'object', 'anyOf': [{'required': ['cost_usd', 'cost_display', 'tokens', 'breakdown', 'duration_estimate_sec', 'job_estimate_id', 'expires_at']}, {'required': ['error', 'message']}], 'required': [], 'properties': {'note': {'type': 'string'}, 'error': {'type': 'string', 'description': 'Machine-readable error code.'}, 'tokens': {'type': 'number', 'description': 'Estimated Pulse tokens.'}, 'details': {'type': 'object', 'description': 'Additional structured context from Pulse.', 'additionalProperties': True}, 'message': {'type': 'string', 'description': 'Human-readable recovery guidance.'}, 'cost_usd': {'type': 'number', 'description': 'Estimated analysis cost in USD.'}, 'breakdown': {'type': 'object', 'description': 'Per-tool token and cost estimate.', 'additionalProperties': {'type': 'object', 'required': ['tokens', 'cost_usd'], 'properties': {'tokens': {'type': 'number'}, 'cost_usd': {'type': 'number'}}, 'additionalProperties': True}}, 'retryable': {'type': 'boolean', 'description': 'Whether the caller may retry after changing state or waiting.'}, 'expires_at': {'type': 'string', 'description': 'ISO timestamp when the estimate expires.'}, 'content_type': {'type': 'string'}, 'cost_display': {'type': 'string', 'description': 'Human-readable USD estimate.'}, 'job_estimate_id': {'type': 'string', 'description': 'Estimate identifier valid for the configured TTL.'}, 'normalize_source': {'type': 'string'}, 'duration_inferred': {'type': 'boolean'}, 'audio_url_original': {'type': 'string'}, 'audio_url_normalized': {'type': 'string'}, 'content_length_bytes': {'type': 'number'}, 'duration_estimate_sec': {'type': 'number', 'description': 'Estimated audio duration in seconds.'}}, 'additionalProperties': True}
get_job_status
Check the status and results of an analysis job. Poll after analyze_track returns job_id, or after the user pays via request_payment_link. Returns full results when status=completed.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', 'required': ['job_id'], 'properties': {'job_id': {'type': 'string', 'description': 'The job_id returned by analyze_track or request_payment_link.'}, 'include_waveform_data': {'type': 'boolean', '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.'}, 'include_waveform_image': {'type': 'boolean', '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.'}}}
Esquema de salida
{'type': 'object', 'anyOf': [{'required': ['job_id', 'status']}, {'required': ['error', 'message']}], 'required': [], 'properties': {'error': {'type': 'string', 'description': 'Machine-readable error code.'}, 'job_id': {'type': 'string', 'description': 'Pulse analysis job id.'}, 'status': {'type': 'string', 'description': 'Current or terminal job status.'}, 'billing': {'type': 'object', 'additionalProperties': True}, 'details': {'type': 'object', 'description': 'Additional structured context from Pulse.', 'additionalProperties': True}, 'message': {'type': 'string', 'description': 'Human-readable recovery guidance.'}, 'results': {'type': 'object', 'description': 'Analysis results when available.', 'additionalProperties': True}, 'cost_usd': {'type': 'number'}, 'metadata': {'type': 'object', 'description': 'Analysis metadata, including asset type, source hints, library metadata, and confidence policy when available.', 'additionalProperties': True}, 'retryable': {'type': 'boolean', 'description': 'Whether the caller may retry after changing state or waiting.'}, 'expires_at': {'type': 'string'}, 'result_url': {'type': 'string', 'description': 'Public result page URL.'}, 'completed_at': {'type': 'string'}, 'waveform_file': {'type': 'object', 'additionalProperties': True}, 'payment_source': {'type': 'string'}, 'tokens_charged': {'type': 'number'}, 'waveform_image': {'type': 'object', 'additionalProperties': True}, 'tokens_estimated': {'type': 'number'}, 'waveform_png_url': {'type': 'string'}, 'waveform_svg_url': {'type': 'string'}, 'result_provenance': {'type': 'object', 'description': 'Per-tool provenance and applicability summary for interpreting detected, filename-sourced, suppressed, or low-confidence results.', 'additionalProperties': True}, 'waveform_markdown': {'type': 'string'}, 'result_quality_notes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Human-readable quality notes for suppressed, low-confidence, filename-sourced, or review-needed results.'}}, 'additionalProperties': True}
get_token_balance
Check the banked token balance for the authenticated Pulse account. Requires PULSE_API_KEY.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {}}
Esquema de salida
{'type': 'object', 'anyOf': [{'required': ['banked_tokens', 'api_key_prefix', 'account_type', 'trial_expires_at', 'account_created_at']}, {'required': ['error', 'message']}], 'required': [], 'properties': {'error': {'type': 'string', 'description': 'Machine-readable error code.'}, 'details': {'type': 'object', 'description': 'Additional structured context from Pulse.', 'additionalProperties': True}, 'message': {'type': 'string', 'description': 'Human-readable recovery guidance.'}, 'retryable': {'type': 'boolean', 'description': 'Whether the caller may retry after changing state or waiting.'}, 'account_type': {'type': 'string', 'description': 'Pulse account type.'}, 'banked_tokens': {'type': 'number', 'description': 'Current banked-token balance.'}, 'api_key_prefix': {'type': 'string', 'description': 'Redacted API-key prefix.'}, 'trial_expires_at': {'type': ['string', 'null'], 'description': 'Trial expiry timestamp if this is a trial account.'}, 'account_created_at': {'type': 'string', 'description': 'Account creation timestamp.'}}, 'additionalProperties': True}
list_token_packs
List the available Pulse token packs (tier label, token count, price). Use before purchase_token_pack to show options to the user.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {}}
Esquema de salida
{'type': 'object', 'anyOf': [{'required': ['enabled', 'packs']}, {'required': ['error', 'message']}], 'required': [], 'properties': {'error': {'type': 'string', 'description': 'Machine-readable error code.'}, 'packs': {'type': 'array', 'items': {'type': 'object', 'properties': {'pack': {'type': 'string'}, 'tokens': {'type': 'number'}, 'currency': {'type': 'string'}, 'amount_usd': {'type': 'number'}, 'amount_cents': {'type': 'number'}}, 'additionalProperties': True}, 'description': 'Available token-pack tiers.'}, 'details': {'type': 'object', 'description': 'Additional structured context from Pulse.', 'additionalProperties': True}, 'enabled': {'type': 'boolean', 'description': 'Whether token-pack purchasing is enabled.'}, 'message': {'type': 'string', 'description': 'Human-readable recovery guidance.'}, 'retryable': {'type': 'boolean', 'description': 'Whether the caller may retry after changing state or waiting.'}}, 'additionalProperties': True}
purchase_token_pack
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.
Acceso externo
Esquema de entrada
{'type': 'object', 'required': ['pack'], 'properties': {'pack': {'enum': ['10K', '50K', '200K'], 'type': 'string', 'description': 'Token pack tier'}}}
Esquema de salida
{'type': 'object', 'anyOf': [{'required': ['purchase_id', 'pack', 'tokens', 'amount_usd', 'currency', 'payment_url', 'expires_at']}, {'required': ['error', 'message']}], 'required': [], 'properties': {'pack': {'type': 'string', 'description': 'Token-pack tier label.'}, 'error': {'type': 'string', 'description': 'Machine-readable error code.'}, 'tokens': {'type': 'number', 'description': 'Tokens included in the pack.'}, 'details': {'type': 'object', 'description': 'Additional structured context from Pulse.', 'additionalProperties': True}, 'message': {'type': 'string', 'description': 'Human-readable recovery guidance.'}, 'currency': {'type': 'string', 'description': 'Checkout currency.'}, 'retryable': {'type': 'boolean', 'description': 'Whether the caller may retry after changing state or waiting.'}, 'amount_usd': {'type': 'number', 'description': 'Pack price in USD.'}, 'expires_at': {'type': 'string', 'description': 'ISO timestamp when the Checkout link expires.'}, 'payment_url': {'type': 'string', 'description': 'Stripe Checkout URL to present to the user.'}, 'purchase_id': {'type': 'string', 'description': 'Pulse token-pack purchase id.'}}, 'additionalProperties': True}
request_payment_link
Generate a one-time Stripe payment page for users without a Pulse account. Before calling, you MUST confirm with the user that they have a lawful basis to submit this audio for analysis; for a user-requested batch/folder/project, one confirmation can cover that scope. Present the payment_url to the user as a link. Analysis begins automatically after payment. Poll get_job_status with the returned job_id.
Acceso externo
Esquema de entrada
{'type': 'object', 'required': ['job_estimate_id', 'attestation_confirmed'], 'properties': {'job_estimate_id': {'type': 'string', 'description': 'The job_estimate_id returned by estimate_cost.'}, 'attestation_confirmed': {'type': 'boolean', 'description': 'Set 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.'}}}
Esquema de salida
{'type': 'object', 'anyOf': [{'required': ['payment_url', 'job_id', 'cost_display', 'charged_display', 'amount_charged_cents', 'amount_estimate_cents', 'expires_at']}, {'required': ['error', 'message']}], 'required': [], 'properties': {'error': {'type': 'string', 'description': 'Machine-readable error code.'}, 'job_id': {'type': 'string', 'description': 'Pulse job id for polling after payment.'}, 'deduped': {'type': 'boolean', 'description': 'True when an existing active Checkout link was reused.'}, 'details': {'type': 'object', 'description': 'Additional structured context from Pulse.', 'additionalProperties': True}, 'message': {'type': 'string', 'description': 'Human-readable recovery guidance.'}, 'retryable': {'type': 'boolean', 'description': 'Whether the caller may retry after changing state or waiting.'}, 'expires_at': {'type': 'string', 'description': 'ISO timestamp when the Checkout link expires.'}, 'payment_url': {'type': 'string', 'description': 'Stripe Checkout URL to present to the user.'}, 'cost_display': {'type': 'string', 'description': 'Human-readable estimated cost.'}, 'charged_display': {'type': 'string', 'description': 'Human-readable upfront Checkout charge.'}, 'amount_charged_cents': {'type': 'number', 'description': 'Stripe Checkout charge in cents.'}, 'amount_estimate_cents': {'type': 'number', 'description': 'Estimated usage value in cents.'}}, 'additionalProperties': True}
start_trial
Start a temporary, email-free Pulse trial. Returns a short-lived private API key with enough banked tokens for one short URL-based v1 analysis. No Stripe Checkout session is created. Store the key in the client or a trusted local environment; do not repost it in public logs, screenshots, GitHub issues, shared chats, or directory examples.
Acceso externo
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {}}
Esquema de salida
{'type': 'object', 'anyOf': [{'required': ['api_key', 'account_type', 'banked_tokens', 'expires_at', 'usage_note']}, {'required': ['error', 'message']}], 'required': [], 'properties': {'error': {'type': 'string', 'description': 'Machine-readable error code.'}, 'api_key': {'type': 'string', 'description': '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.'}, 'details': {'type': 'object', 'description': 'Additional structured context from Pulse.', 'additionalProperties': True}, 'message': {'type': 'string', 'description': 'Human-readable recovery guidance.'}, 'retryable': {'type': 'boolean', 'description': 'Whether the caller may retry after changing state or waiting.'}, 'expires_at': {'type': 'string', 'description': 'ISO timestamp when the temporary key expires.'}, 'usage_note': {'type': 'string', 'description': 'Limits and usage guidance for the trial.'}, 'account_type': {'enum': ['trial'], 'type': 'string', 'description': 'The account type created by this tool.'}, 'analyze_path': {'type': 'string', 'description': 'REST path for authenticated analysis.'}, 'upgrade_path': {'type': 'string', 'description': 'Path for converting to an account.'}, 'banked_tokens': {'type': 'number', 'description': 'Trial token balance granted.'}, 'estimate_path': {'type': 'string', 'description': 'REST path for free estimates.'}}, 'additionalProperties': True}
Añadido
purchase_token_pack
17 de September de 2026 a las 12:55
Añadido
list_token_packs
17 de September de 2026 a las 12:55
Añadido
get_token_balance
17 de September de 2026 a las 12:55
Añadido
get_job_status
17 de September de 2026 a las 12:55
Añadido
request_payment_link
17 de September de 2026 a las 12:55
Añadido
analyze_track
17 de September de 2026 a las 12:55
Añadido
estimate_cost
17 de September de 2026 a las 12:55
Añadido
start_trial
17 de September de 2026 a las 12:55