# Fanful > Fanful is the artist platform emerging from Laurel Harned's working site. These links are the canonical public entry points for agentic clients. ## Agent Access Note: this file is Fanful's explicit developer/agent discovery file. It is not special Google generative-search markup, and it does not replace ordinary SEO, crawlability, sitemap, robots, structured-data, or page-quality work. - [Fanful agent access overview](https://fanful.net/agents): public overview for MCP, ChatGPT app, Claude Code, Codex, and other agent clients. - [Fanful agent setup](https://fanful.net/agent-setup): one central Cloudflare-style starting point for coding agents. - [Fanful agent setup prompt](https://fanful.net/agent-setup/prompt.md): copy-paste prompt for any AI coding agent to discover Fanful MCP, API docs, CLI, skills, recipes, and safety rules. - [Fanful developer docs](https://docs.fanful.net): task-first docs for human developers and AI agents building with Fanful. - [Fanful developer docs markdown](https://fanful.net/docs.md): model-readable mirror of the developer docs. - [Fanful API reference](https://docs.fanful.net/api): current API map, workflow-trigger recipes, code examples, and official SDK release plan. - [Fanful API reference markdown](https://docs.fanful.net/api.md): model-readable API reference and integration recipes. - [Fanful agent skills](https://docs.fanful.net/skills): copyable provider-neutral skills/prompts for Codex, Claude, ChatGPT, Cursor, and other coding agents. - [Fanful agent skills markdown](https://docs.fanful.net/skills.md): model-readable skill catalog. - [Fanful developers and agents hub](https://fanful.net/developers-and-agents): marketing-facing hub for MCP, manifests, ChatGPT app direction, and safety boundaries. - [Fanful developers and agents markdown](https://fanful.net/developers-and-agents.md): model-readable mirror of the developers and agents hub. - [Fanful agent markdown guide](https://fanful.net/agent-docs/fanful-agent-surface.md): concise markdown instructions for current tools, resources, auth, and safety boundaries. - [Fanful agent SDK starter](https://fanful.net/agent-docs/fanful-agent-sdk-starter.md): provider-neutral TypeScript helper and no-SDK HTTP fallback for external agents. - [Fanful hosted runtime boundary](https://fanful.net/agent-docs/fanful-hosted-agent-runtime.md): external-first worker-hosting decision, safe run-record fixture, approval, retry, cancellation, and redaction limits. - [Fanful agent-ingestion Q&A matrix](https://fanful.net/agent-docs/fanful-agent-ingestion-qa.md): source-backed smoke matrix for common Fanful, competitor, agent-action, and not-ready answers. - [Community chat agent manifest](https://fanful.net/api/agent/community-chat): current guest/listener-safe community-chat manifest. - [Embedded-room agent manifest](https://fanful.net/api/agent/embedded-rooms): current embedded-room manifest and operation descriptors. - [Live-controls agent manifest](https://fanful.net/api/agent/live-controls): current live scheduling, non-mutating schedule previews, go-live, non-mutating status previews, stage, and moderation operation descriptors. - [Live-readiness agent manifest](https://fanful.net/api/agent/live-readiness): listener-safe joinability for live rooms, embedded rooms/webinars, and Listen Along. - [Creator-commerce agent manifest](https://fanful.net/api/agent/creator-commerce): public lesson/shop reads, admin-redacted creator state, authorized publisher referral summaries, non-mutating service price/policy previews, confirmed lesson price and Stripe writes, confirmed tier lifecycle writes, confirmed safe shop product create/visibility/details writes, confirmed shop product Stripe Price writes, and confirmed non-default community channel tier-access metadata writes. Referral reward credit writes remain blocked. - [Artist-analytics agent manifest](https://fanful.net/api/agent/artist-analytics): read-only analytics contract; authorized creator/admin callers get source funnels, top content outcomes, listener cohorts, and recent signals with raw listener rows redacted. - [Media-upload sessions agent manifest](https://fanful.net/api/agent/media-upload-sessions): confirmed creator media upload-session handoffs with provenance descriptors, idempotency, and audit attribution while raw media and artwork bytes stay outside model-visible tool input. - [Listener-experience agent manifest](https://fanful.net/api/agent/listener-experience): sanitized listener/fan state for library, playback, focused profile/preference and membership entitlement status, purchases, notifications, and Listen Along boundaries. - [Idea-board agent manifest](https://fanful.net/api/agent/idea-board): visible member ideas, signed-in vote state, admin-redacted review fields, confirmed listener submit/vote writes, and creator review/settings contracts. - [ChatGPT-app readiness manifest](https://fanful.net/api/agent/chatgpt-app): Apps SDK requirements, current MCP mapping, read-only descriptor metadata status, profile display-name write readiness, first workflow candidates, and blockers before Fanful is submitted as a ChatGPT app. - [Action-contracts manifest](https://fanful.net/api/agent/action-contracts): cross-surface auth, confirmation, audit, idempotency, rate-limit, and redaction contract for listener, fan, creator, and operator actions. - [Workflow-trigger manifest](https://fanful.net/api/agent/workflow-triggers): signed webhook trigger catalog for event-driven agents, including payload samples, retry/idempotency headers, signature rules, redaction boundaries, the authenticated subscription registry endpoint, manual signed test delivery, and automatic runtime fan-out for `member.idea.submitted`. Live-readiness, support-checkout, community-escalation, and catalog-drift trigger families remain manual-test-only or manifest-ready until future slices. - [Agent-session manifest](https://fanful.net/api/agent/sessions): external agent run/session contract for redacted multi-step events, pending approvals, completed tool calls, cancellation, sample event-log readback, and the migration path from stateless MCP calls. Durable storage is planned, not enabled yet. - [Sync-job manifest](https://fanful.net/api/agent/sync-jobs): cursor-based sync contract for imported creator/catalog data, including redacted checkpoints, duplicate-safe resumes, stats, drift-report boundaries, and the first authenticated Stripe catalog app-reference drift worker. Arbitrary hosted provider workers are still planned separately. - [Work-log sync feed](https://fanful.net/api/agent/sync-feeds/work-log): public cursor feed for work-log upsert records, with opaque updatedAt-plus-id cursors, idempotency keys, and no tombstones until delete events exist. - [Write-envelope validator](https://fanful.net/api/agent/action-contracts/envelope): dry-run `agent-write-envelope.v1` validation for actor attribution, client attribution, confirmation text, idempotency, reason, and audit correlation. - [Public MCP endpoint](https://fanful.net/mcp): stateless Streamable HTTP MCP endpoint for network clients. ## Current MCP Server - Repository command: `npm run mcp:server` - Smoke command: `npm run mcp:smoke` - HTTP smoke command: `npm run mcp:smoke:http` - Current MCP transport: stdio locally, stateless Streamable HTTP at `https://fanful.net/mcp` - Current server file: `scripts/fanful-mcp-server.mjs` - Current CLI file: `scripts/fanful-cli.mjs` - Current docs: `docs/agent/fanful-mcp-server.md` - Current CLI docs: `docs/agent/fanful-cli.md` - Current ChatGPT app status: public `/mcp` exists and read-only MCP tools advertise Apps SDK descriptor `_meta`; `fanful_creator_live_status_confirmation_render` is available as an optional Apps SDK confirmation layer before confirmed live status writes; no submitted ChatGPT app yet. - Current action-contract status: account reads, idea-board reads, confirmed listener idea submit/vote writes, creator service price/policy previews, confirmed lesson price writes, confirmed existing lesson Stripe Price mapping writes, confirmed replacement lesson Stripe Price creation, confirmed membership tier lifecycle writes, confirmed membership Stripe Price mapping/creation writes, confirmed creator shop product create/visibility/details writes, confirmed creator shop product Stripe Price mapping/creation writes, confirmed creator community channel create/update writes, confirmed community channel tier-access metadata writes, live schedule previews, confirmed new live-event creation, confirmed existing-event live schedule writes, embedded-room roster/stage writes, live status previews, confirmed live status writes, listener support checkout starts, membership checkout starts, signed-CD shop checkout starts, and purchase status reads are executable; other write envelopes can be validated in dry-run mode, but broader mutations still wait for confirmed write wrappers. - Current live fan-notification status: confirmed agent live schedule create/update writes can persist preference-gated listener notification-center rows after the schedule write succeeds, then attempt APNs/FCM push delivery for recipients with live push enabled and active iOS/Android devices. Raw push tokens and device ids are never model-visible. Production push leaves Fanful only after server credentials are configured; otherwise the response reports provider-not-configured. - Current artist-analytics status: `agent-artist-analytics.v1` is a read-only creator/admin manifest; guest calls return `401`, listener-only calls return `403`, and authorized owner, artist-admin, automation, or scoped creator analytics/read credentials receive aggregate analytics. It summarizes first-party analytics without exposing raw listener rows, Better Auth ids, anonymous ids, session ids, device ids, raw referrer query strings, or raw event logs. - Current creator analytics MCP tool: `fanful_creator_analytics_read` reads the same aggregate artist-analytics contract with optional window filtering; without creator/admin credentials, callers receive the same `401` or `403` auth boundary as the HTTP manifest. - Current media-upload session status: `agent-media-upload-sessions.v1` supports previewing and creating confirmed upload-session records for creator media metadata/provenance. Binary media and artwork transfer stays outside model-visible tool input and must complete through `/api/admin/uploads` with `agentUploadSessionId`. - Current workflow-trigger status: `agent-workflow-triggers.v1` exposes deterministic sample payloads for live readiness, support checkout, idea-board, community escalation, and catalog drift events. Live-readiness changes, agent-started support checkouts, visible verified-listener idea submissions, community moderation changes, and catalog sync drift findings now expose signed, redacted trigger status. `agent-workflow-trigger-subscriptions.v1` can list/create/pause/resume/delete redacted subscription records at `/api/agent/workflow-triggers/subscriptions`; `agent-workflow-trigger-deliveries.v1` can send manual signed test deliveries to active subscriptions and persist redacted audit rows. Automatic runtime webhook fan-out currently runs for visible `member.idea.submitted` events only. - Current agent-session status: `agent-sessions.v1` is a read-only manifest with deterministic creator and listener sample runs, redacted event replay, pending approval semantics, completed tool-call summaries, and sample event-log readback at `/api/agent/sessions/{sessionId}/events`. Create/message/approval/cancel routes return structured `agent_sessions_storage_not_enabled` responses until durable session storage and event streams are enabled. - Current sync-job status: `agent-sync-jobs.v1` exposes a deterministic Stripe catalog app-reference checkpoint, opaque cursor semantics, duplicate-safe resume behavior, drift stats, redaction rules, and authenticated manual run/status endpoints backed by durable `agent_sync_job_runs` rows. `agent-sync-feed.v1` is available for public work-log upserts at `/api/agent/sync-feeds/work-log`. Hosted arbitrary provider workers and provider writes remain planned. - Current private-agent auth model: scoped delegated grants from a Better Auth human session; bearer credentials belong in transport headers or MCP client config, never prompt-visible tool input. - Current listener community-chat MCP status: `fanful_listener_community_messages_read` reads the latest visible messages from accessible channels such as `#general` or `#intros`, and `fanful_listener_community_message_post` posts one visible message or reply only with scoped/session listener auth, exact public-message confirmation, acknowledged risk, idempotency, and channel access checks. - Current creator community-channel MCP status: `fanful_creator_community_channel_create` can create one additional channel up to the four-channel cap, and `fanful_creator_community_channel_update` can update non-default channel title, description, archive state, and membership-tier access. Both require creator/admin credentials, exact confirmation, stale-state guards, idempotency, and audit correlation; they do not create tiers, change prices, grant memberships, or send notifications. - Current membership-tier MCP status: `fanful_creator_membership_stripe_price_select` selects or clears an already-known membership tier Stripe Price mapping, `fanful_creator_membership_stripe_price_create` creates and selects one replacement monthly membership Stripe Price, `fanful_creator_membership_tier_create` creates one inactive tier draft, `fanful_creator_membership_tier_update` updates one tier profile or benefit copy, and `fanful_creator_membership_tier_archive_state` archives or restores one tier for future joins. All five require creator/admin credentials, exact confirmation, stale-state or catalog guards, idempotency, and audit correlation; they do not revoke existing memberships, mutate entitlement metadata, start checkout, or grant credits. - Current shop product MCP status: `fanful_creator_shop_product_create` creates one safe shop product row with catalog metadata and an observed-product-id stale guard, `fanful_creator_shop_product_visibility_update` toggles active/show-in-shop state, `fanful_creator_shop_product_details_update` updates safe existing-product copy, inventory tracking/count, fulfillment note, download display filename/release notes, and sort order, `fanful_creator_shop_product_stripe_price_select` selects or clears a compatible app-state Stripe Price mapping, and `fanful_creator_shop_product_stripe_price_create` creates and selects one replacement one-time Stripe Price. All require creator/admin credentials, exact confirmation, stale-state or catalog guards, idempotency, and audit correlation; Stripe Price creation also requires server-side Stripe credentials and existing Product context. They do not mutate raw download URLs or external URLs, start checkout sessions, execute fulfillment, touch orders, issue refunds, or grant credits. - Current SDK starter status: `examples/fanful-agent-starter/client.ts` is a provider-neutral typed HTTP example, and `/agent-docs/fanful-agent-sdk-starter.md` documents the matching no-SDK fallback. It handles `401`/`403`, redaction, stale-state, idempotency, retry, workflow-trigger, agent-session, ChatGPT-app, MCP, CLI, and action-contract boundaries without publishing a provider-specific package yet. - Current API reference status: `https://docs.fanful.net/api` documents the executable HTTP agent manifests, MCP endpoint, action-contract writes, workflow-trigger subscription registry, sync feeds, and repo CLI. It also states that Stripe-style official language SDK packages are not published yet and lists the release checklist for Python/TypeScript SDKs. - Current skills status: `https://docs.fanful.net/skills` publishes copyable provider-neutral Fanful skills for setup, MCP operation, API/webhook integration, creator commerce, listener community chat, and SDK release planning. - Current hosted runtime status: no general Fanful-hosted worker runtime or arbitrary code execution is enabled. Use `/agent-docs/fanful-hosted-agent-runtime.md` to keep custom reasoning external unless a concrete future worker family has a redacted run record, correlation id, idempotency key, limits, approval, cancellation, retries, and audit links. - Current fan live-readiness status: read-only joinability, blockers, and next actions are executable; chat posts, media token joins, and Listen Along mutations stay on first-party endpoints. - Current fan entitlement status: `fanful_listener_entitlements_read` and `listener.entitlementStatus` answer what memberships, benefits, purchases, and gated experiences a signed-in or scoped fan can access; membership checkout can start only through the confirmed checkout contract and Stripe-confirmed payment state still controls access. - Fan profile and notification status: `fanful_listener_profile_preferences_read` and `listener.profilePreferences` answer what profile email state and notification preferences a signed-in or scoped fan has configured; `fanful_listener_display_name_update` can update the visible display name after a fresh profile read, exact confirmation, acknowledged risk, idempotency, reason, audit correlation, stale observed display name, and first-party or scoped `listener:profile:write` credentials. Notification preference writes remain unavailable until their own confirmed agent write tooling exists. - Fan live support status: `fanful_listener_live_support_preview` and `listener.liveSupport` answer whether a live-room support CTA is available, what generic support/donation purchase preview and confirmation copy would apply, how first-party live-room checkout attributes paid support with `liveEventId`, and how support-only agent checkout starts work after confirmation. ## Safe-Use Rules - Do not automate private web UI when a server-side manifest or MCP tool exists. - Do not treat public, destructive, billing-impacting, moderation, or creator-speech writes as available unless the manifest or MCP tool explicitly says the operation is ready. - Do not pass admin secrets as prompt-visible tool input. Current admin manifest reads are environment-gated in the local MCP process. - Treat env-gated admin credentials as a dev/operator fallback, not the user-facing private ChatGPT/MCP authorization path. - Keep raw payment ids, private invite links, media tokens, media URLs, device ids, and listener ids out of model-visible logs unless a contract explicitly marks them as safe or redacted. - Treat creator service price/policy previews as non-mutating. Confirmed lesson price writes may update `lesson_offerings.price_cents` only when a ready operation requires exact confirmation, idempotency, stale-state guard, and audit. Confirmed lesson policy settings writes may create or update `lesson_policy_settings` only; they do not execute refunds, spend credits, cancel bookings, reopen availability, create bundles, or mutate Stripe. Confirmed existing lesson Stripe Price mapping writes may select or clear `lesson_offerings.stripe_price_id` only for a Price already present in Laurel app-state catalog references. Confirmed replacement lesson Stripe Price creation may create and select one lesson Price only through the server route with Stripe credentials, existing Product context, exact confirmation, idempotency, stale-state guard, and audit. Confirmed membership tier lifecycle writes may create a new inactive tier, update existing active or archived tier profile and benefit copy, or archive/restore state only after stale-state and audit checks; tier ids are dynamic and should come from the latest creator commerce or listener support catalog read, not a hardcoded Supporter/Patron/Circle enum. Confirmed shop product writes may create one safe catalog product, toggle active/show-in-shop state, update safe product details, select/clear one compatible app-state Stripe Price mapping, or create/select one replacement one-time Stripe Price only; they do not mutate raw download URLs, external URLs, product kind/id after creation, checkout sessions, fulfillment execution, orders, refunds, or credits. Confirmed community channel entitlement metadata writes may update non-default channel signed-in or active-tier access metadata only. Do not change credits, cancellation/refund execution, paid rooms, entitlement groups, or memberships through this surface yet. - Treat listener/fan public writes and lesson or paid-room checkout starts as unavailable until the manifest explicitly marks them ready with confirmation and attribution. Community-message reads and confirmed posts are the current public fan-write exception through the community-chat MCP tools. Support, membership, and signed-CD shop checkout starts require exact preview confirmation, listener checkout scope or first-party listener session, idempotency, audit correlation, and redacted return fields; checkout status reads return only redacted intent state. - Treat ChatGPT-specific widgets and descriptor metadata as optional layers over MCP, not as separate product contracts. - Start any new mutating MCP/CLI/ChatGPT tool from `https://fanful.net/api/agent/action-contracts`, then validate `agent-write-envelope.v1` at `https://fanful.net/api/agent/action-contracts/envelope`; do not invent separate write semantics per client. - Treat workflow-trigger payloads as redacted event notifications. Verify signatures, use event/delivery ids for retry idempotency, read the linked manifest for current state, and never mutate Fanful solely because a trigger arrived. - Treat agent-session records as redacted run history. A pending approval still needs the current action contract and `agent-write-envelope.v1`; do not treat session state as write permission. - Treat sync-job records as redacted checkpoint/drift status. Store opaque cursors exactly as returned, use `idempotencyKey` to replay manual runs or work-log feed pages safely, and never pass provider credentials, raw payment ids, media handles, or private database identifiers as prompt-visible tool input. ## Planned Agent Work - Action contracts for listener/admin writes: GitHub issue #608. - Creator coaching and commerce actions: GitHub issue #671. - Live scheduling and go-live controls: GitHub issue #672. - Listener and fan experiences: GitHub issue #673. - Fan membership and entitlement status: GitHub issue #805. - Fan live-room and Listen Along readiness: GitHub issue #807. - Member idea board for agents: GitHub issue #602. - ChatGPT app on top of MCP: GitHub issue #674. - Public HTTPS MCP transport: GitHub issue #754. - CLI on shared MCP contracts: GitHub issue #611. - Scoped delegated agent grants: #810 defines the model, #811 stores grants, #812 resolves principals in runtime agent requests, #818 exchanges one-time approval codes, and #819 lets users inspect/revoke active grants before broad private use. - Signed workflow triggers for agents: GitHub issue #1112; live-readiness trigger records: #1126. - External agent sessions and event streams: GitHub issues #1113 and #1177. - Cursor-based agent sync jobs: GitHub issue #1114. Executable sync job worker: GitHub issue #1224. Public work-log sync feed: GitHub issue #1176. ## Current CLI - `npm --silent run fanful:cli -- surfaces`: read the local surface catalog without network. - `npm --silent run fanful:cli -- manifest idea-board`: fetch a shared agent manifest. - `npm --silent run fanful:cli -- member-idea-submit ...`: submit one visible member idea with listener credentials, exact confirmation, idempotency, and audit correlation. - `npm --silent run fanful:cli -- member-idea-vote ...`: toggle or set a listener vote on one visible idea with the same confirmed-write envelope. - `npm --silent run fanful:cli -- manifest artist-analytics --window 7d --admin`: inspect the creator/admin aggregate analytics summary; omitting `--admin` is expected to exit nonzero with the `401` or `403` auth boundary. - `npm --silent run fanful:cli -- profile-preferences`: read focused fan profile and notification preference status from the listener manifest. - `npm --silent run fanful:cli -- purchase-link preview --target-kind support --target-id donation --amount-cents 2500`: preview live-room support/donation copy without starting checkout. - `FANFUL_LISTENER_BEARER_TOKEN=... npm --silent run fanful:cli -- purchase-link create --target-kind support --target-id donation --amount-cents 2500 --target-summary --confirmation-text --acknowledge-risk --idempotency-key --audit-correlation-id --reason `: start support-only checkout after exact preview confirmation. - `FANFUL_LISTENER_BEARER_TOKEN=... npm --silent run fanful:cli -- purchase-link create --target-kind membership --target-id patron --target-summary --confirmation-text --acknowledge-risk --idempotency-key --audit-correlation-id --reason `: start membership checkout after exact preview confirmation. - `FANFUL_LISTENER_BEARER_TOKEN=... npm --silent run fanful:cli -- purchase-link create --target-kind shop --target-id signed-cd --target-summary --confirmation-text --acknowledge-risk --idempotency-key --audit-correlation-id --reason `: start signed-CD shop checkout after exact preview confirmation. - `FANFUL_LISTENER_BEARER_TOKEN=... npm --silent run fanful:cli -- purchase-link status --reference shop-1234abcd`: inspect redacted support, membership, or shop checkout intent status after create. - `npm --silent run fanful:cli -- creator-price-preview --offering-id lesson-private-coaching --new-price-cents --admin`: preview a lesson/coaching price change without writing state. - `npm --silent run fanful:cli -- creator-price-update --offering-id lesson-private-coaching --new-price-cents --observed-updated-at --target-summary --confirmation-text --acknowledge-risk --idempotency-key --audit-correlation-id --reason --admin`: execute a confirmed lesson price write after a fresh preview. - `npm --silent run fanful:cli -- creator-stripe-price-select --offering-id lesson-private-coaching --selected-stripe-price-id --observed-updated-at --target-summary --confirmation-text --acknowledge-risk --idempotency-key --audit-correlation-id --reason --admin`: select or clear an already-known lesson Stripe Price mapping after a fresh catalog read. - `npm --silent run fanful:cli -- creator-stripe-price-create --offering-id lesson-private-coaching --new-price-cents --currency usd --observed-updated-at --target-summary --confirmation-text --acknowledge-risk --idempotency-key --audit-correlation-id --reason --admin`: create and select one replacement lesson Stripe Price after a fresh catalog read. - `npm --silent run fanful:cli -- creator-membership-tier-create --tier-id --name --description --monthly-amount-cents --currency usd --sort-order --benefits --observed-tier-ids --target-summary --confirmation-text --acknowledge-risk --idempotency-key --audit-correlation-id --reason --admin`: create one inactive membership tier draft after a fresh creator-commerce read. - `npm --silent run fanful:cli -- creator-membership-tier-update --tier-id --name --description --sort-order --benefits --observed-updated-at --target-summary --confirmation-text --acknowledge-risk --idempotency-key --audit-correlation-id --reason --admin`: update one membership tier's visible profile and ordered benefits after a stale-state guard. - `npm --silent run fanful:cli -- creator-membership-tier-archive-state --tier-id --next-active true|false --observed-updated-at --target-summary --confirmation-text --acknowledge-risk --idempotency-key --audit-correlation-id --reason --admin`: archive or restore one membership tier for future joins without revoking existing memberships. - `npm --silent run fanful:cli -- creator-shop-product-create --title --kind physical --price-cents <cents> --active false --show-in-shop false --inventory-tracked false --observed-product-ids <comma-list> --target-summary <summary> --confirmation-text <text> --acknowledge-risk --idempotency-key <key> --audit-correlation-id <id> --reason <text> --admin`: create one safe shop product after a fresh creator-commerce read without setting raw download URLs, external URLs, Stripe Price ids, checkout sessions, fulfillment execution, orders, refunds, or credits. - `npm --silent run fanful:cli -- creator-shop-product-details-update --product-id <id> --updated-fields title,inventoryTracked,inventoryCount --title <title> --inventory-tracked true --inventory-count <n> --observed-updated-at <iso> --target-summary <summary> --confirmation-text <text> --acknowledge-risk --idempotency-key <key> --audit-correlation-id <id> --reason <text> --admin`: update safe existing shop product details after a stale-state guard without changing price, Stripe mapping, raw download URLs, external URLs, orders, or refunds. - `npm --silent run fanful:cli -- creator-shop-product-stripe-price-select --product-id <id> --selected-stripe-price-id <id|null> --observed-updated-at <iso> --target-summary <summary> --confirmation-text <text> --acknowledge-risk --idempotency-key <key> --audit-correlation-id <id> --reason <text> --admin`: select or clear a compatible app-state Stripe Price mapping for an existing shop product after a fresh catalog read. - `npm --silent run fanful:cli -- creator-shop-product-stripe-price-create --product-id <id> --new-price-cents <cents> --currency usd --observed-updated-at <iso> --target-summary <summary> --confirmation-text <text> --acknowledge-risk --idempotency-key <key> --audit-correlation-id <id> --reason <text> --admin`: create and select one replacement one-time Stripe Price for an existing shop product through the confirmed server route. - `npm --silent run fanful:cli -- creator-membership-stripe-price-select --tier-id <id> --selected-stripe-price-id <id|null> --observed-updated-at <iso> --target-summary <summary> --confirmation-text <text> --acknowledge-risk --idempotency-key <key> --audit-correlation-id <id> --reason <text> --admin`: select or clear an already-known monthly membership Stripe Price mapping after a fresh catalog read. - `npm --silent run fanful:cli -- creator-membership-stripe-price-create --tier-id <id> --new-monthly-amount-cents <cents> --currency usd --observed-updated-at <iso> --target-summary <summary> --confirmation-text <text> --acknowledge-risk --idempotency-key <key> --audit-correlation-id <id> --reason <text> --admin`: create and select one replacement monthly membership Stripe Price through the confirmed server route. - `npm --silent run fanful:cli -- embedded-room-roster-update --room-id <id> --email <email> --display-name <name> --role stage_guest --status invited --participant-id <participant-id> --observed-participant-updated-at <iso> --target-summary <summary> --confirmation-text <text> --acknowledge-risk --idempotency-key <key> --audit-correlation-id <id> --reason <text> --admin`: execute one confirmed embedded-room invite, co-host, stage, removal, or restore change after a fresh roster read. - `npm --silent run fanful:cli -- live-schedule-preview --event-id laurel-studio-room --title "Laurel Studio Room" --status scheduled --starts-at <iso> --stream-provider none --chat-enabled --admin`: preview live create/edit/reschedule impact without writing live state. - `npm --silent run fanful:cli -- live-schedule-create --title "New Live Room" --target-summary <summary> --confirmation-text <text> --acknowledge-risk --idempotency-key <key> --audit-correlation-id <id> --reason <text> --admin`: execute confirmed new live-event creation after a fresh preview. - `npm --silent run fanful:cli -- live-schedule-update --event-id laurel-studio-room --title "Laurel Studio Room" --observed-updated-at <iso> --target-summary <summary> --confirmation-text <text> --acknowledge-risk --idempotency-key <key> --audit-correlation-id <id> --reason <text> --admin`: execute a confirmed existing-event live schedule write after a fresh preview. - `npm --silent run fanful:cli -- live-status-preview --event-id laurel-studio-room --next-status live --admin`: preview go-live/end/cancel impact without writing live state. - MCP `fanful_creator_live_status_confirmation_render`: render an optional ChatGPT Apps SDK confirmation summary for go-live/end/cancel impact before the separate confirmed live status write. - `npm --silent run fanful:cli -- live-status-update --event-id laurel-studio-room --next-status live --observed-updated-at <iso> --target-summary <summary> --confirmation-text <text> --acknowledge-risk --idempotency-key <key> --audit-correlation-id <id> --reason <text> --admin`: execute a confirmed live status write after a fresh preview. - MCP `fanful_listener_checkout_confirmation_render`: render a ChatGPT Apps SDK confirmation summary for support, membership, or signed-CD shop checkout starts before the separate scoped listener checkout write tool. - `npm --silent run fanful:cli -- action-contracts --audience listener --domain ideas`: inspect filtered write contracts. - `npm --silent run fanful:cli -- manifest workflow-triggers`: inspect the signed webhook trigger catalog and sample event payloads. - `FANFUL_CLI_ALLOW_ADMIN=1 FANFUL_ADMIN_TOKEN=... npm --silent run fanful:cli -- workflow-trigger-test-delivery --subscription-id <id> --trigger-family member.idea.submitted --idempotency-key <fresh-key> --admin`: send one signed manual test delivery to an active subscription. Automatic runtime fan-out currently runs only for visible `member.idea.submitted` events. - MCP `fanful_listener_community_messages_read` with `{ "channel": "#general", "limit": 10 }`: read the latest visible messages from an accessible community channel. - MCP `fanful_listener_community_message_post`: post or reply to a community channel after reading the channel id and supplying exact `I confirm listener.community-message-post for <targetSummary>.` confirmation, acknowledged risk, idempotency key, audit correlation id, and reason. - MCP `fanful_listener_display_name_update`: update the signed-in listener's visible display name after reading `listener.profilePreferences.profile.displayName` and supplying exact `I confirm listener.profile.display-name.update for display name "<name>".` confirmation, acknowledged risk, idempotency key, audit correlation id, reason, and the observed current display name. - MCP `fanful_listener_support_checkout_start`, `fanful_listener_membership_checkout_start`, and `fanful_listener_shop_checkout_start`: start support, membership, or signed-CD shop checkout only after a fresh preview and exact preview confirmation text; ChatGPT clients should render `fanful_listener_checkout_confirmation_render` first. Lesson and paid-room checkout starts remain blocked. - MCP `fanful_creator_community_channel_create`: create a channel such as `#vips` after reading current channel ids and supplying exact `I confirm creator.community.channel-create for <targetSummary>.` confirmation, acknowledged risk, idempotency key, audit correlation id, and reason. Use `accessMode: "membership-tiers"` plus active `tierIds` to restrict access/posting to a tier. - MCP `fanful_creator_community_channel_update`: update a non-default channel's title, description, archive state, or tier access after reading its `updatedAt` and supplying exact `I confirm creator.community.channel-update for <targetSummary>.` confirmation. - `npm --silent run fanful:cli -- manifest agent-sessions`: inspect the external agent session/run contract and sample redacted events. - `npm --silent run fanful:cli -- manifest sync-jobs`: inspect the cursor/checkpoint sync-job contract and sample catalog checkpoint. - `FANFUL_CLI_ALLOW_ADMIN=1 FANFUL_ADMIN_TOKEN=... npm --silent run fanful:cli -- sync-jobs run --idempotency-key <key> --audit-correlation-id <id> --admin`: run the authenticated Stripe catalog app-reference drift worker and persist a redacted checkpoint. - `FANFUL_CLI_ALLOW_ADMIN=1 FANFUL_ADMIN_TOKEN=... npm --silent run fanful:cli -- sync-jobs status --idempotency-key <key> --admin`: read a durable redacted sync run/checkpoint. - `curl 'https://fanful.net/api/agent/sync-feeds/work-log?limit=10'`: read public work-log upserts after an opaque cursor. - `npm --silent run fanful:cli:smoke`: verify the no-network CLI catalog. Set `FANFUL_CLI_SMOKE_LIVE=1` and `FANFUL_BASE_URL` to hit a live origin.