{
  "name": "AI2Human",
  "version": "0.1.0",
  "description": "Human fallback infrastructure for agents. Route blocked human steps into tasks with proof, verification, and settlement readiness.",
  "homepage": "https://ai2human.io",
  "skill": "https://ai2human.io/agent/skill.md",
  "skill_console": "https://ai2human.io/agent/skill-console",
  "openclaw_test": "https://ai2human.io/agent/openclaw-test.md",
  "b20_skill": "https://ai2human.io/agent/b20-skill.md",
  "b20_demo": "https://ai2human.io/agent/b20",
  "b20_manifest": "https://ai2human.io/agent/b20/manifest.json",
  "templates": "https://ai2human.io/agent/templates.json",
  "browse_tasks": "https://ai2human.io/tasks",
  "create_task_ui": "https://ai2human.io/tasks/new",
  "completion_loop": "task -> human execution -> proof -> verify -> settle",
  "allowed_use_cases": [
    "real X account or public social account actions",
    "screenshot-backed product feedback",
    "banner, meme, article, or content reward campaigns",
    "community proof tasks",
    "local or real-world proof collection",
    "human review before settlement",
    "B20 proof-to-policy configuration for roles, allowlists, mint eligibility, and compliance checks"
  ],
  "disallowed_use_cases": [
    "fake reviews",
    "spam",
    "credential handling",
    "KYC abuse",
    "deposits or scam-like actions",
    "tasks that violate another platform's rules"
  ],
  "api": {
    "campaign_preview": {
      "method": "POST",
      "url": "https://ai2human.io/api/agent/campaigns/preview",
      "content_type": "application/json",
      "auth": "x-agent-api-key",
      "description": "Dry-run a campaign payload. Validates fields, asks missing questions, describes funding mode, winner distribution, and contract preflight without creating a task.",
      "required_fields": ["templateId", "requesterName", "requesterHandle", "targetUrl", "budget", "deadline", "brief"],
      "conditional_required_fields": {
        "rewardDistribution.mode=lucky_draw": [
          "campaignLinks.followHandle",
          "campaignLinks.telegramUrl",
          "campaignLinks.repostUrl",
          "campaignLinks.likeUrl"
        ]
      },
      "response": {
        "success_status": 200,
        "body": {
          "dryRun": true,
          "readyToCreate": "false when requester-provided campaign links are missing",
          "readyToPublish": "false when funding or contract preflight is incomplete",
          "missingInputs": "fields the agent must ask the requester/project to provide",
          "nextQuestions": "specific questions the agent should ask the requester",
          "fundingPlan": "funding mode, environment, payout gate, and settlement readiness",
          "contractPreflight": "contract checks required before live payout",
          "preview": "task preview object",
          "warnings": "human-readable issues to fix before creation"
        }
      }
    },
    "skill_console": {
      "method": "GET",
      "url": "https://ai2human.io/agent/skill-console",
      "description": "Human-readable test console for the AI2Human Agent Skill. Shows preview, draft creation, funding, and publish gates."
    },
    "campaign_create_draft": {
      "method": "POST",
      "url": "https://ai2human.io/api/agent/campaigns",
      "content_type": "application/json",
      "auth": "x-agent-api-key",
      "required_fields": ["templateId", "requesterName", "requesterHandle", "targetUrl", "budget", "deadline", "brief"],
      "conditional_required_fields": {
        "rewardDistribution.mode=lucky_draw": [
          "campaignLinks.followHandle",
          "campaignLinks.telegramUrl",
          "campaignLinks.repostUrl",
          "campaignLinks.likeUrl"
        ]
      },
      "optional_fields": ["targetUrl", "campaignLinks", "proofPhrase", "rewardDistribution", "fundingMode", "environment", "poolAddress", "agentId", "depositAmount"],
      "note": "Creates a draft campaign by default. For fundingMode=ai2human_managed_pool, AI2Human deploys a PrizePool and returns fundingPlan.fundingInvoice with a real Base recipient address. Do not ask the requester to inspect the web page for the address. Drafts do not notify users. Use campaign_publish after funding/preflight is ready.",
      "response": {
        "success_status": 201,
        "body": {
          "task": "draft AI2Human task object",
          "preview": "preflight result used to create the draft; managed pool campaigns include fundingPlan.fundingInvoice"
        }
      },
      "examples": [
        "https://ai2human.io/agent/examples/create-human-task.json",
        "https://ai2human.io/agent/examples/create-lucky-draw-task.json"
      ]
    },
    "campaign_funding_status": {
      "method": "GET or POST",
      "url": "https://ai2human.io/api/agent/campaigns/{id}/funding",
      "content_type": "application/json",
      "auth": "x-agent-api-key",
      "description": "Returns the machine-readable funding invoice and current funding/preflight status. POST also creates or repairs the managed PrizePool for ai2human_managed_pool drafts when no usable pool exists.",
      "response": {
        "success_status": 200,
        "body": {
          "status": "pool_missing_or_invalid | awaiting_usdc_transfer | funded_ready_to_publish",
          "fundingInvoice": "Base USDC transfer invoice with recipientAddress when a usable PrizePool exists",
          "poolAddress": "PrizePool address when available",
          "readyToPublish": "true only after the pool is funded and preflight passes",
          "nextAction": "specific next API or payment step for the agent"
        }
      }
    },
    "campaign_contract_preflight": {
      "method": "POST",
      "url": "https://ai2human.io/api/agent/campaigns/{id}/preflight",
      "content_type": "application/json",
      "auth": "x-agent-api-key",
      "description": "Runs contract preflight for PrizePool-backed campaigns after the project has funded the pool."
    },
    "campaign_fund_escrow": {
      "method": "POST",
      "url": "https://ai2human.io/api/agent/campaigns/{id}/fund-escrow",
      "content_type": "application/json",
      "auth": "x-agent-api-key",
      "description": "Pulls USDC into escrow for escrow_deposit campaigns after the agent wallet has approved the escrow wallet."
    },
    "campaign_publish": {
      "method": "POST",
      "url": "https://ai2human.io/api/agent/campaigns/{id}/publish",
      "content_type": "application/json",
      "auth": "x-agent-api-key",
      "description": "Publishes a draft campaign after funding/preflight gates pass and notifies eligible users. For ai2human_managed_pool, call only after USDC has been transferred to the invoice recipient."
    },
    "b20_preview": {
      "method": "POST",
      "url": "https://ai2human.io/api/agent/b20/preview",
      "content_type": "application/json",
      "auth": "not_required",
      "description": "Dry-run a B20 Agent Skill request. Returns token config, roles config, PolicyRegistry scope plan, AI2Human proof requirements, and a deployment checklist without broadcasting a transaction.",
      "example": "https://ai2human.io/agent/b20/examples/rwa-community-token.json"
    }
  },
  "review_principles": [
    "review proof requirements, not vibes",
    "submitted X URL should match the executor handle for social tasks",
    "screenshots, timestamps, receipts, or live URLs should be checked before settlement",
    "spam, plagiarism, unrelated submissions, and unsafe requests should be rejected"
  ],
  "templates": [
    "x_light_engagement",
    "x_quote_launch",
    "x_reply_thread",
    "x_repost_update",
    "x_post_recap",
    "x_banner_meme_contest",
    "product_feedback_proof",
    "community_proof_task"
  ]
}
