{
  "name": "Earnbase Human Feedback Agent",
  "version": "2026-02-19",
  "description": "Human Feedback as a Service (HFaaS) for AI agents. Routes paid feedback requests to verified human contributors and returns structured results. Supports RLHF, content moderation, data labeling, and market research. Payment via gasless USDC on Celo (x402). Results typically within hours.",
  "auth": {
    "type": "x402",
    "description": "Payment via X-PAYMENT header using x402 protocol. USDC on Celo (chainId: 42220). Payment is settled on-chain before task is created. No API key or account required.",
    "header": "X-PAYMENT",
    "currency": "USDC",
    "chain": "celo",
    "chainId": 42220,
    "tokenAddress": "0xcebA9300f2b948710d2653dD7B07f33A8B32118C"
  },
  "tools": [
    {
      "name": "submit_feedback_request",
      "description": "Submit a new human feedback task. Payment is settled on-chain via x402 before task is created. Returns taskId and requestId for polling status and results.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "description": "Short title for the task (max 100 chars)"
          },
          "description": {
            "type": "string",
            "description": "An explanation of the title of the task"
          },
          "constraints": {
            "type": "object",
            "properties": {
              "participants": {
                "type": "number",
                "description": "Number of human contributors needed"
              },
              "rewardPerParticipant": {
                "type": "string",
                "description": "USDC reward per contributor (minimum '0.01'). e.g. '0.50'"
              },
              "countryRestriction": {
                "type": "boolean"
              },
              "countries": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "ISO 3-letter country codes (e.g., ['KEN', 'USA'])"
              },
              "ageRestriction": {
                "type": "boolean"
              },
              "minAge": {
                "type": "number"
              },
              "maxAge": {
                "type": "number"
              },
              "genderRestriction": {
                "type": "boolean"
              },
              "gender": {
                "type": "string",
                "enum": [
                  "M",
                  "F"
                ]
              }
            },
            "required": [
              "participants",
              "rewardPerParticipant"
            ]
          },
          "subtasks": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "prompt": {
                  "type": "string",
                  "description": "The question or instruction shown to human contributors for this subtask"
                },
                "type": {
                  "type": "string",
                  "enum": [
                    "MULTIPLE_CHOICE",
                    "TEXT_INPUT",
                    "FILE_UPLOAD",
                    "CHOICE_SELECTION",
                    "RATING"
                  ]
                },
                "required": {
                  "type": "boolean"
                },
                "order": {
                  "type": "number"
                },
                "options": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "fileTypes": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              },
              "required": ["prompt", "type"]
            }
          },
          "requestId": {
            "type": "string",
            "description": "Optional idempotency key — use to safely retry without creating duplicate tasks"
          }
        },
        "required": [
          "title",
          "description",
          "constraints",
          "subtasks"
        ]
      }
    },
    {
      "name": "get_feedback_status",
      "description": "Poll the status of a submitted feedback request. Returns current status (pending, active, completed, cancelled) and participant progress.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "requestId": {
            "type": "string",
            "description": "The taskId or requestId returned from submit_feedback_request"
          }
        },
        "required": [
          "requestId"
        ]
      }
    },
    {
      "name": "get_feedback_results",
      "description": "Retrieve completed human feedback results. Only returns data when status is completed. Returns structured responses with participant data and aggregated results.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "requestId": {
            "type": "string",
            "description": "The taskId or requestId to retrieve results for"
          }
        },
        "required": [
          "requestId"
        ]
      }
    }
  ],
  "prompts": [
    {
      "name": "human_feedback",
      "description": "When human intelligence is needed, get it from human contributors via Earnbase"
    },
    {
      "name": "content_moderation",
      "description": "Submit content for human safety and quality review"
    },
    {
      "name": "rlhf_collection",
      "description": "Collect human preference data for reinforcement learning from human feedback"
    },
    {
      "name": "data_labeling",
      "description": "Send data items to human contributors for annotation and classification"
    }
  ],
  "resources": [
    {
      "uri": "https://earnbase.vercel.app/schemas/feedbackRequest.schema.json",
      "name": "Feedback Request Schema"
    },
    {
      "uri": "https://earnbase.vercel.app/schemas/feedbackResult.schema.json",
      "name": "Feedback Result Schema"
    }
  ],
  "examples": [
    {
      "prompt": "Get human feedback on which of these two product descriptions is more compelling",
      "tool": "submit_feedback_request",
      "input": {
        "title": "Product description preference",
        "description": "Evaluating consumer appeal for new product marketing copy.",
        "constraints": {
          "participants": 10,
          "rewardPerParticipant": "0.25"
        },
        "subtasks": [
          {
            "prompt": "Which product description is more compelling to you as a consumer?",
            "type": "MULTIPLE_CHOICE",
            "options": [
              "Description A: ...",
              "Description B: ..."
            ],
            "required": true
          }
        ]
      }
    },
    {
      "prompt": "Moderate this piece of content for safety",
      "tool": "submit_feedback_request",
      "input": {
        "title": "Content moderation review",
        "description": "Reviewing user-generated content for community safety guidelines.",
        "constraints": {
          "participants": 3,
          "rewardPerParticipant": "0.10"
        },
        "subtasks": [
          {
            "prompt": "Does this content violate community safety guidelines?",
            "type": "CHOICE_SELECTION",
            "options": [
              "Safe",
              "Unsafe - violence",
              "Unsafe - hate speech",
              "Unsafe - other"
            ],
            "required": true
          }
        ]
      }
    },
    {
      "prompt": "Collect RLHF preference data between two AI responses",
      "tool": "submit_feedback_request",
      "input": {
        "title": "AI response preference",
        "description": "Comparing AI response quality for model refinement.",
        "constraints": {
          "participants": 5,
          "rewardPerParticipant": "0.20"
        },
        "subtasks": [
          {
            "prompt": "Which AI response is more helpful and accurate?",
            "type": "MULTIPLE_CHOICE",
            "options": [
              "Response A",
              "Response B",
              "Both equally good",
              "Neither is good"
            ],
            "required": true
          }
        ]
      }
    }
  ],
  "integration": {
    "note": "No API key or account required. Payment is automatic via x402 USDC on Celo. Total cost = (participants × rewardPerParticipant) + 1% platform fee."
  }
}