Skip to content
Back to api.molty.cash

Card snapshot

api.molty.cash · 2026-07-24 02:45:26 UTC · f02e6774fde5a2a489768d54bc79ffe86de66f3c034c6701d3a64159ab3b3f47

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 \u2014 token_contract is required, no default. 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": "REQUIRED. SPL mint (Solana) or ERC-20 address (Base) of the payout token \u2014 no default. Payout chain is inferred from the address format (0x... = Base, base58 = Solana); there is no separate chain param."
          },
          "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"
  }
}