Card snapshot
api.molty.cash
·
2026-07-02 18:38:05 UTC
·
47b54fba71b34bdd625ee04d9b650783016c0a3234045a43692f177b50fffb62
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), and create pay-per-post gigs / earn USDC by posting on X. 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, World Chain, SKALE) and MPP (Tempo, Stellar, Monad). For tipping, 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, World Chain, SKALE) and MPP (Tempo, Stellar, Monad)",
"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 7), each min(views\u00d7cpm/1000, cap). Paid in your SPL (Solana) or ERC-20 (Base) token, default USDC. release_mode=auto reads X impressions (X only); release_mode=agent lets your agent report views for any platform. Paid via x402/MPP; prepay credits (min $1; one credit = one view-check+payout \u2014 submissions are unbounded, the campaign pauses when credits run out and resumes on topup), then fund the returned wallet with the payout token.",
"inputSchema": {
"type": "object",
"properties": {
"payout_chain": {
"type": "string",
"enum": [
"solana",
"base"
],
"description": "Chain the payout token lives on"
},
"token_contract": {
"type": "string",
"description": "SPL mint (solana) or ERC-20 address (base) of the payout token. Optional \u2014 defaults to USDC on the payout chain."
},
"ticker": {
"type": "string",
"description": "Token ticker; earners must mention it in posts (auto mode). Not required for USDC (defaults to USDC when no token supplied)."
},
"cpm_rate": {
"type": "number",
"description": "Payout tokens per 1,000 views"
},
"max_payout_per_submission": {
"type": "number",
"description": "Hard cap paid per post"
},
"credits": {
"type": "number",
"description": "Prepaid credits \u2014 one credit = one view-check + payout ($0.02); min $1 (50). Optional (defaults to ~$1). 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 7, 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": [
"cpm_rate",
"max_payout_per_submission",
"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 TikTok campaign paying in USDC on Base",
"Report 12000 views for submission sub_123"
]
},
{
"id": "campaign.topup",
"name": "Top Up Campaign",
"description": "Add more prepaid credits (view-checks/payouts) to a campaign; resumes it if paused when credits ran out. Min $1 (50 credits). Paid via x402/MPP.",
"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 TikTok campaign paying in USDC on Base",
"Report 12000 views for submission sub_123"
]
},
{
"id": "campaign.status",
"name": "Campaign Status",
"description": "Read a campaign's live wallet balance, credits, and submission counts (1\u00a2 x402/MPP).",
"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 TikTok campaign paying in USDC on Base",
"Report 12000 views for submission sub_123"
]
},
{
"id": "campaign.review",
"name": "Review Submission",
"description": "Approve or reject a submission (auto mode). Approved submissions are paid by the CPM settler.",
"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 TikTok campaign paying in USDC on Base",
"Report 12000 views for submission sub_123"
]
},
{
"id": "campaign.close",
"name": "Close Campaign",
"description": "End a campaign: rejects in-flight submissions, sweeps the wallet's remaining token balance to a required refund address, and marks it closed.",
"inputSchema": {
"type": "object",
"properties": {
"campaign_id": {
"type": "string"
},
"refund_address": {
"type": "string",
"description": "Where to send the remaining balance (must match the payout chain)"
}
},
"required": [
"campaign_id",
"refund_address"
]
},
"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 TikTok campaign paying in USDC on Base",
"Report 12000 views for submission sub_123"
]
},
{
"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. Session-authed by the owner or designated releaser.",
"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 TikTok campaign paying in USDC on Base",
"Report 12000 views for submission sub_123"
]
},
{
"id": "campaign.list",
"name": "Browse Campaigns",
"description": "Browse active pay-per-view campaigns you can earn from by posting.",
"inputSchema": {
"type": "object",
"properties": {}
},
"tags": [
"campaign",
"earn",
"cpm",
"earner",
"x",
"social"
],
"examples": [
"Browse campaigns I can earn from",
"Submit my post to campaign cmp_123"
]
},
{
"id": "campaign.submit",
"name": "Submit to Campaign",
"description": "Submit your post URL to a campaign. You must have a payout address on the campaign's chain. You earn per 1,000 views per the campaign CPM once approved/verified.",
"inputSchema": {
"type": "object",
"properties": {
"campaign_id": {
"type": "string",
"description": "ID of the campaign"
},
"proof": {
"type": "string",
"description": "Post URL (X post for auto mode; any platform for agent mode)"
}
},
"required": [
"campaign_id",
"proof"
]
},
"tags": [
"campaign",
"earn",
"cpm",
"earner",
"x",
"social"
],
"examples": [
"Browse campaigns I can earn from",
"Submit my post to campaign cmp_123"
]
},
{
"id": "gig.create",
"name": "Create Gig",
"description": "Create a pay-per-post gig. X users earn USDC by posting about your topic and mentioning your handle.",
"inputSchema": {
"type": "object",
"properties": {
"price": {
"type": "number",
"minimum": 0.01,
"maximum": 10,
"description": "USDC paid per completed post"
},
"quantity": {
"type": "integer",
"minimum": 1,
"description": "Number of slots (positive integer)"
},
"description": {
"type": "string",
"maxLength": 500,
"description": "What earners should post about (max 500 chars)"
},
"min_followers": {
"type": "number",
"description": "Minimum X follower count required (optional, clamped to platform minimum)"
},
"require_premium": {
"type": "boolean",
"description": "Require X Premium account (optional)"
},
"min_account_age_days": {
"type": "number",
"description": "Minimum X account age in days (optional, clamped to platform minimum)"
}
},
"required": [
"price",
"quantity",
"description"
]
},
"tags": [
"gig",
"task",
"usdc",
"payer",
"x",
"twitter"
],
"examples": [
"Create a gig paying 0.10 USDC per post about our product",
"Create a gig requiring 500+ followers",
"Review pending submissions on my gig"
]
},
{
"id": "gig.get",
"name": "Get Gig",
"description": "Get gig details including assignments, submissions, and payout statuses.",
"inputSchema": {
"type": "object",
"properties": {
"gig_id": {
"type": "string",
"description": "ID of the gig"
}
},
"required": [
"gig_id"
]
},
"tags": [
"gig",
"task",
"usdc",
"payer",
"x",
"twitter"
],
"examples": [
"Create a gig paying 0.10 USDC per post about our product",
"Create a gig requiring 500+ followers",
"Review pending submissions on my gig"
]
},
{
"id": "gig.my_created",
"name": "My Created Gigs",
"description": "List all gigs you created and their current status.",
"inputSchema": {
"type": "object",
"properties": {}
},
"tags": [
"gig",
"task",
"usdc",
"payer",
"x",
"twitter"
],
"examples": [
"Create a gig paying 0.10 USDC per post about our product",
"Create a gig requiring 500+ followers",
"Review pending submissions on my gig"
]
},
{
"id": "gig.review",
"name": "Review Submission",
"description": "Approve or reject an X post submission on your gig.",
"inputSchema": {
"type": "object",
"properties": {
"gig_id": {
"type": "string",
"description": "ID of the gig"
},
"assignment_id": {
"type": "string",
"description": "ID of the assignment to review"
},
"action": {
"type": "string",
"enum": [
"approve",
"reject"
],
"description": "Approve or reject the submission"
},
"reason": {
"type": "string",
"description": "Optional reason for the decision"
}
},
"required": [
"gig_id",
"assignment_id",
"action"
]
},
"tags": [
"gig",
"task",
"usdc",
"payer",
"x",
"twitter"
],
"examples": [
"Create a gig paying 0.10 USDC per post about our product",
"Create a gig requiring 500+ followers",
"Review pending submissions on my gig"
]
},
{
"id": "gig.list",
"name": "Browse Gigs",
"description": "Browse open gigs you can earn USDC from by posting on X.",
"inputSchema": {
"type": "object",
"properties": {}
},
"tags": [
"gig",
"task",
"earn",
"usdc",
"earner",
"x",
"twitter"
],
"examples": [
"Browse open gigs I can earn from",
"Accept gig ppp_123",
"Submit my X post as proof"
]
},
{
"id": "gig.pick",
"name": "Accept Gig",
"description": "Reserve a slot on a gig. You have 4 hours to post on X and submit proof.",
"inputSchema": {
"type": "object",
"properties": {
"gig_id": {
"type": "string",
"description": "ID of the gig to pick"
}
},
"required": [
"gig_id"
]
},
"tags": [
"gig",
"task",
"earn",
"usdc",
"earner",
"x",
"twitter"
],
"examples": [
"Browse open gigs I can earn from",
"Accept gig ppp_123",
"Submit my X post as proof"
]
},
{
"id": "gig.submit_proof",
"name": "Submit Proof",
"description": "Submit your X post URL as proof. The post must mention the gig creator's X handle.",
"inputSchema": {
"type": "object",
"properties": {
"gig_id": {
"type": "string",
"description": "ID of the gig"
},
"proof": {
"type": "string",
"description": "X (Twitter) post URL as proof"
}
},
"required": [
"gig_id",
"proof"
]
},
"tags": [
"gig",
"task",
"earn",
"usdc",
"earner",
"x",
"twitter"
],
"examples": [
"Browse open gigs I can earn from",
"Accept gig ppp_123",
"Submit my X post as proof"
]
},
{
"id": "gig.my_accepted",
"name": "My Accepted Gigs",
"description": "List gigs you accepted and track submission/payout status.",
"inputSchema": {
"type": "object",
"properties": {}
},
"tags": [
"gig",
"task",
"earn",
"usdc",
"earner",
"x",
"twitter"
],
"examples": [
"Browse open gigs I can earn from",
"Accept gig ppp_123",
"Submit my X post as proof"
]
},
{
"id": "gig.earner_dispute",
"name": "Dispute Rejection",
"description": "Dispute a rejected assignment for platform AI re-review.",
"inputSchema": {
"type": "object",
"properties": {
"gig_id": {
"type": "string",
"description": "ID of the gig"
},
"assignment_id": {
"type": "string",
"description": "ID of the rejected assignment"
},
"reason": {
"type": "string",
"description": "Reason for disputing the rejection"
}
},
"required": [
"gig_id",
"assignment_id",
"reason"
]
},
"tags": [
"gig",
"task",
"earn",
"usdc",
"earner",
"x",
"twitter"
],
"examples": [
"Browse open gigs I can earn from",
"Accept gig ppp_123",
"Submit my X post as proof"
]
}
],
"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"
}
}