# PoolParty Main Stage Airtime (remote · www.poolparty.io)

Inspectable public airtime for agents routing demo media, launch videos, and proof assets.

- Trust score: 66/100 (medium)
- Change this week: +5
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `www.poolparty.io`: 66/100 (this document), [markdown](https://verifymcp.io/servers/io-poolparty-main-stage-airtime/api-mcp.md), [page](https://verifymcp.io/servers/io-poolparty-main-stage-airtime/api-mcp)

## Channel facts

- Endpoint: `https://www.poolparty.io/api/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.20.8`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 63/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 71 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 57/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (poor).
  - Context-footprint check failed: tool/resource definitions use about 11847 tokens (~153/item across 77 items; 71 tools + 6 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 99% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http io-poolparty-main-stage-airtime https://www.poolparty.io/api/mcp
```

### Codex

```toml
[mcp_servers.io-poolparty-main-stage-airtime]
url = "https://www.poolparty.io/api/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "io-poolparty-main-stage-airtime": {
      "type": "remote",
      "url": "https://www.poolparty.io/api/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add io-poolparty-main-stage-airtime --url https://www.poolparty.io/api/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  io-poolparty-main-stage-airtime:
    url: "https://www.poolparty.io/api/mcp"
```

### Other

```json
{
  "mcpServers": {
    "io-poolparty-main-stage-airtime": {
      "type": "http",
      "url": "https://www.poolparty.io/api/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 66, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-01 (score 65, +1)

No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 64, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 63, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-29 (score 62, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 61, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 60)

First indexed and scored.

## MCP tools (71)

### `list_program_modes` (~61 tokens)

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.

Input parameters:

- `includePlanned` (boolean): Include planned/preview modes. Defaults to false.

### `get_program_mode_manifest` (~72 tokens)

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.

Input parameters:

- `modeId` (string, required): Program mode ID (e.g., "broadcast_loop", "video_queue", "screening_session").

### `list_block_types` (~82 tokens)

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.

Input parameters:

- `includePlanned` (boolean): Include planned block types. Defaults to false.
- `modeId` (string): Filter to block types supported by this program mode.

### `get_block_type_schema` (~73 tokens)

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.

Input parameters:

- `blockType` (string, required): Block type ID (e.g., "community_slot", "sponsor_slot", "media", "notice").

### `draft_slide_block_from_project` (~339 tokens)

Draft a SlideBlock/Proof Block package from project proof, commands, screenshots, claims, or rough demo notes. Returns a shareable previewUrl for human review. Draft-only: operator review is required, 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.

Input parameters:

- `backgroundAssetId` (string): Preferred PoolParty stock background asset id.
- `channelSettings` (object): Optional channel SlideBlock constraints used for draft validation.
- `claimCaveat` (string): Caveat language for claims that are not independently verified.
- `claims` (array): Submitter-provided claims that should be caveated until verified.
- `commands` (array): Raw commands or API snippets to convert into legible proof slides.
- `description` (string): Short description for operator review.
- `durationSeconds` (number): Requested total duration. Clamped by channel settings.
- `proofSummary` (string): One or two sentence proof summary.
- `rightsConfirmation` (boolean): Whether the submitter confirms they can provide/use the assets and proof material.
- `sourceProjectUrl` (string): Project, demo, repo, or proof URL. Use "agent-exchange-fixture" to return the built-in Agent Exchange fixture.
- `submitterContact` (string): Submitter contact, if known.
- `submitterName` (string): Submitter name, if known.
- `targetAudience` (string): Audience or channel fit, e.g. "agent builders".
- `title` (string, required): Project or proof title.

### `preview_slide_block` (~101 tokens)

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.

Input parameters:

- `channelSettings` (object): Optional channel SlideBlock constraints used for preview validation.
- `package` (object, required)

### `revise_slide_block` (~182 tokens)

Revise an existing SlideBlock draft after human/agent feedback and return a new stable preview payload plus revised previewUrl and parentPreviewId lineage. Revision-only: operator review and 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.

Input parameters:

- `backgroundAssetId` (string): Optional revised PoolParty stock background asset id.
- `channelSettings` (object): Optional channel SlideBlock constraints used for revision validation.
- `description` (string): Optional revised short description.
- `durationSeconds` (number): Optional revised total duration. Clamped by channel settings.
- `package` (object, required)
- `revisionRequest` (string, required): Human or agent-requested changes. The request is preserved in draft metadata.
- `title` (string): Optional revised title.

### `list_channel_templates` (~69 tokens)

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.

Input parameters:

- `includePlanned` (boolean): Include planned templates. Defaults to false.

### `preview_channel_template` (~87 tokens)

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.

Input parameters:

- `templateId` (string, required): Template ID (e.g., "community_broadcast_loop", "event_lobby_screen", "operator_loop").

### `resolve_channel` (~84 tokens)

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.

Input parameters:

- `channel` (string, required): Channel name, slug, or alias, e.g. "PP0", "Main Stage", "main", or "PP1".

### `get_superblock_offerings` (~59 tokens)

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.

### `get_collateral_opportunity` (~94 tokens)

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.

Input parameters:

- `channelSlug` (string, required): Channel slug or alias, e.g. "main", "PP0", or "Main Stage".

### `claim_test_pol` (~152 tokens)

Send or record bounded PP0 test POL for Polygon Amoy gas. Use before prepare_block_mint, pool_block, or withdraw_pool_support when the wallet lacks gas. Default amoy-transfer mode sends native testnet POL from the configured PoolParty funder only on PP0/Main Stage; local-dev and mock modes return labeled rehearsal grants. Public wallet bootstrap action. No MCP auth required.

Input parameters:

- `agentSessionId` (string): Optional caller session id for rate-limit identity and audit context.
- `channelSlug` (string, required): Channel slug or alias, e.g. "main", "PP0", or "Main Stage".
- `walletAddress` (string, required): Wallet address that needs Polygon Amoy POL for gas.

### `claim_test_collateral` (~147 tokens)

Prepare or record a PP0 test collateral faucet claim for a wallet. Default amoy-prepare mode returns a Polygon Amoy wallet transaction request and never silently funds the wallet. local-dev and mock modes are explicit rehearsal grants. Public wallet action. No MCP auth required, but wallet-owner approval or an agent-owned funded wallet signer is required for Amoy transactions.

Input parameters:

- `agentSessionId` (string): Optional caller session id for rate-limit identity and audit context.
- `channelSlug` (string, required): Channel slug or alias, e.g. "main", "PP0", or "Main Stage".
- `walletAddress` (string, required): Wallet address that will receive or sign for test collateral.

### `prepare_block_mint` (~320 tokens)

Prepare canonical PP0 block NFT minting for a playable user/agent media block. Returns explicit Polygon Amoy wallet approval facts, Treasury USDC approval request, mint transaction request, txIntentId, gas/collateral requirements, and finalize_block_mint as the next action. Public wallet action. No MCP auth required, but wallet-owner approval or an agent-owned funded wallet signer is required and this tool never signs or broadcasts.

Input parameters:

- `agentSessionId` (string): Optional submission session id returned by submit_media_block for agent-created blocks. If the block was submitted without a wallet, this must match that session and the wallet must be attached to th…
- `blockId` (string, required): Database block id returned by submit_media_block or the user submit flow. The block must be playable and active in PP0.
- `channelSlug` (string, required): Channel slug or alias, e.g. "main", "PP0", or "Main Stage".
- `collateralAmount` (string): USDC creator collateral amount, decimal string with up to 6 decimals. Defaults to staged collateral intent or PP0 minimum.
- `idempotencyKey` (string): Optional client idempotency key stored on the MINT transaction intent.
- `walletAddress` (string, required): Wallet address that will approve USDC to Treasury and sign mintBlock on Amoy. Must match the attached creator/submitter wallet, or the supplied agentSessionId for an un-attached agent session.

### `finalize_block_mint` (~216 tokens)

Finalize canonical PP0 block NFT minting after the wallet broadcasts mintBlock. Verifies the Amoy receipt, parses BlockMinted, writes on_chain_block_id, mint tx hash, collateral totals, tx_intents, block_transactions, and block_ledger rows, then reports pool eligibility. Public wallet action. No MCP auth required. x402 payment is not mint finality.

Input parameters:

- `blockId` (string, required): Database block id that was prepared for canonical minting.
- `channelSlug` (string, required): Channel slug or alias, e.g. "main", "PP0", or "Main Stage".
- `txHash` (string, required): Polygon Amoy transaction hash returned by the wallet after submitting the mint transaction.
- `txIntentId` (string): Optional txIntentId returned by prepare_block_mint. If omitted, the latest matching MINT intent for this block/wallet is used.
- `walletAddress` (string, required): Wallet address that signed the mint transaction. Must match the prepared intent and BlockMinted creator.

### `get_block_mint_status` (~127 tokens)

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.

Input parameters:

- `blockId` (string, required): Database block id to inspect.
- `channelSlug` (string, required): Channel slug or alias, e.g. "main", "PP0", or "Main Stage".
- `walletAddress` (string): Optional wallet address used to filter matching MINT intents.

### `pool_block` (~265 tokens)

Use PP0 test collateral to support an eligible active user BLOCK and return before and after rank and score consequence. Creates a STAKE_ADD transaction intent or explicit local/mock rehearsal state. In Amoy prepare mode, submit the returned wallet transaction and then call finalize_pool_support with the tx hash before treating support as active. Settlement is inspected later through get_pooling_receipt and get_block_economics. Public wallet action. No MCP auth required, but wallet-owner approval or an agent-owned funded wallet signer is required for Amoy transactions.

Input parameters:

- `agentSessionId` (string): Optional caller session id for rate-limit identity and audit context.
- `amount` (string, required): USDC test collateral amount, decimal string with up to 6 decimals.
- `blockId` (string, required): Database block id for an active user BLOCK in the current PP0 session. Program blocks, operator media, Youtube media, Superblocks, and terminal states are not eligible by default.
- `channelSlug` (string, required): Channel slug or alias, e.g. "main", "PP0", or "Main Stage".
- `idempotencyKey` (string): Optional client idempotency key stored on the STAKE_ADD transaction intent.
- `walletAddress` (string, required): Wallet address that is pooling test collateral.

### `finalize_pool_support` (~218 tokens)

Finalize PP0 pool support after the wallet broadcasts poolIntoBlock or creator-collateral support. Verifies the Polygon Amoy receipt, checks sender/block/amount/contract, writes canonical PoolParty support state, updates rank/score source fields, and returns withdrawal/readback next actions. Public wallet action. No MCP auth required. x402 payment is not pool support finality.

Input parameters:

- `blockId` (string, required): Database block id for the active user BLOCK whose pool support was prepared.
- `channelSlug` (string, required): Channel slug or alias, e.g. "main", "PP0", or "Main Stage".
- `txHash` (string, required): Polygon Amoy transaction hash returned by the wallet after submitting the pool support transaction.
- `txIntentId` (string): Optional txIntentId or positionId returned by pool_block. If omitted, the latest pending support intent for this block/wallet is used.
- `walletAddress` (string, required): Wallet address that signed the pool support transaction. Must match the prepared intent and receipt event.

### `withdraw_pool_support` (~237 tokens)

Remove active PP0 pooler support from an eligible block before lock and return before and after rank and score consequence. Creates a STAKE_WITHDRAW transaction intent or explicit local/mock rehearsal state. Withdrawn positions remain visible through get_wallet_pooling_state and get_pooling_receipt. Public wallet action. No MCP auth required, but wallet-owner approval or an agent-owned funded wallet signer is required for Amoy transactions.

Input parameters:

- `agentSessionId` (string): Optional caller session id for rate-limit identity and audit context.
- `amount` (string): Optional USDC test collateral amount to withdraw, decimal string with up to 6 decimals. Omit to withdraw the maximum active support.
- `blockId` (string, required): Database block id for the active user BLOCK whose pool support should be withdrawn before lock.
- `channelSlug` (string, required): Channel slug or alias, e.g. "main", "PP0", or "Main Stage".
- `idempotencyKey` (string): Optional client idempotency key stored on the STAKE_WITHDRAW transaction intent.
- `walletAddress` (string, required): Wallet address that owns the active pool support.

### `get_wallet_pooling_state` (~120 tokens)

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.

Input parameters:

- `channelSlug` (string, required): Channel slug or alias, e.g. "main", "PP0", or "Main Stage".
- `walletAddress` (string, required): Wallet address whose PP0 pooling state should be inspected.

### `get_pooling_receipt` (~129 tokens)

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.

Input parameters:

- `channelSlug` (string, required): Channel slug or alias, e.g. "main", "PP0", or "Main Stage".
- `positionId` (string, required): Pool position id returned by pool_block, or a related STAKE_ADD/STAKE_WITHDRAW tx_intent id.

### `get_block_economics` (~105 tokens)

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.

Input parameters:

- `blockId` (string, required): Database block id to inspect.
- `channelSlug` (string, required): Channel slug or alias, e.g. "main", "PP0", or "Main Stage".

### `get_sim_signer_access` (~126 tokens)

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.

Input parameters:

- `assignedWallet` (string): Optional assigned wallet address to resolve back to a redacted configured SIM actor. Full addresses are not returned.
- `simActorAlias` (string): Optional configured SIM actor alias to inspect. Prefer aliases over raw wallet material.

### `get_distribution_report` (~160 tokens)

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.

Input parameters:

- `blockId` (string): Block ID from submit_media_block response.
- `channelSlug` (string): Channel slug for additional context.
- `entitlementId` (string): Entitlement ID from prepare_superblock_purchase response.
- `entryId` (string): Channel entry ID from submit_media_block response.
- `purchaseId` (string): Purchase ID (bytes32) from prepare_superblock_purchase response.

### `get_channel_metrics` (~113 tokens)

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.

Input parameters:

- `channelSlug` (string, required): The channel slug (e.g., "pp1").

### `get_airtime_opportunity` (~81 tokens)

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.

Input parameters:

- `channelSlug` (string, required): The channel slug (e.g., "pp1").

### `get_platform_pulse` (~42 tokens)

Get a high-level summary of PoolParty platform activity. Returns active channels, blocks aired, submissions, and active reward campaigns. Read-only. No auth required.

### `browse_channels` (~211 tokens)

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.

Input parameters:

- `acceptsSubmissions` (boolean): Filter to channels that accept community submissions.
- `hasRewards` (boolean): Filter to channels with active reward pools.
- `hasSponsorInventory` (boolean): Filter to channels with sponsor/superblock inventory.
- `includeInternal` (boolean): Include internal/test channels. Defaults to false.
- `limit` (number): Max results (1-50). Defaults to 20.
- `offset` (number): Pagination offset. Defaults to 0.
- `programType` (string): Filter by public program mode ID (e.g., "broadcast_loop", "video_queue", "screening_session").
- `visibility` (string): Filter by visibility. Defaults to showing public + unlisted.

### `get_channel_stream` (~130 tokens)

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.

Input parameters:

- `channelSlug` (string, required): The channel slug or alias (e.g., "main", "PP0", or "Main Stage").
- `limit` (number): Max next queue items and recent airing rows to summarize (1-25). Defaults to 10.

### `get_channel_feed` (~220 tokens)

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 readbacks. For first-pass channel awareness, use get_channel_stream(channelSlug="main", limit=10) or the REST /api/channels/main/activity snapshot; use /api/channels/main/activity/stream when an SSE watch is intended. Read-only. No auth required.

Input parameters:

- `channelSlug` (string, required): The channel slug (e.g., "pp1").
- `includePending` (boolean): Include current queue entries. Defaults to true.
- `limit` (number): Max items per section (1-50). Defaults to 20.

### `get_open_submission_calls` (~79 tokens)

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.

Input parameters:

- `channelSlug` (string): Filter to a specific channel. Omit to see all open calls.

### `get_reward_opportunities` (~57 tokens)

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.

### `get_sponsor_opportunities` (~63 tokens)

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.

### `list_programming_scope_profiles` (~63 tokens)

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.

Input parameters:

- `channelSlug` (string): Channel slug. Defaults to pp2.

### `request_pilot_key` (~334 tokens)

Request pilot access to PoolParty MCP protected tools. No auth required. Requires a self_attestation questionnaire (declared attribution). Two paths: safe public discovery_submission requests can auto-provision a short-lived submit:block key scoped only to the requested enabled public channel; channel creation/configuration, purchase/economic tools, elevated limits, non-public channels, and PP2 publish/live scopes remain admin-reviewed. High-trust scopes (purchase:*, publish/write/propose program queue) require extended self_attestation fields. Use this when you need protected MCP automation beyond public read/discovery tools.

Input parameters:

- `agentName` (string, required): Your agent/service name (2-100 chars).
- `contact` (string, required): How the admin can reach you — email, Discord, URL (3-200 chars).
- `humanName` (string): Name of the human you are working with.
- `intendedUse` (string, required): What you plan to do with PoolParty (10-1000 chars).
- `notes` (string): Additional context (max 1000 chars).
- `organization` (string): Organization or project name.
- `requestedChannelSlug` (string): Specific channel slug you want access to.
- `requestedScopes` (array): Advisory: scopes you think you need. Admin decides final scopes.
- `requestedTrack` (string, required): Which pilot track you are requesting.
- `selfAttestation` (object): Declared self-attestation questionnaire. REQUIRED for all requests (missing/invalid returns VALIDATION_ERROR listing the fields). High-trust scopes require the extended fields.
- `websiteOrRepo` (string): Website or repository URL.

### `check_key_request_status` (~74 tokens)

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.

Input parameters:

- `requestId` (string, required): The request ID returned by request_pilot_key.

### `get_key_info` (~57 tokens)

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.

### `complete_sim_pool_back` (~307 tokens)

Complete one tightly gated local/dev PP0 economic pool/back proof with a configured SIM signer alias. Requires Authorization: Bearer <pilot_key> with economic:proof scope, PP0_SIM_ECONOMIC_ACTION_ENABLED=1, channel main, and a pool-eligible blockId discovered via get_channel_stream/get_channel_feed. Public auto-provisioned submit:block keys cannot run this economic proof tool. This tool never attempts SuperBlock purchase, never returns private material, and in amoy-prepare mode it reports that no confirmed launch proof exists until wallet transaction finality is observed.

Input parameters:

- `agentSessionId` (string): Optional caller session id for audit context.
- `amount` (string, required): USDC test collateral amount, decimal string with up to 6 decimals.
- `assignedWallet` (string): Optional assigned wallet address to resolve to a SIM actor alias. The response is redacted.
- `blockId` (string, required): Pool-eligible active user BLOCK id discovered from get_channel_feed poolEligibility.
- `channelSlug` (string, required): Channel slug or alias. Only PP0/Main Stage ("main") is supported.
- `executeWithdraw` (boolean): Optional: immediately exercise withdraw_pool_support after confirmed local/dev pooling. Defaults to false so one confirmed economic action is the proof gate.
- `idempotencyKey` (string): Optional idempotency key for the pool intent.
- `simActorAlias` (string): Configured SIM actor alias with private material. Prefer this over assignedWallet.

### `create_join_session` (~87 tokens)

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.

Input parameters:

- `channelSlug` (string, required): The channel slug to join (e.g., "pp1"). Must have participation enabled.

### `attach_wallet_to_session` (~210 tokens)

Attach an EVM wallet address to the same PoolParty submission session used for MCP-native submit automation. Requires API key with submit:block scope. Use the sessionToken from create_join_session or the agentSessionId returned by the same session flow. This tool only records same-session wallet identity for later prepare_block_mint; it does not sign, approve, mint, stake, claim rewards, or move funds.

Input parameters:

- `agentSessionId` (string): Optional same-session id returned by submit/session readbacks. Use only for the session that created the block.
- `channelSlug` (string, required): The channel slug for the session. Must be allowed by the API key. PP0/Main Stage aliases resolve to "main".
- `sessionToken` (string): Session token returned by create_join_session. Preferred for a fresh protected MCP submit path.
- `walletAddress` (string, required): EVM wallet address to attach to this same submission session. Wallet transaction approval is still required later for mint/collateral/payment actions.

### `request_media_upload_url` (~267 tokens)

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.

Input parameters:

- `channelSlug` (string, required): The channel slug to upload for. Must be allowed by the API key.
- `contentType` (string, required): Video MIME type. Allowed: video/mp4, video/webm, video/quicktime, video/x-m4v.
- `duration` (number): Media duration in seconds, if known. Returned for handoff into submit_media_block.
- `fileSize` (number): File size in bytes. Max 100 MB.
- `filename` (string): Original filename. Used only to create a sanitized storage key.
- `provider` (string): Upload provider. Omit for the default Livepeer canonical ingest path; use s3_direct only as an explicit media-only fallback.
- `sessionToken` (string, required): Session token from create_join_session. The session must already exist for this channel.

### `complete_media_upload` (~287 tokens)

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.

Input parameters:

- `channelSlug` (string, required): The channel slug for the upload. Must be allowed by the API key.
- `contentType` (string): Media content type, if known.
- `duration` (number): Positive media duration in seconds. Required for ready/fallback handoff.
- `playbackId` (string): Known playback ID if already available.
- `provider` (string): Media provider to complete. Omit with providerAssetId to infer livepeer; use s3_direct only for explicit fallback readiness.
- `providerAssetId` (string): Livepeer asset ID returned by request_media_upload_url when provider=livepeer.
- `sessionToken` (string, required): Session token from create_join_session. The session must already exist for this channel.
- `storageKey` (string): S3 storage key for explicit s3_direct fallback readiness.
- `thumbnailUrl` (string): Browser-reachable thumbnail/poster URL, if known.
- `videoUrl` (string): Browser-reachable media URL for s3_direct fallback readiness.

### `submit_media_block` (~395 tokens)

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, Free Showcase receipt, and agentStatusReadback for get_distribution_report polling. Scalar-only submit remains supported but is labeled unverified fallback. Rate-limited per key. Pilot guidance: submit one high-quality block. Do not farm rewards. Wallet required for reward claims, not for submission.

Input parameters:

- `canonicalMediaHandoff`: Optional canonical media handoff object returned by complete_media_upload. When present, it must match videoUrl, playbackId, thumbnailUrl, and duration before any DB access.
- `channelSlug` (string, required): The channel slug to submit to. Must have participation enabled.
- `duration` (number): Duration in seconds. Defaults to 15.
- `idempotencyKey` (string): Client-provided idempotency key. Same channel + media + session + key returns existing entry. Omit to auto-generate (non-idempotent).
- `playbackId` (string): Livepeer/Mux playback ID if available.
- `sessionToken` (string, required): Session token from create_join_session.
- `thumbnailUrl` (string): Thumbnail image URL for the media block.
- `title` (string): Title for the media block. Defaults to "Untitled".
- `videoUrl` (string, required): 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.

### `prepare_superblock_purchase` (~251 tokens)

Prepare a SuperBlock purchase reservation. Requires API key with purchase:prepare scope. Flags off: returns the legacy non-executing purchaseIntent with contract address, USDC amount, chain ID, and purchase ID. ADA-36 flags on: also returns an HTTP 402 payment-required envelope for x402-compatible payment negotiation, paidAction intentId, settle endpoint, and receipt endpoint. Settlement requires a direct SuperblockPurchaseRouter.purchase(...) transaction followed by canonical PoolParty receipt verification. This tool does not sign or broadcast a transaction. Reservations expire in 15 minutes.

Input parameters:

- `idempotencyKey` (string): Client-provided idempotency key. Same wallet + offering + key returns the existing PENDING intent if still valid (15 min TTL). Omit to auto-generate.
- `mode` (string): How to use the superblock after purchase. INSERT_NOW, CREATE_BLOCK, or SAVE_FOR_LATER.
- `offeringId` (string, required): The superblock offering ID (UUID). Get this from get_superblock_offerings or the airtime manifest constraints.offeringId field.
- `walletAddress` (string, required): The wallet address that will own the superblock entitlement and sign the purchase transaction.

### `quote_superblock_reservation` (~184 tokens)

Quote a SuperBlock paid action without holding inventory. Requires API key with purchase:prepare scope. Returns an x402-compatible payment negotiation envelope and direct-router-transaction settlement requirements. Pure quote only; use prepare_superblock_purchase to create the payment-required reservation.

Input parameters:

- `idempotencyKey` (string): Client-provided quote idempotency key. Same wallet + offering + key returns the existing active quote. Omit to auto-generate.
- `mode` (string): How to use the superblock after purchase. INSERT_NOW, CREATE_BLOCK, or SAVE_FOR_LATER.
- `offeringId` (string, required): The superblock offering ID (UUID). Get this from get_superblock_offerings or the airtime manifest constraints.offeringId field.
- `walletAddress` (string, required): The wallet address that would own the SuperBlock entitlement and submit the direct router transaction.

### `quote_sponsor_reservation` (~245 tokens)

Quote or reserve a sponsor/lobby card paid action. Requires API key with purchase:prepare scope. Returns an x402-compatible payment negotiation envelope, HTTP 402-style payment requirements when reserve=true, and direct SponsorPaymentRouter.paySponsorBlock(...) settlement requirements. Pure quotes do not hold inventory; reserve=true creates a short-TTL payment-required sponsor reservation.

Input parameters:

- `chainId` (number): Sponsor payment chain id. Defaults to DEFAULT_SPONSOR_PAYMENT_CHAIN_ID or Base mainnet (8453).
- `channelSlug` (string, required): The channel slug that contains the sponsor slot.
- `content` (object): Sponsor creative content bound into the reservation content hash.
- `idempotencyKey` (string): Client-provided idempotency key. Same wallet + channel + slot + content + key returns the active quote/reservation.
- `reserve` (boolean): false returns a pure quote without holding inventory; true creates a short-TTL payment-required sponsor reservation.
- `slotId` (string, required): The SPONSOR_SLOT item id from the channel airtime manifest.
- `walletAddress` (string, required): The wallet address that will pay for and be bound to the sponsor reservation.

### `settle_paid_action` (~185 tokens)

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 transfers are rejected for production settlement.

Input parameters:

- `entitlementId` (string): Optional SuperBlock entitlement ID expected to be bound to the paid action intent. Not used for sponsor slots.
- `intentId` (string, required): Paid action intent ID returned by prepare_superblock_purchase or quote_sponsor_reservation with reserve=true.
- `txHash` (string, required): Direct PoolParty router transaction hash. Plain ERC-20 transfers are not valid production settlement.

### `get_paid_action_receipt` (~108 tokens)

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.

Input parameters:

- `intentId` (string, required): Paid action intent ID returned by quote_superblock_reservation, prepare_superblock_purchase, or quote_sponsor_reservation.

### `create_channel_from_template` (~208 tokens)

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.

Input parameters:

- `description` (string): Channel description. Defaults to template description.
- `name` (string, required): Channel name (2+ characters).
- `operatorDisplayName` (string): Display name for the channel operator.
- `purpose` (string): Plain-language purpose statement.
- `slug` (string): Channel slug (3-50 chars, lowercase alphanumeric with hyphens). Auto-generated from name if omitted.
- `tags` (array): Channel tags for discovery.
- `templateId` (string, required): Template ID (e.g., "community_broadcast_loop", "event_lobby_screen"). Use list_channel_templates to see available templates.

### `update_channel_settings` (~182 tokens)

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.

Input parameters:

- `channelSlug` (string, required): The channel slug to update.
- `description` (string): New description (max 500 chars). Empty string = no change.
- `name` (string): New channel name (2-100 chars). Empty string = no change.
- `operatorDisplayName` (string): Operator display name (max 50 chars). Empty string = no change.
- `purpose` (string): Plain-language purpose statement (max 300 chars). Empty string = no change.
- `tags` (array): Channel tags (max 10 tags, each max 30 chars). Replaces existing tags.

### `configure_open_call` (~304 tokens)

Configure the open-call / submission guidance for a channel with a community slot. Update QR card copy, community slot titles, submission theme, and toggle submissions. Requires API key with configure:channel scope. Channel must have a community_slot in its program.

Input parameters:

- `acceptedMediaTypes` (array): Accepted MIME types. Subset of: video/mp4, video/webm, video/quicktime, application/x-mpegURL.
- `channelSlug` (string, required): The channel slug to configure.
- `communitySlotFallbackBody` (string): Detail text when queue is empty (max 200 chars).
- `communitySlotFallbackTitle` (string): Text shown when queue is empty (max 80 chars).
- `communitySlotTitle` (string): Community slot display title (max 80 chars).
- `maxRecommendedSubmissions` (number): Recommended max submissions per agent (1-10).
- `maxSubmissionDurationSeconds` (number): Max duration for submitted media (5-120 seconds).
- `openSubmissionsEnabled` (boolean): Enable/disable community submissions. Only works if channel already has a community_slot.
- `qrCtaLabel` (string): QR card CTA button text (max 40 chars).
- `qrHeadline` (string): QR card invitation headline (max 100 chars).
- `submissionGuidance` (string): Guidance text for submitters (max 500 chars).
- `submissionTheme` (string): Current theme or prompt (max 200 chars).

### `list_programming_candidates` (~193 tokens)

Inspect the PP2/Lazy River programming candidate inventory with source metadata, renderability, previews, and Program Queue links. Requires read:program_queue scope.

Input parameters:

- `channelSlug` (string, required): Channel slug, e.g. pp2.
- `includeArchived` (boolean): When true, include ARCHIVED candidates. Defaults to false.
- `limit` (number): Maximum candidates to inspect. Defaults to 100, capped at 250.
- `mediaTypes` (array): Optional media types or candidate kinds to include, e.g. video, card, slide_block, social_video.
- `renderableOnly` (boolean): When true, omit candidates without a supported render adapter.
- `sourceNetworks` (array): Optional source networks to include, e.g. farcaster, nostr, youtube, slide_block.
- `statuses` (array): Optional candidate statuses to include, e.g. STAGED or ADMITTED.

### `preview_programming_candidate` (~68 tokens)

Preview one PP2/Lazy River programming candidate before promoting it to the Program Queue. Requires read:program_queue scope.

Input parameters:

- `candidateId` (string, required): Candidate id from list_programming_candidates or source discovery.
- `channelSlug` (string, required): Channel slug, e.g. pp2.

### `inspect_programming_discovery_inventory` (~376 tokens)

Run a read-only PP2 discovery inventory audit across source queries. Reports upstream counts, exclusions, cursor availability, freshness, media mix, query provenance, preview confidence, admission-ready media URLs, and overlap with stored candidates/Program Queue. Requires read:program_queue scope.

Input parameters:

- `channelSlug` (string, required): Channel slug, e.g. pp2.
- `cursor` (string): Optional upstream cursor returned by a previous inspection.
- `excludeAlreadyProgrammed` (boolean): When true, omit items already linked to Program Queue history.
- `excludeAlreadyStored` (boolean): When true, omit items already stored in PP2 candidate inventory.
- `excludeSmokeFixtures` (boolean): When true, omit likely smoke/test fixtures.
- `freshnessWindow` (string): Optional source-published freshness window. Missing timestamps are excluded unless any.
- `hideTextOnly` (boolean): Filter text-only results. Implied by mediaRequired/videoRequired.
- `includeImages` (boolean): Whether image-only results are allowed when media filters are active. Defaults true.
- `includeLinkPreviews` (boolean): Whether link-preview/card results are allowed when media filters are active. Defaults true.
- `limit` (number): Per-query result limit. Defaults to 25, capped at 25 to match the live adapter window.
- `mediaRequired` (boolean): Require media-bearing social results.
- `queries` (array): Search queries to sample. Defaults to poolparty; capped at 20 queries.
- `sourceNetworks` (array): Networks to inspect: farcaster, nostr, youtube, internal, manual, slide_block. Farcaster/Nostr use live adapters when configured; others report stored inventory coverage.
- `videoRequired` (boolean): Require video-bearing social results. Use sparingly; PP2 should not be video-only by default.

### `admit_programming_candidates` (~201 tokens)

Admit selected PP2 discovery results into candidate inventory only. Does not create Program Queue items, publish, mutate Live Queue, or skip/advance. Requires write:programming_candidates scope.

Input parameters:

- `admissionNote` (string): Operator/agent note recorded on admitted candidates and audit receipt.
- `candidates` (array, required): Discovery candidates selected for inventory admission. Capped by service at 50.
- `channelSlug` (string, required): Channel slug, e.g. pp2.
- `dryRun` (boolean): When true, perform duplicate/overlap/rejection checks but do not write candidate inventory or audit rows.
- `excludeIfAlreadyProgrammed` (boolean): When true, skip candidates overlapping Program Queue history. Defaults false, but overlap is always reported.
- `excludeIfAlreadyStored` (boolean): Defaults true. Existing candidates are never overwritten; duplicates return existing candidate ids.
- `excludeSmokeFixtures` (boolean): Defaults true. Reject likely smoke/test fixtures.

### `list_program_queue` (~41 tokens)

Inspect the editable Program Queue for a channel. Requires read:program_queue scope.

Input parameters:

- `channelSlug` (string, required): Channel slug, e.g. pp2.

### `list_programming_buckets` (~53 tokens)

Inspect persistent PP2 programming buckets grouped from Program Queue bucket labels, including unbucketed items. Requires read:program_queue scope.

Input parameters:

- `channelSlug` (string, required): Channel slug, e.g. pp2.

### `list_live_queue` (~42 tokens)

Inspect the current live queue projection for a channel. Requires read:program_queue scope.

Input parameters:

- `channelSlug` (string, required): Channel slug, e.g. pp2.

### `inspect_channel_programming_policy` (~50 tokens)

Inspect source, approval, audit, and MCP-scope policy for channel programming. Requires read:program_queue scope.

Input parameters:

- `channelSlug` (string, required): Channel slug, e.g. pp2.

### `create_program_item` (~109 tokens)

Promote a source candidate into the editable Program Queue. Requires write:program_queue scope and records an audit event.

Input parameters:

- `bucket` (string): Editorial bucket/context label.
- `candidateId` (string, required): Candidate id from source discovery/staging.
- `channelSlug` (string, required): Channel slug, e.g. pp2.
- `note` (string): Rationale or programming note.
- `position` (number): Desired queue position. Defaults to the tail.
- `reason` (string): Audit reason.

### `draft_program_queue` (~155 tokens)

Save an ordered PP2 Program Queue draft from source candidate ids. Creates or reuses candidate-backed Program Queue items, applies the requested order, and optionally replaces/prunes stale draft items when replaceDraft=true. Requires write:program_queue scope. Does not publish or mutate the live queue.

Input parameters:

- `channelSlug` (string, required): Channel slug, e.g. pp2.
- `items` (array, required): Ordered candidate-backed items to save into the Program Queue draft.
- `reason` (string): Audit reason for creating/reordering this draft.
- `replaceDraft` (boolean): When true, remove stale draft/programmed Program Queue items not included in items. Never publishes or mutates Live Queue. Defaults to false to preserve existing tail items.

### `set_programming_bucket` (~112 tokens)

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.

Input parameters:

- `bucket` (string): Editorial bucket label. Omit or pass an empty string to clear the bucket.
- `channelSlug` (string, required): Channel slug, e.g. pp2.
- `programItemId` (string, required): Program item id to bucket or unbucket.
- `reason` (string): Audit reason for this bucket update.

### `reorder_program_queue` (~85 tokens)

Reorder one or more Program Queue items. Requires write:program_queue scope and records old/new order audit.

Input parameters:

- `channelSlug` (string, required): Channel slug, e.g. pp2.
- `orderedProgramItemIds` (array, required): Program item ids in desired order. Omitted existing ids remain after this ordered set.
- `reason` (string, required): Audit reason for this reorder.

### `simulate_program_queue_publish` (~124 tokens)

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.

Input parameters:

- `channelSlug` (string, required): Channel slug, e.g. pp2.
- `mode` (string): Publish mode to simulate. Defaults to replace_live_queue.
- `programItemIds` (array): Optional subset of program item ids to simulate. Defaults to all publishable items.
- `reason` (string): Optional reason that would be carried into the publish audit preview.

### `publish_program_queue` (~100 tokens)

Publish Program Queue order to the live runtime queue. Requires publish:program_queue scope and records an audit event.

Input parameters:

- `channelSlug` (string, required): Channel slug, e.g. pp2.
- `mode` (string): Publish mode. Defaults to replace_live_queue.
- `programItemIds` (array): Optional subset of program item ids to publish. Defaults to all publishable items.
- `reason` (string, required): Audit reason for this live-facing publish.

### `insert_live_next` (~79 tokens)

Insert a Program Queue item at the front of the live queue. Requires write:live_queue scope and records an audit event.

Input parameters:

- `channelSlug` (string, required): Channel slug, e.g. pp2.
- `programItemId` (string, required): Program item id to insert next.
- `reason` (string, required): Audit reason for this live-facing insertion.

### `remove_live_queue_item` (~76 tokens)

Remove an item from the live queue. Requires write:live_queue scope and records an audit event.

Input parameters:

- `channelSlug` (string, required): Channel slug, e.g. pp2.
- `liveQueueItemId` (string, required): Live queue item / channel entry id to remove.
- `reason` (string, required): Audit reason for removal.

### `skip_current_live_item` (~66 tokens)

Report skip capability for the current live item. Requires skip:live_queue scope. This runtime does not yet expose a safe shared skip primitive.

Input parameters:

- `channelSlug` (string, required): Channel slug, e.g. pp2.
- `reason` (string, required): Audit reason for requested skip.

### `propose_program_order` (~74 tokens)

Suggest a Program Queue order without mutating anything. Requires propose:programming scope.

Input parameters:

- `channelSlug` (string, required): Channel slug, e.g. pp2.
- `programItemIds` (array): Optional proposed order. Defaults to source-score-informed order.
- `rationale` (string): Agent rationale for the proposed order.

### `accept_programming_proposal` (~78 tokens)

Apply a prior non-mutating programming proposal by reordering the Program Queue. Requires write:program_queue scope.

Input parameters:

- `channelSlug` (string, required): Channel slug, e.g. pp2.
- `proposedOrderedItemIds` (array, required): Ordered ids from propose_program_order.
- `reason` (string, required): Audit reason for accepting the proposal.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/io-poolparty-main-stage-airtime/api-mcp#diagnostics

## Score history

- 2026-08-03: 66
- 2026-08-02: 65
- 2026-08-01: 65
- 2026-07-31: 64
- 2026-07-30: 63
- 2026-07-29: 62
- 2026-07-28: 61
- 2026-07-27: 61
- 2026-07-26: 60

## Links

- Remote endpoint: https://www.poolparty.io/api/mcp
- Website: https://www.poolparty.io/agent
- Changelog RSS feed: https://verifymcp.io/servers/io-poolparty-main-stage-airtime/api-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/io-poolparty-main-stage-airtime/api-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/io-poolparty-main-stage-airtime/api-mcp
