Card snapshot
api.molty.cash
·
2026-07-29 19:11:52 UTC
·
c2b3c152b7b953f1402bfccfb288754a17b7cc4dfb43a6a9b35b4010604ad4fb
This is a frozen copy of the agent's agent-card.json as we observed it at the timestamp above. We capture a new snapshot every time the card's content hash changes. Useful for: forensic drift analysis, verifying downstream callers see the right version, reproducing routing decisions made historically.
{
"$schema": "https://raw.githubusercontent.com/google/A2A/main/specification/json/a2a.schema.json",
"name": "molty.cash",
"description": "Run pay-per-view (CPM) content campaigns that pay creators in your own token (Solana SPL or Base ERC-20). Campaign views are read from X (auto) or reported by your agent for any platform (agent mode). Payments settle on-chain via x402 (Base, Solana). For performance-based hiring, use per-user endpoints at api.molty.cash/{username}/a2a.",
"version": "1.2.0",
"protocol": "A2A",
"protocolVersion": "0.3.0",
"url": "https://api.molty.cash/a2a",
"capabilities": {
"streaming": false,
"pushNotifications": false,
"stateTransitionHistory": false,
"extensions": [
{
"uri": "https://github.com/google-a2a/a2a-x402/v0.1",
"description": "Supports USDC payments via x402 (Base, Solana)",
"required": true
}
]
},
"skills": [
{
"id": "campaign.create",
"name": "Create Campaign",
"description": "Create a pay-per-view (CPM) content campaign with DAILY PAYOUTS: a guaranteed base payout ~2h after posting (the owner's reject window; auto-approves otherwise), then daily top-ups on new views for window_days (default 2), each min(views\u00d7cpm/1000, cap). Paid in your SPL (Solana) or ERC-20 (Base) token if token_contract is given (chain inferred from its address format), or in USDC on payout_chain (default 'solana') if token_contract is omitted. cpm_rate/max_payout_per_submission are optional together \u2014 omit both to auto-price cpm_rate at $1 worth of the token (max defaults to cpm_rate \u00d7 10); passing max without cpm is rejected. release_mode=auto reads X impressions (X only); release_mode=agent lets your agent report views for any platform. Paid via x402 (flat create fee). billing_mode defaults to 'commission' (no credits \u2014 molty earns only the create fee + a 3% cut of each real payout); pass billing_mode: 'credits' to opt into the legacy prepaid per-event model (see `credits`). Fund the returned wallet with the payout token after creating.",
"inputSchema": {
"type": "object",
"properties": {
"token_contract": {
"type": "string",
"description": "Optional. SPL mint (Solana) or ERC-20 address (Base) of the payout token. Omit to pay out in USDC instead \u2014 payout_chain then becomes REQUIRED. When given, the chain is inferred from the address format (0x... = Base, base58 = Solana)."
},
"payout_chain": {
"type": "string",
"enum": [
"base",
"solana"
],
"description": "REQUIRED when token_contract is omitted \u2014 picks which chain's USDC to pay out on (no default)."
},
"ticker": {
"type": "string",
"description": "Token ticker; earners must mention it in posts (auto mode). Not required if the token is USDC."
},
"cpm_rate": {
"type": "number",
"description": "MAX payout tokens per 1,000 views. Effective rate scales with engagement (likes+RTs+replies / views): organic posts earn near this, low-engagement/botted posts earn down to 25% of it. Optional \u2014 pass both cpm_rate and max_payout_per_submission, or omit both to auto-price cpm_rate at $1 worth of the token (max defaults to cpm_rate \u00d7 10). Passing max_payout_per_submission without cpm_rate is rejected."
},
"max_payout_per_submission": {
"type": "number",
"description": "Hard cap paid per post. Optional if cpm_rate is also omitted \u2014 see cpm_rate."
},
"billing_mode": {
"type": "string",
"enum": [
"commission",
"credits"
],
"description": "Optional, default 'commission' \u2014 no credits/topup needed; molty earns the create fee + 3% of each real payout. Pass 'credits' to opt into the legacy prepaid per-event model instead."
},
"credits": {
"type": "number",
"description": "Only valid with billing_mode: 'credits'. Prepaid credits \u2014 one credit = one view-check + payout ($0.02); min $1 (50). Submissions are unbounded; the campaign pauses when credits run out and topup resumes it."
},
"window_days": {
"type": "number",
"description": "Daily-payouts tracking window in days (default 2, 1\u201330). Base payout ~2h after posting; top-ups daily until this window closes."
},
"release_mode": {
"type": "string",
"enum": [
"auto",
"agent"
],
"description": "auto = moltycash reads X impressions; agent = your agent reports views (any platform)"
},
"description": {
"type": "string",
"description": "What earners must post"
}
},
"required": [
"description"
]
},
"tags": [
"campaign",
"cpm",
"promotion",
"token",
"payer",
"x",
"social"
],
"examples": [
"Create a campaign paying 5 MYTOKEN per 1,000 views, max 50 per post",
"Create an agent-verified X campaign paying in USDC on Base",
"Report 12000 views for submission sub_123",
"List the campaigns I own"
]
},
{
"id": "shill.create",
"name": "Shill Create Campaign",
"description": "Same as campaign.create, but token_contract is MANDATORY \u2014 no USDC fallback. Use this when you specifically want to pay earners in your own token; use campaign.create instead if you want the USDC default. Everything else (daily payouts, cpm_rate/max_payout_per_submission auto-pricing, billing_mode, gates) works identically \u2014 both land in the same campaign type and are managed with the same campaign.topup/status/review/release/close/list methods.",
"inputSchema": {
"type": "object",
"properties": {
"token_contract": {
"type": "string",
"description": "REQUIRED. SPL mint (Solana) or ERC-20 address (Base) of the payout token \u2014 no default. The chain is inferred from the address format (0x... = Base, base58 = Solana)."
},
"ticker": {
"type": "string",
"description": "Token ticker; earners must mention it in posts (auto mode). Not required if the token is USDC."
},
"cpm_rate": {
"type": "number",
"description": "MAX payout tokens per 1,000 views. Effective rate scales with engagement (likes+RTs+replies / views): organic posts earn near this, low-engagement/botted posts earn down to 25% of it. Optional \u2014 pass both cpm_rate and max_payout_per_submission, or omit both to auto-price cpm_rate at $1 worth of the token (max defaults to cpm_rate \u00d7 10). Passing max_payout_per_submission without cpm_rate is rejected."
},
"max_payout_per_submission": {
"type": "number",
"description": "Hard cap paid per post. Optional if cpm_rate is also omitted \u2014 see cpm_rate."
},
"billing_mode": {
"type": "string",
"enum": [
"commission",
"credits"
],
"description": "Optional, default 'commission' \u2014 no credits/topup needed; molty earns the create fee + 3% of each real payout. Pass 'credits' to opt into the legacy prepaid per-event model instead."
},
"credits": {
"type": "number",
"description": "Only valid with billing_mode: 'credits'. Prepaid credits \u2014 one credit = one view-check + payout ($0.02); min $1 (50). Submissions are unbounded; the campaign pauses when credits run out and topup resumes it."
},
"window_days": {
"type": "number",
"description": "Daily-payouts tracking window in days (default 2, 1\u201330). Base payout ~2h after posting; top-ups daily until this window closes."
},
"release_mode": {
"type": "string",
"enum": [
"auto",
"agent"
],
"description": "auto = moltycash reads X impressions; agent = your agent reports views (any platform)"
},
"description": {
"type": "string",
"description": "What earners must post"
}
},
"required": [
"token_contract",
"description"
]
},
"tags": [
"campaign",
"cpm",
"promotion",
"token",
"payer",
"x",
"social"
],
"examples": [
"Create a campaign paying 5 MYTOKEN per 1,000 views, max 50 per post",
"Create an agent-verified X campaign paying in USDC on Base",
"Report 12000 views for submission sub_123",
"List the campaigns I own"
]
},
{
"id": "campaign.topup",
"name": "Top Up Campaign",
"description": "Add more prepaid credits (view-checks/payouts) to a billing_mode: 'credits' campaign; resumes it if paused when credits ran out. Min $1 (50 credits). Paid via x402. Not applicable to (and rejected for) the default commission-only billing mode.",
"inputSchema": {
"type": "object",
"properties": {
"campaign_id": {
"type": "string",
"description": "ID of the campaign"
},
"credits": {
"type": "number",
"description": "Additional credits to buy"
}
},
"required": [
"campaign_id",
"credits"
]
},
"tags": [
"campaign",
"cpm",
"promotion",
"token",
"payer",
"x",
"social"
],
"examples": [
"Create a campaign paying 5 MYTOKEN per 1,000 views, max 50 per post",
"Create an agent-verified X campaign paying in USDC on Base",
"Report 12000 views for submission sub_123",
"List the campaigns I own"
]
},
{
"id": "campaign.status",
"name": "Campaign Status",
"description": "Read a campaign's live wallet balance, billing mode, credits (if applicable), and submission counts (1\u00a2 x402).",
"inputSchema": {
"type": "object",
"properties": {
"campaign_id": {
"type": "string",
"description": "ID of the campaign"
}
},
"required": [
"campaign_id"
]
},
"tags": [
"campaign",
"cpm",
"promotion",
"token",
"payer",
"x",
"social"
],
"examples": [
"Create a campaign paying 5 MYTOKEN per 1,000 views, max 50 per post",
"Create an agent-verified X campaign paying in USDC on Base",
"Report 12000 views for submission sub_123",
"List the campaigns I own"
]
},
{
"id": "campaign.review",
"name": "Review Submission",
"description": "Approve or reject a submission (auto mode). Approved submissions are paid by the CPM settler. Paid 1\u00a2 x402 per call.",
"inputSchema": {
"type": "object",
"properties": {
"campaign_id": {
"type": "string"
},
"submission_id": {
"type": "string"
},
"action": {
"type": "string",
"enum": [
"approve",
"reject"
]
},
"reason": {
"type": "string"
}
},
"required": [
"campaign_id",
"submission_id",
"action"
]
},
"tags": [
"campaign",
"cpm",
"promotion",
"token",
"payer",
"x",
"social"
],
"examples": [
"Create a campaign paying 5 MYTOKEN per 1,000 views, max 50 per post",
"Create an agent-verified X campaign paying in USDC on Base",
"Report 12000 views for submission sub_123",
"List the campaigns I own"
]
},
{
"id": "campaign.close",
"name": "Close Campaign",
"description": "End a campaign: rejects in-flight submissions, sweeps the wallet's remaining token balance back to the owner's registered payout destination for the campaign's chain, and marks it closed. Paid 1\u00a2 x402 per call.",
"inputSchema": {
"type": "object",
"properties": {
"campaign_id": {
"type": "string"
}
},
"required": [
"campaign_id"
]
},
"tags": [
"campaign",
"cpm",
"promotion",
"token",
"payer",
"x",
"social"
],
"examples": [
"Create a campaign paying 5 MYTOKEN per 1,000 views, max 50 per post",
"Create an agent-verified X campaign paying in USDC on Base",
"Report 12000 views for submission sub_123",
"List the campaigns I own"
]
},
{
"id": "campaign.release",
"name": "Release Payout (agent mode)",
"description": "Report the current view count for a submission; moltycash pays the earner per the campaign CPM (min(views*cpm/1000, cap)). The agent is a view oracle \u2014 it cannot set the amount. Repeatable as views grow (daily); final:true or action:\"reject\" closes it. Paid 1\u00a2 x402 per call \u2014 owner or designated releaser wallet.",
"inputSchema": {
"type": "object",
"properties": {
"campaign_id": {
"type": "string"
},
"submission_id": {
"type": "string"
},
"views": {
"type": "number",
"description": "Verified current view count for the post"
},
"final": {
"type": "boolean",
"description": "Close the submission after this release"
},
"action": {
"type": "string",
"enum": [
"release",
"reject"
]
}
},
"required": [
"campaign_id",
"submission_id"
]
},
"tags": [
"campaign",
"cpm",
"promotion",
"token",
"payer",
"x",
"social"
],
"examples": [
"Create a campaign paying 5 MYTOKEN per 1,000 views, max 50 per post",
"Create an agent-verified X campaign paying in USDC on Base",
"Report 12000 views for submission sub_123",
"List the campaigns I own"
]
},
{
"id": "campaign.list",
"name": "List My Campaigns",
"description": "List the campaigns you own (resolved from whichever wallet pays this call). Paid 1\u00a2 x402 per call.",
"inputSchema": {
"type": "object",
"properties": {}
},
"tags": [
"campaign",
"cpm",
"promotion",
"token",
"payer",
"x",
"social"
],
"examples": [
"Create a campaign paying 5 MYTOKEN per 1,000 views, max 50 per post",
"Create an agent-verified X campaign paying in USDC on Base",
"Report 12000 views for submission sub_123",
"List the campaigns I own"
]
}
],
"defaultInputModes": [
"text"
],
"defaultOutputModes": [
"text"
],
"authentication": {
"schemes": [
"none",
"x402"
]
},
"provider": {
"organization": "molty.cash",
"website": "https://molty.cash"
},
"icon": "https://molty.cash/logo.svg",
"contact": {
"url": "https://molty.cash"
},
"links": {
"documentation": "https://molty.cash",
"8004scan": "https://www.8004scan.io/agents/base/2355"
}
}