在TikTok、Instagram、YouTube、Facebook、LinkedIn、Vimeo、Vimeo OTT和Mux上发布内容,管理团队工作流程,团队协作,并进行跟踪。
JubJub is a content publishing and team collaboration platform for creators. Upload video content, collaborate with team members through threaded messaging and notifications, and publish across multiple platforms — TikTok, Instagram, YouTube, Facebook, LinkedIn, Vimeo, Vimeo OTT, and Mux — from a single workflow. Every publish creates a verified on-chain record on Base, giving creators immutable proof of ownership and publish history.
Supported platforms: TikTok, Instagram, YouTube, LinkedIn, Facebook, Vimeo, Vimeo OTT, Mux. JubJub does not currently support X/Twitter.
Several JubJub actions are high-impact, public, destructive, or financial. Before invoking any of the following tools, the agent MUST surface the planned action to the user — including target platforms, visibility, schedule, account, and any cost — and wait for explicit confirmation. Do not chain these actions inside multi-step workflows without a confirmation step.
Public publishing (fans out to external platforms, hard to fully undo):
launches_create, launches_retry, launches_rescheduleDestructive (permanent or hard to reverse):
contents_delete, workspaces_delete, teams_delete, launches_cancel, credentials_delete, teams_members_remove, communication_deleteExternal-facing (sends email or creates shareable links):
teams_invite, workspaces_invite_link_createFinancial / on-chain (mints tokens, transfers value, or charges credits):
catalogue_proposals_accept, catalogue_proposals_reject, team_splits_set, workspace_splits_set, register_content_for_revenue, generate_platform_keyFor each invocation, confirm: (a) the exact target (platform, account, workspace, content), (b) visibility and schedule where relevant, (c) any associated cost or credit consumption. The user's approval applies to a single invocation only — re-confirm on each call.
X-JubJub-Agent-Key: jjagent_YOUR_KEYhttps://api.jubjubapp.comJubJub uses two unrelated pricing models. Which one applies depends entirely on who is calling.
For humans signed in at studio.jubjubapp.com. All plans include unlimited multi-platform publishing, on-chain records, and unmetered access to every tool. Plans differ in workspace permanence, storage, and collaboration features. Human users never pay per-action USDC fees regardless of plan.
PlanMonthly (AUD)Annual (AUD/mo)Workspace TTLCollectionsFree$0$07 daysNoCreator$39$31 (20% off)PermanentYesStudio$199$159 (20% off)PermanentYes
Sign up: studio.jubjubapp.com/auth?tab=signup Creator: studio.jubjubapp.com/checkout?plan=creator Studio: studio.jubjubapp.com/checkout?plan=studio
For autonomous agents calling the MCP server without a human session. Each priced tool charges a small USDC fee on invocation. Creator AND Studio subscribers are both exempt — pass a session credential and pay nothing per call.
ToolCost (USDC)Railscontents_create$0.25x402, MPP, HTTPlaunches_create$0.25x402, MPP, HTTPget_publish_recommendations$0.002x402, MPP, HTTPget_content_analytics$0.005x402, MPP, HTTPget_platform_comparison$0.005x402, MPP, HTTPget_content_ownership$0.005x402, MPP, HTTPget_content_revenue$0.005x402, MPP, HTTPget_creator_intelligence$0.005x402, MPP (MCP rail only)
Payment rails:
_meta["x402-payment"]._meta["org.paymentauth/credential"].All MCP-served priced tools surface both rails via the JSON-RPC -32042 challenge. The HTTP /v2/paid/{tool} surface is x402-only and live for every priced tool except get_creator_intelligence (HTTP route currently disabled pending an upstream fix).
To bypass per-action pricing entirely, subscribe to Creator or Studio: studio.jubjubapp.com/profile/subscription
ToolDescriptionworkspaces_createCreate a new workspace. Required: name. Optional: description.workspaces_listList workspaces for the current user. Optional filters: team_id, role, limit, offset.workspaces_getGet workspace details. Required: workspace_id.workspaces_updateUpdate workspace name or description. Required: workspace_id. Optional: name, description.workspaces_deleteDelete a workspace. Required: workspace_id. Destructive.workspaces_invite_link_createGenerate a shareable invite link for a workspace — recipients can view content without an account and are prompted to sign up free to comment or approve.
ToolDescriptioncontents_createCreate a content item. Required: workspace_id, title, video_id. Optional: description, thumbnail_id, tags, language, is_made_for_kids. Payment required for agent callers without an active subscription ($0.25 USDC). Pass x402 credential at _meta["x402-payment"] or MPP credential at _meta["org.paymentauth/credential"]. Returns _payment with payment_verified, protocol, payment_id on success. Subscribe to avoid per-action charges: studio.jubjubapp.com/profile/subscriptioncontents_listList content in a workspace. Required: workspace_id. Optional: status, limit, offset.contents_getGet content details. Required: content_id.contents_updateUpdate content fields. Required: content_id. Optional: title, description, tags, video_id, thumbnail_id, language, is_made_for_kids.contents_deleteDelete content and associated resources. Required: content_id. Optional: force (bool). Destructive.
ToolDescriptionplatform_configs_createCreate a platform configuration linking content to a credential. Required: content_id, platform (tiktok/instagram/youtube/facebook/linkedin/vimeo/vimeo_ott/mux), credential_id. Optional: settings, visibility/ privacy. Mux defaults: playback_policy=public, mp4_support=standard.platform_configs_listList platform configs for a content item. Optional: content_id.platform_configs_updateUpdate platform config settings. Required: config_id. Optional: settings.
ToolDescriptionlaunches_createCreate a launch to publish or schedule content. Required: content_id, platform_config_ids (array). Optional: scheduled_for (ISO 8601 with timezone offset). Payment required for agent callers without an active subscription ($0.25 USDC). Pass x402 credential at _meta["x402-payment"] or MPP credential at _meta["org.paymentauth/credential"]. Returns _payment with payment_verified, protocol, payment_id and _ownership with on-chain proof details (transaction hash available in Vault once the onchain worker confirms). Subscribe to avoid per-action charges: studio.jubjubapp.com/profile/subscriptionlaunches_getGet launch details including per-platform status. Required: launch_id.launches_listList launches. Required: workspace_id. Optional: limit, offset.launches_cancelCancel a scheduled launch. Required: launch_id. Destructive.launches_retryRetry a failed launch. Required: launch_id. Optional: data (object).
ToolDescriptionget_publish_recommendationsGet personalised data-driven recommendations for a video before publishing, based on the creator's historical performance. Required: content_id. $0.002 USDC for agent callers without an active subscription. Pass x402 credential at _meta["x402-payment"] or MPP credential at _meta["org.paymentauth/credential"].get_content_analyticsRetrieve performance analytics for a piece of content across all platforms it was published to. Required: content_id. **$0.005 USDC for agent callers without an active subscription.**refresh_content_analyticsTrigger a fresh analytics fetch right now for a piece of content, pulling latest stats from all connected platforms. Required: content_id. Free.get_platform_comparisonCompare performance of a piece of content across every platform it was published to. Required: content_id. **$0.005 USDC for agent callers without an active subscription.**get_portfolio_analyticsRetrieve aggregated performance analytics across all content a user has published. Free.get_content_ownershipGet on-chain ownership details for a piece of content — token holders, percentages, contract addresses. Required: content_id. **$0.005 USDC for agent callers without an active subscription.**get_content_revenueGet streaming revenue stats for a content item directly from the smart contract. Required: content_id. **$0.005 USDC for agent callers without an active subscription.**get_creator_intelligenceRetrieve the full content intelligence profile for a creator — personalised patterns derived from their channel history. Required: profile_id. $0.005 USDC for agent callers without an active subscription. MCP rail only — HTTP route disabled pending upstream fix.
ToolDescriptionget_my_tokensList all content where the current user holds ownership tokens — full token portfolio with percentages and contract addresses. Free.get_my_claimableTotal claimable USDC balance across all content the user holds tokens for, broken down by content. Reads live from smart contracts on Base. Free.get_wallet_balanceCurrent user's total spendable USDC balance — smart wallet balance plus pending claimable. Free.
ToolDescriptionteams_createCreate a new team. Required: name. Optional: description.teams_listList teams for the current user.teams_getGet team details. Required: team_id.teams_updateUpdate team name, description, or avatar. Required: team_id. Optional: name, description, avatar_url.teams_deleteDelete a team. Required: team_id. Destructive.teams_transferTransfer team ownership. Required: team_id, new_owner_profile_id. Destructive.teams_members_listList team members. Required: team_id.teams_members_updateUpdate a member's role. Required: team_id, member_profile_id, role. Optional: custom_permissions.teams_members_removeRemove a member from a team. Required: team_id, member_profile_id. Destructive.teams_leaveLeave a team. Required: team_id. Destructive.teams_permissionsGet your permissions for a team. Required: team_id.teams_statsGet team statistics. Required: team_id.teams_searchSearch teams by name. Required: query.teams_activityGet recent team activity. Required: team_id.
ToolDescriptionteams_inviteInvite someone to a team by email. Required: team_id, invitee_email, role. Optional: custom_permissions.teams_invites_listList invitations for a team. Required: team_id. Optional: status.teams_invites_cancelCancel a pending invite. Required: team_id, invite_id. Destructive.teams_invites_pendingList pending invites for the current user.teams_invites_acceptAccept a team invitation. Required: invite_id.teams_invites_rejectReject a team invitation. Required: invite_id.
ToolDescriptionteams_workspaces_linkLink an existing workspace to a team. Required: team_id, workspace_id.teams_workspaces_unlinkUnlink a workspace from a team. Required: team_id, workspace_id. Destructive.teams_workspaces_listList workspaces linked to a team. Required: team_id.
ToolDescriptioncommunication_createSend a message in a scope (team, workspace, content, media, or collection). Required: scope_type, scope_id, body. Optional: parent_message_id, thread_root_id, message_type, decision_type, mentions, metadata.communication_listList messages by scope. Required: scope_type, scope_id. Optional: limit, cursor, thread_root_id.communication_getGet a single message by ID. Required: message_id. Useful for fetching messages referenced in notifications without knowing the scope.communication_editEdit a message. Required: message_id. Optional: body, mentions, metadata.communication_deleteSoft-delete a message. Required: message_id. Destructive.communication_resolveResolve a decision message (approve/reject/withdraw). Required: message_id, decision_status. Optional: resolution.
ToolDescriptionnotifications_listList notifications for the current user. Optional: cursor, limit, unread_only.notifications_mark_readMark a notification as read. Required: notification_id.
ToolDescriptioncredentials_listList all connected platform credentials. Optional: platform filter.credentials_list_by_platformList credentials grouped by platform. Returns all platforms with their connected accounts.credentials_connectStart OAuth flow to connect a platform account. Required: platform (tiktok/instagram/youtube/facebook/linkedin/vimeo). Returns an auth URL the user must open in their browser.credentials_connect_tokenConnect a token-based platform (Mux or Vimeo OTT) using API credentials. Required: platform (mux or vimeo_ott), token_id, token_secret. Optional: nickname.
ToolDescriptionprofiles_searchLook up a user profile by email. Required: email. Returns profile_id for use in team and member operations.profiles_getGet a user profile by ID. Required: profile_id.profiles_batchBatch get multiple profiles. Required: ids (array or comma-separated string, max 50).
ToolDescriptionmedia_ingest_urlIngest media from a public URL (server-side fetch). Required: url, workspace_id. Optional: filename.upload_sessions_create_linkCreate a browser upload link. Required: workspace_id. Returns a URL the user must open to upload files.upload_sessions_getGet upload session status and groupings. Required: upload_session_id, token. Poll until status reaches groupings_inferred.upload_sessions_infer_groupingsTrigger grouping inference on an upload session. Required: upload_session_id, token.upload_sessions_confirm_groupingsConfirm inferred groupings. Required: upload_session_id, token, groupings.
ToolDescriptioncollections_createCreate a collection in a workspace. Required: workspace_id, name. Optional: description.collections_listList collections in a workspace. Required: workspace_id.collections_getGet collection details. Required: collection_id.
ToolDescriptionmcp_versionReturns the MCP server version. No parameters. Use to verify connectivity.
teams_workspaces_link.video_id from an uploaded file.content_id and platform_config_ids. Can be immediate or scheduled via scheduled_for.Publish a video:
workspaces_createupload_sessions_create_linkupload_sessions_getcontents_create with video_id from groupingsplatform_configs_create per platformlaunches_create.launches_createInvite a team member:
teams_invite with their email → they accept via teams_invites_acceptConnect a platform (OAuth — TikTok, Instagram, YouTube, Facebook, LinkedIn, Vimeo):
credentials_connect → user opens auth URL in browser → poll credentials_list to confirmConnect a platform (API token — Mux, Vimeo OTT):
credentials_connect_token with platform, token_id, token_secret → connection confirmed immediatelyThese flows are separate from sections 4.1 and 4.2 — neither humans nor agents pay these directly.
Treasury-paid gas. JubJub pays all on-chain gas from the operator wallet — contract deploys, token mints, wallet registrations, publish-ledger writes (recordLaunch), streaming session create/settle/close, and recovery worker retries. Users and agents never pay gas.
Immutable 97/3 revenue split. Streaming revenue is split inside JubJubPaymentRouter on-chain: 97% to the content's rights holders (routed through the content contract and catalogue to token holders), 3% to JubJub treasury. This is enforced in the smart contract and cannot be turned off, renegotiated, or set per content.
Viewer-paid streaming. Viewers watching monetised playback pay $0.005 USDC per minute, capped at $2.00 per session, settled to chain every 60 seconds. This is the viewer's spend, not the agent's or the creator's. USDC flows: viewer → Router → content contract → catalogue → token holders, with the 3% treasury slice diverted along the way.
The agent must never initiate any on-chain operation without surfacing the relevant context to the user. The smart contract may execute autonomously once triggered, so user confirmation must happen before invocation, not after.
video_id field in contents_create comes from upload session groupings ( video_media_id) or media_ingest_url.scheduled_for must include a timezone offset (e.g., 2026-03-15T15:00:00-05:00). Naive datetimes default to UTC.upload_sessions_get until groupings are ready.credentials_connect returns an auth URL — the user must complete OAuth in their browser. The agent polls credentials_list to confirm connection.teams_workspaces_link to associate a workspace with a team.profiles_search, profiles_get, profiles_batch) resolve human-readable emails to profile_id values needed by team and member operations.