{"serverId":"mcp-registry/io.poolparty/main-stage-airtime","tools":[{"name":"browse_channels","fixed":{"name":"browse_channels","description":"Browse PoolParty channels with filters. Returns channel listings with visibility, program type, queue depth, submissions, unique submitters, reward summaries, and sponsor availability. Each result includes whyShown reasons. Use this to discover what channels exist and which accept submissions. Read-only. No auth required.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"limit":{"type":"number","description":"Max results (1-50). Defaults to 20."},"offset":{"type":"number","description":"Pagination offset. Defaults to 0."},"hasRewards":{"type":"boolean","description":"Filter to channels with active reward pools."},"visibility":{"enum":["public","unlisted","pilot","all"],"type":"string","description":"Filter by visibility. Defaults to showing public + unlisted."},"programType":{"type":"string","description":"Filter by public program mode ID (e.g., \"broadcast_loop\", \"video_queue\", \"screening_session\")."},"includeInternal":{"type":"boolean","description":"Include internal/test channels. Defaults to false."},"acceptsSubmissions":{"type":"boolean","description":"Filter to channels that accept community submissions."},"hasSponsorInventory":{"type":"boolean","description":"Filter to channels with sponsor/superblock inventory."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":380,"tokensAfter":380},{"name":"check_key_request_status","fixed":{"name":"check_key_request_status","description":"Check the status of a pilot key request. Returns pending, approved, or rejected with next steps. Does not recover raw API keys; auto-provisioned keys are shown only once in the original response. Public. No auth required.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["requestId"],"properties":{"requestId":{"type":"string","description":"The request ID returned by request_pilot_key."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":144,"tokensAfter":144},{"name":"complete_media_upload","fixed":{"name":"complete_media_upload","description":"Complete or check canonical media readiness after an upload. Requires API key with submit:block scope and a session token from create_join_session. Livepeer returns a canonical handoff only after playback id, browser media, and duration are ready. S3 direct returns only fallback_ready and should be treated as media-only fallback. Does not submit a block or mutate queue/runtime state.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["channelSlug","sessionToken"],"properties":{"duration":{"type":"number","description":"Positive media duration in seconds. Required for ready/fallback handoff."},"provider":{"enum":["s3_direct","livepeer"],"type":"string","description":"Media provider to complete. Omit with providerAssetId to infer livepeer; use s3_direct only for explicit fallback readiness."},"videoUrl":{"type":"string","description":"Browser-reachable media URL for s3_direct fallback readiness."},"playbackId":{"type":"string","description":"Known playback ID if already available."},"storageKey":{"type":"string","description":"S3 storage key for explicit s3_direct fallback readiness."},"channelSlug":{"type":"string","description":"The channel slug for the upload. Must be allowed by the API key."},"contentType":{"type":"string","description":"Media content type, if known."},"sessionToken":{"type":"string","description":"Session token from create_join_session. The session must already exist for this channel."},"thumbnailUrl":{"type":"string","description":"Browser-reachable thumbnail/poster URL, if known."},"providerAssetId":{"type":"string","description":"Livepeer asset ID returned by request_media_upload_url when provider=livepeer."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":496,"tokensAfter":496},{"name":"create_channel_from_template","fixed":{"name":"create_channel_from_template","description":"Create a new PoolParty channel from an approved starter blueprint. Requires API key with create:channel scope. Creates channel + program + starter blocks in ACTIVE_UNLISTED state. Channel is not publicly discoverable until admin promotes it. Use list_channel_templates and preview_channel_template first to choose a template. Rate-limited: 3 per hour per key.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["templateId","name"],"properties":{"name":{"type":"string","description":"Channel name (2+ characters)."},"slug":{"type":"string","description":"Channel slug (3-50 chars, lowercase alphanumeric with hyphens). Auto-generated from name if omitted."},"tags":{"type":"array","items":{"type":"string"},"description":"Channel tags for discovery."},"purpose":{"type":"string","description":"Plain-language purpose statement."},"templateId":{"type":"string","description":"Template ID (e.g., \"community_broadcast_loop\", \"event_lobby_screen\"). Use list_channel_templates to see available templates."},"description":{"type":"string","description":"Channel description. Defaults to template description."},"operatorDisplayName":{"type":"string","description":"Display name for the channel operator."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":371,"tokensAfter":371},{"name":"create_join_session","fixed":{"name":"create_join_session","description":"Create an anonymous participation session for a PoolParty channel. Returns a sessionToken for use with submit_media_block. Requires API key with submit:block scope. Session allows up to 3 anonymous submissions. Wallet is required for reward eligibility and reward claims, not for submission.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["channelSlug"],"properties":{"channelSlug":{"type":"string","description":"The channel slug to join (e.g., \"pp1\"). Must have participation enabled."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":172,"tokensAfter":172},{"name":"create_program_item","fixed":{"name":"create_program_item","description":"Promote a source candidate into the editable Program Queue. Requires write:program_queue scope and records an audit event.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["channelSlug","candidateId"],"properties":{"note":{"type":"string","description":"Rationale or programming note."},"bucket":{"type":"string","description":"Editorial bucket/context label."},"reason":{"type":"string","description":"Audit reason."},"position":{"type":"number","description":"Desired queue position. Defaults to the tail."},"candidateId":{"type":"string","description":"Candidate id from source discovery/staging."},"channelSlug":{"type":"string","description":"Channel slug, e.g. pp2."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":222,"tokensAfter":222},{"name":"get_airtime_opportunity","fixed":{"name":"get_airtime_opportunity","description":"Evaluate whether a PoolParty channel is a good airtime opportunity right now. Returns an opportunity score (0-1), recommendation (submit/watch/wait/avoid), queue competition level, reward availability, and transparent scoring reasons. Read-only. No auth required.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["channelSlug"],"properties":{"channelSlug":{"type":"string","description":"The channel slug (e.g., \"pp1\")."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":154,"tokensAfter":154},{"name":"get_block_economics","fixed":{"name":"get_block_economics","description":"Read PP0 block economics after pooling or airing. Returns current/final collateral support totals, pooled-position lifecycle counts, airing/resolution evidence, settlement path, reward-policy evidence, and explicit mock/local/amoy truth labels without promising rewards. Public read. No auth required.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["channelSlug","blockId"],"properties":{"blockId":{"type":"string","description":"Database block id to inspect."},"channelSlug":{"type":"string","description":"Channel slug or alias, e.g. \"main\", \"PP0\", or \"Main Stage\"."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":195,"tokensAfter":195},{"name":"get_block_mint_status","fixed":{"name":"get_block_mint_status","description":"Read canonical mint status for a PP0 media block. Reports not_started, prepared, pending, confirmed, or failed; includes on-chain id, tx intent status, poolEligibility, and next actions such as prepare_block_mint or finalize_block_mint. Public read. No auth required.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["channelSlug","blockId"],"properties":{"blockId":{"type":"string","description":"Database block id to inspect."},"channelSlug":{"type":"string","description":"Channel slug or alias, e.g. \"main\", \"PP0\", or \"Main Stage\"."},"walletAddress":{"type":"string","description":"Optional wallet address used to filter matching MINT intents."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":217,"tokensAfter":217},{"name":"get_block_type_schema","fixed":{"name":"get_block_type_schema","description":"Get detailed schema for a block type. Returns required/configurable fields, safe defaults, agent constraints, runtime behavior, and example usage. Read-only. No auth required.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["blockType"],"properties":{"blockType":{"type":"string","description":"Block type ID (e.g., \"community_slot\", \"sponsor_slot\", \"media\", \"notice\")."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":141,"tokensAfter":141},{"name":"get_channel_feed","fixed":{"name":"get_channel_feed","description":"Get rich recent airings and current queue evidence for a PoolParty channel. Returns aired blocks with title, media type, timestamps, proof-of-play status, and reward status. Also returns current queue positions with mintStatus and poolEligibility so agents can distinguish pre-mint, mint-pending, minted, pool-eligible, and ineligible blocks. get_channel_feed is a rich feed and may be large. Use it for diagnostic recent airing and queue evidence, mintStatus, poolEligibility, proof, and reward read","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["channelSlug"],"properties":{"limit":{"type":"number","description":"Max items per section (1-50). Defaults to 20."},"channelSlug":{"type":"string","description":"The channel slug (e.g., \"pp1\")."},"includePending":{"type":"boolean","description":"Include current queue entries. Defaults to true."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":270,"tokensAfter":270},{"name":"get_channel_metrics","fixed":{"name":"get_channel_metrics","description":"Get Channel Pulse v2 metrics for a PoolParty channel. Every metric carries a measurement status (measured, not_instrumented, not_applicable, insufficient_data, error) — no ambiguous nulls. Returns freshness info, queue depth, median time to air, blocks aired, submissions, unique submitters (new vs returning), reward pool status, reliability data, and known measurement gaps. Read-only. No auth required.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["channelSlug"],"properties":{"channelSlug":{"type":"string","description":"The channel slug (e.g., \"pp1\")."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":192,"tokensAfter":192},{"name":"get_channel_stream","fixed":{"name":"get_channel_stream","description":"Compact first-read current channel state for a PoolParty channel. Returns channel/session/intake status, now playing, queue summary, next few queue items, recent airing summary, reward campaign summary, available next actions, recommended drilldowns, and response truncation metadata. Prefer this before rich get_channel_feed. Read-only. No auth required.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["channelSlug"],"properties":{"limit":{"type":"number","description":"Max next queue items and recent airing rows to summarize (1-25). Defaults to 10."},"channelSlug":{"type":"string","description":"The channel slug or alias (e.g., \"main\", \"PP0\", or \"Main Stage\")."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":222,"tokensAfter":222},{"name":"get_collateral_opportunity","fixed":{"name":"get_collateral_opportunity","description":"Read the PP0 Main Stage collateralized block opportunity. Returns enablement, mode, Amoy testnet token facts, faucet availability, pool and wallet-state action names, withdrawal policy, eligibility, ranking policy, reward summary, and next actions. Public read. No auth required.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["channelSlug"],"properties":{"channelSlug":{"type":"string","description":"Channel slug or alias, e.g. \"main\", \"PP0\", or \"Main Stage\"."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":168,"tokensAfter":168},{"name":"get_distribution_report","fixed":{"name":"get_distribution_report","description":"Get a distribution report for a submitted media block or superblock reservation. Shows entry status, block state, queue position, reservation lifecycle, proof-of-play status, and Queue Block receipt agentStatusReadback when present. Provide entryId/blockId for community submissions, or entitlementId/purchaseId for superblock reservations. Read-only. No auth required.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"blockId":{"type":"string","description":"Block ID from submit_media_block response."},"entryId":{"type":"string","description":"Channel entry ID from submit_media_block response."},"purchaseId":{"type":"string","description":"Purchase ID (bytes32) from prepare_superblock_purchase response."},"channelSlug":{"type":"string","description":"Channel slug for additional context."},"entitlementId":{"type":"string","description":"Entitlement ID from prepare_superblock_purchase response."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":288,"tokensAfter":288},{"name":"get_key_info","fixed":{"name":"get_key_info","description":"Inspect the current MCP Bearer token without exposing the raw key. Returns redacted key id/fingerprint, scopes, allowed channel aliases, expiry, rate-limit tier, and next actions. Protected read. Requires auth, but no write scope.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":103,"tokensAfter":103},{"name":"get_open_submission_calls","fixed":{"name":"get_open_submission_calls","description":"Find channels accepting community submissions. Returns submission guidance, accepted media types, reward eligibility, queue depth, median time to air, and step-by-step submit instructions. Use this to decide where to submit content. Read-only. No auth required.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"channelSlug":{"type":"string","description":"Filter to a specific channel. Omit to see all open calls."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":153,"tokensAfter":153},{"name":"get_paid_action_receipt","fixed":{"name":"get_paid_action_receipt","description":"Get the stable agent-readable PoolParty receipt for a paid action intent. Requires API key with purchase:prepare scope. Receipts expose intent state, direct router transaction settlement, canonical receipt verification, entitlement or sponsor lifecycle, fulfillment state, and failure reason where available. Sponsor receipts omit private receipt fields such as receipt email and private memo.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["intentId"],"properties":{"intentId":{"type":"string","description":"Paid action intent ID returned by quote_superblock_reservation, prepare_superblock_purchase, or quote_sponsor_reservation."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":213,"tokensAfter":213},{"name":"get_platform_pulse","fixed":{"name":"get_platform_pulse","description":"Get a high-level summary of PoolParty platform activity. Returns active channels, blocks aired, submissions, and active reward campaigns. Read-only. No auth required.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":87,"tokensAfter":87},{"name":"get_pooling_receipt","fixed":{"name":"get_pooling_receipt","description":"Read a derived PP0 pooling receipt for a pool position. Returns wallet, block, amount, lifecycle state, rank/score impact where known, airing/resolution evidence, collateral returned/unlocked state, reward eligibility evidence, and explicit mock/local/amoy truth labels. Public read. No auth required.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["channelSlug","positionId"],"properties":{"positionId":{"type":"string","description":"Pool position id returned by pool_block, or a related STAKE_ADD/STAKE_WITHDRAW tx_intent id."},"channelSlug":{"type":"string","description":"Channel slug or alias, e.g. \"main\", \"PP0\", or \"Main Stage\"."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":214,"tokensAfter":214},{"name":"get_program_mode_manifest","fixed":{"name":"get_program_mode_manifest","description":"Get detailed manifest for a program mode. Returns supported block types, audience/operator/agent actions, economic options, limitations, and available templates. Read-only. No auth required.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["modeId"],"properties":{"modeId":{"type":"string","description":"Program mode ID (e.g., \"broadcast_loop\", \"video_queue\", \"screening_session\")."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":145,"tokensAfter":145},{"name":"get_reward_opportunities","fixed":{"name":"get_reward_opportunities","description":"Find channels with active reward pools. Returns reward amount per airing, pool remaining, claimed amount, eligibility rules, recent reward activity, and submission hints. Use this to find where submissions can earn rewards. Read-only. No auth required.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":113,"tokensAfter":113},{"name":"get_sim_signer_access","fixed":{"name":"get_sim_signer_access","description":"Read safe SIM signer availability for a local/dev PP0 economic rehearsal. Returns redacted wallet evidence, signer-ready aliases, chain id, stop reasons, and next economic read/actions without exposing full wallet addresses, private keys, mnemonics, or auth material. Public read. No auth required. Does not mutate state.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"simActorAlias":{"type":"string","description":"Optional configured SIM actor alias to inspect. Prefer aliases over raw wallet material."},"assignedWallet":{"type":"string","description":"Optional assigned wallet address to resolve back to a redacted configured SIM actor. Full addresses are not returned."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":224,"tokensAfter":224},{"name":"get_sponsor_opportunities","fixed":{"name":"get_sponsor_opportunities","description":"Find available sponsor and Superblock airtime inventory. Returns Superblock tiers with prices, durations, availability, and sponsor slots on channels with pricing and destination. Use this to find configured scarce-airtime reservations when offerings are active. Read-only. No auth required.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":124,"tokensAfter":124},{"name":"get_superblock_offerings","fixed":{"name":"get_superblock_offerings","description":"List available Superblock offerings with prices, durations, and current inventory. Superblocks reserve configured scarce airtime on PoolParty public screens when active offerings exist. They do not guarantee audience size or reward outcome. Read-only. No auth required.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":117,"tokensAfter":117},{"name":"get_wallet_pooling_state","fixed":{"name":"get_wallet_pooling_state","description":"Read a wallet PP0 pooling state. Returns active, locked, withdrawn, settled, voided, and error STAKE_ADD/STAKE_WITHDRAW positions, amounts, withdrawable policy, block context, rank context, test collateral balance availability, and receipt/economics next actions. Public read. No auth required.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["channelSlug","walletAddress"],"properties":{"channelSlug":{"type":"string","description":"Channel slug or alias, e.g. \"main\", \"PP0\", or \"Main Stage\"."},"walletAddress":{"type":"string","description":"Wallet address whose PP0 pooling state should be inspected."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":206,"tokensAfter":206},{"name":"insert_live_next","fixed":{"name":"insert_live_next","description":"Insert a Program Queue item at the front of the live queue. Requires write:live_queue scope and records an audit event.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["channelSlug","programItemId","reason"],"properties":{"reason":{"type":"string","description":"Audit reason for this live-facing insertion."},"channelSlug":{"type":"string","description":"Channel slug, e.g. pp2."},"programItemId":{"type":"string","description":"Program item id to insert next."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":163,"tokensAfter":163},{"name":"list_block_types","fixed":{"name":"list_block_types","description":"List PoolParty block types. Returns media, notice, qr_card, queue_status, community_slot, schedule_card, and sponsor_slot with descriptions and supported modes. Read-only. No auth required.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"modeId":{"type":"string","description":"Filter to block types supported by this program mode."},"includePlanned":{"type":"boolean","description":"Include planned block types. Defaults to false."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":155,"tokensAfter":155},{"name":"list_channel_templates","fixed":{"name":"list_channel_templates","description":"List available channel creation templates. Returns template names, program modes, use cases, and status. Channel creation is not yet available — use preview_channel_template to see what would be created. Read-only. No auth required.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"includePlanned":{"type":"boolean","description":"Include planned templates. Defaults to false."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":142,"tokensAfter":142},{"name":"list_live_queue","fixed":{"name":"list_live_queue","description":"Inspect the current live queue projection for a channel. Requires read:program_queue scope.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["channelSlug"],"properties":{"channelSlug":{"type":"string","description":"Channel slug, e.g. pp2."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":101,"tokensAfter":101},{"name":"list_program_modes","fixed":{"name":"list_program_modes","description":"List PoolParty program modes. Returns broadcast_loop, video_queue, and screening_session with descriptions, best-for use cases, and status. Read-only. No auth required.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"includePlanned":{"type":"boolean","description":"Include planned/preview modes. Defaults to false."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":124,"tokensAfter":124},{"name":"list_program_queue","fixed":{"name":"list_program_queue","description":"Inspect the editable Program Queue for a channel. Requires read:program_queue scope.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["channelSlug"],"properties":{"channelSlug":{"type":"string","description":"Channel slug, e.g. pp2."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":100,"tokensAfter":100},{"name":"list_programming_buckets","fixed":{"name":"list_programming_buckets","description":"Inspect persistent PP2 programming buckets grouped from Program Queue bucket labels, including unbucketed items. Requires read:program_queue scope.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["channelSlug"],"properties":{"channelSlug":{"type":"string","description":"Channel slug, e.g. pp2."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":119,"tokensAfter":119},{"name":"list_programming_candidates","fixed":{"name":"list_programming_candidates","description":"Inspect the PP2/Lazy River programming candidate inventory with source metadata, renderability, previews, and Program Queue links. Requires read:program_queue scope.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["channelSlug"],"properties":{"limit":{"type":"number","description":"Maximum candidates to inspect. Defaults to 100, capped at 250."},"statuses":{"type":"array","items":{"type":"string"},"description":"Optional candidate statuses to include, e.g. STAGED or ADMITTED."},"mediaTypes":{"type":"array","items":{"type":"string"},"description":"Optional media types or candidate kinds to include, e.g. video, card, slide_block, social_video."},"channelSlug":{"type":"string","description":"Channel slug, e.g. pp2."},"renderableOnly":{"type":"boolean","description":"When true, omit candidates without a supported render adapter."},"sourceNetworks":{"type":"array","items":{"type":"string"},"description":"Optional source networks to include, e.g. farcaster, nostr, youtube, slide_block."},"includeArchived":{"type":"boolean","description":"When true, include ARCHIVED candidates. Defaults to false."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":345,"tokensAfter":345},{"name":"list_programming_scope_profiles","fixed":{"name":"list_programming_scope_profiles","description":"List conservative channel programming scope profiles before requesting a pilot key. Public read. Profiles separate proposal, Program Queue write, publish, and live queue authority; none are auto-provisioned.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"channelSlug":{"type":"string","description":"Channel slug. Defaults to pp2."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":132,"tokensAfter":132},{"name":"preview_channel_template","fixed":{"name":"preview_channel_template","description":"Preview what a channel template would create. Returns starter blocks, submission policy, reward/sponsor posture, and a summary of the resulting channel. Channel creation is not yet available — this is a dry-run preview. Read-only. No auth required.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["templateId"],"properties":{"templateId":{"type":"string","description":"Template ID (e.g., \"community_broadcast_loop\", \"event_lobby_screen\", \"operator_loop\")."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":165,"tokensAfter":165},{"name":"preview_programming_candidate","fixed":{"name":"preview_programming_candidate","description":"Preview one PP2/Lazy River programming candidate before promoting it to the Program Queue. Requires read:program_queue scope.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["channelSlug","candidateId"],"properties":{"candidateId":{"type":"string","description":"Candidate id from list_programming_candidates or source discovery."},"channelSlug":{"type":"string","description":"Channel slug, e.g. pp2."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":150,"tokensAfter":150},{"name":"preview_slide_block","fixed":{"name":"preview_slide_block","description":"Validate and summarize a SlideBlock package before operator review. Returns a shareable previewUrl that humans can open to review the read-only slide sequence. Preview-only: normal moderation will be required before any future airing, and this does not submit, bypass moderation, mint, collateralize, or insert ProgramBlocks into the show. No auth required.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["package"],"properties":{"package":{"type":"object","required":["type","title","description","rightsConfirmation","claimCaveat","durationSeconds","background","slides","lifecycle"],"properties":{"type":{"type":"string","const":"slide_sequence"},"title":{"type":"string"},"slides":{"type":"array","items":{"type":"object","required":["durationSeconds","headline"],"properties":{"body":{"type":"string"},"code":{"type":"string"},"motion":{"enum":["fade","slow_push","slide_left","code_reveal","none"],"type":"string"},"headline":{"type":"string"},"durationSeconds":{"type":"number"}},"additionalProperties":false}},"lifecycle":{"type":"object","required":["submissionMode","moderationRequired","queueParityTarget","directSubmitSupported","economicsStatus","canonicalIdentityDecision"],"properties":{"submissionMode":{"type":"string","const":"draft_only_operator_review_v0"},"economicsStatus":{"type":"string","const":"not_economically_live_until_canonical_identity"},"queueParityTarget":{"type":"boolean"},"moderationRequired":{"type":"boolean","const":true},"directSubmitSupported":{"type":"boolean","const":false},"canonicalIdentityDecision":{"type":"string","const":"canonical_json_artifact_recommended_v0"}},"additionalProperties":false},"submitter":{"type":"object","properties":{"name":{"type":"string"},"contact":{"type":"string"}},"additionalProperties":false},"background":{"type":"object","required":["type"],"properties":{"url":{"type":"string"},"type":{"enum":["stock_video","stock_image","uploaded_image","uploaded_video","solid"],"type":"string"},"color":{"type":"string"},"assetId":{"type":"string"}},"additionalProperties":false},"claimCaveat":{"type":"string"},"description":{"type":"string"},"durationSeconds":{"type":"number"},"sourceProjectUrl":{"type":"string"},"rightsConfirmation":{"type":"boolean"}},"additionalProperties":false},"channelSettings":{"type":"object","properties":{"enabled":{"type":"boolean"},"maxSlides":{"type":"number"},"allowCodeSnippets":{"type":"boolean"},"maxDurationSeconds":{"type":"number"},"requireClaimCaveats":{"type":"boolean"},"allowedBackgroundTypes":{"type":"array","items":{"enum":["stock_video","stock_image","uploaded_image","uploaded_video","solid"],"type":"string"}},"minSlideDurationSeconds":{"type":"number"},"requireRightsConfirmation":{"type":"boolean"}},"description":"Optional channel SlideBlock constraints used for preview validation.","additionalProperties":false}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":824,"tokensAfter":824},{"name":"propose_program_order","fixed":{"name":"propose_program_order","description":"Suggest a Program Queue order without mutating anything. Requires propose:programming scope.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["channelSlug"],"properties":{"rationale":{"type":"string","description":"Agent rationale for the proposed order."},"channelSlug":{"type":"string","description":"Channel slug, e.g. pp2."},"programItemIds":{"type":"array","items":{"type":"string"},"description":"Optional proposed order. Defaults to source-score-informed order."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":166,"tokensAfter":166},{"name":"publish_program_queue","fixed":{"name":"publish_program_queue","description":"Publish Program Queue order to the live runtime queue. Requires publish:program_queue scope and records an audit event.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["channelSlug","reason"],"properties":{"mode":{"enum":["replace_live_queue","append","insert_after_current"],"type":"string","description":"Publish mode. Defaults to replace_live_queue."},"reason":{"type":"string","description":"Audit reason for this live-facing publish."},"channelSlug":{"type":"string","description":"Channel slug, e.g. pp2."},"programItemIds":{"type":"array","items":{"type":"string"},"description":"Optional subset of program item ids to publish. Defaults to all publishable items."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":222,"tokensAfter":222},{"name":"remove_live_queue_item","fixed":{"name":"remove_live_queue_item","description":"Remove an item from the live queue. Requires write:live_queue scope and records an audit event.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["channelSlug","liveQueueItemId","reason"],"properties":{"reason":{"type":"string","description":"Audit reason for removal."},"channelSlug":{"type":"string","description":"Channel slug, e.g. pp2."},"liveQueueItemId":{"type":"string","description":"Live queue item / channel entry id to remove."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":158,"tokensAfter":158},{"name":"request_media_upload_url","fixed":{"name":"request_media_upload_url","description":"Request a short-lived upload target for agent-native video upload. Requires API key with submit:block scope and a session token from create_join_session. Defaults to Livepeer canonical ingest; provider=s3_direct is an explicit media-only fallback. Livepeer uses TUS: create the upload with POST when needed, PATCH bytes to the returned Location URL, then call complete_media_upload before submit. Do not store signed URL query parameters or provider upload URLs in artifacts.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["channelSlug","sessionToken","contentType"],"properties":{"duration":{"type":"number","description":"Media duration in seconds, if known. Returned for handoff into submit_media_block."},"fileSize":{"type":"number","description":"File size in bytes. Max 100 MB."},"filename":{"type":"string","description":"Original filename. Used only to create a sanitized storage key."},"provider":{"enum":["livepeer","s3_direct"],"type":"string","description":"Upload provider. Omit for the default Livepeer canonical ingest path; use s3_direct only as an explicit media-only fallback."},"channelSlug":{"type":"string","description":"The channel slug to upload for. Must be allowed by the API key."},"contentType":{"type":"string","description":"Video MIME type. Allowed: video/mp4, video/webm, video/quicktime, video/x-m4v."},"sessionToken":{"type":"string","description":"Session token from create_join_session. The session must already exist for this channel."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":446,"tokensAfter":446},{"name":"resolve_channel","fixed":{"name":"resolve_channel","description":"Resolve a human channel name or alias to the canonical PoolParty channel slug. PP0, Main Stage, and main resolve to \"main\"; PP1 resolves to \"pp1\". Read-only. No auth required.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["channel"],"properties":{"channel":{"type":"string","description":"Channel name, slug, or alias, e.g. \"PP0\", \"Main Stage\", \"main\", or \"PP1\"."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":139,"tokensAfter":139},{"name":"set_programming_bucket","fixed":{"name":"set_programming_bucket","description":"Set or clear the persistent editorial bucket label for an existing Program Queue item. Requires write:program_queue scope and records an audit event; does not mutate the live queue.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["channelSlug","programItemId"],"properties":{"bucket":{"type":"string","description":"Editorial bucket label. Omit or pass an empty string to clear the bucket."},"reason":{"type":"string","description":"Audit reason for this bucket update."},"channelSlug":{"type":"string","description":"Channel slug, e.g. pp2."},"programItemId":{"type":"string","description":"Program item id to bucket or unbucket."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":212,"tokensAfter":212},{"name":"settle_paid_action","fixed":{"name":"settle_paid_action","description":"Settle a paid-action reservation after the bound wallet or agent has submitted the required direct PoolParty router transaction. Requires API key with purchase:prepare scope. SuperBlocks require SuperblockPurchaseRouter.purchase(...); sponsor slots require SponsorPaymentRouter.paySponsorBlock(...). PoolParty verifies the tx hash, router event, wallet, chain, token, amount, product id/binding, and metadata/content binding before fulfillment. Facilitator token transfers and plain treasury transfer","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["intentId","txHash"],"properties":{"txHash":{"type":"string","description":"Direct PoolParty router transaction hash. Plain ERC-20 transfers are not valid production settlement."},"intentId":{"type":"string","description":"Paid action intent ID returned by prepare_superblock_purchase or quote_sponsor_reservation with reserve=true."},"entitlementId":{"type":"string","description":"Optional SuperBlock entitlement ID expected to be bound to the paid action intent. Not used for sponsor slots."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":325,"tokensAfter":325},{"name":"simulate_program_queue_publish","fixed":{"name":"simulate_program_queue_publish","description":"Dry-run a PP2 Program Queue publish before mutating the live queue. Shows selected items, blockers, archive effects, planned materialization, and audit preview. Requires read:program_queue scope.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["channelSlug"],"properties":{"mode":{"enum":["replace_live_queue","append","insert_after_current"],"type":"string","description":"Publish mode to simulate. Defaults to replace_live_queue."},"reason":{"type":"string","description":"Optional reason that would be carried into the publish audit preview."},"channelSlug":{"type":"string","description":"Channel slug, e.g. pp2."},"programItemIds":{"type":"array","items":{"type":"string"},"description":"Optional subset of program item ids to simulate. Defaults to all publishable items."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":254,"tokensAfter":254},{"name":"submit_media_block","fixed":{"name":"submit_media_block","description":"Submit a media block to a PoolParty channel community queue. Requires API key with submit:block scope. Requires a session token from create_join_session. Optional canonicalMediaHandoff from complete_media_upload is validated against scalar media fields before DB access. Raw YouTube URLs are accepted as free, non-economic embed blocks; Livepeer remains the canonical upload path for mint/pool/reward eligibility. Response includes media provider/readiness, mintStatus, poolEligibility, nextAction, F","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["channelSlug","sessionToken","videoUrl"],"properties":{"title":{"type":"string","description":"Title for the media block. Defaults to \"Untitled\"."},"duration":{"type":"number","description":"Duration in seconds. Defaults to 15."},"videoUrl":{"type":"string","description":"HTTPS URL of the video to submit. Accepts mp4, webm, mov, m3u8, Livepeer/Mux CDN, or a YouTube watch/short/embed URL. YouTube submits as a free non-economic embed block."},"playbackId":{"type":"string","description":"Livepeer/Mux playback ID if available."},"channelSlug":{"type":"string","description":"The channel slug to submit to. Must have participation enabled."},"sessionToken":{"type":"string","description":"Session token from create_join_session."},"thumbnailUrl":{"type":"string","description":"Thumbnail image URL for the media block."},"idempotencyKey":{"type":"string","description":"Client-provided idempotency key. Same channel + media + session + key returns existing entry. Omit to auto-generate (non-idempotent)."},"canonicalMediaHandoff":{"description":"Optional canonical media handoff object returned by complete_media_upload. When present, it must match videoUrl, playbackId, thumbnailUrl, and duration before any DB access.","type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"schema","detail":"Added \"type\":\"string\" to untyped parameters: canonicalMediaHandoff. Change to number/boolean/array where that's what you accept.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":527,"tokensAfter":532},{"name":"update_channel_settings","fixed":{"name":"update_channel_settings","description":"Update a channel's name, description, purpose, tags, or operator display name. Requires API key with configure:channel scope and the target channel in allowedChannels. Does not allow status/visibility promotion, program type changes, or economic configuration.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["channelSlug"],"properties":{"name":{"type":"string","description":"New channel name (2-100 chars). Empty string = no change."},"tags":{"type":"array","items":{"type":"string"},"description":"Channel tags (max 10 tags, each max 30 chars). Replaces existing tags."},"purpose":{"type":"string","description":"Plain-language purpose statement (max 300 chars). Empty string = no change."},"channelSlug":{"type":"string","description":"The channel slug to update."},"description":{"type":"string","description":"New description (max 500 chars). Empty string = no change."},"operatorDisplayName":{"type":"string","description":"Operator display name (max 50 chars). Empty string = no change."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":313,"tokensAfter":313}],"toolsChanged":48,"tokensSaved":0,"todo":[{"tool":"preview_slide_block","params":["package"]},{"tool":"revise_slide_block","params":["package"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}