{
  "id": "human.request_upload",
  "object": "tool",
  "name": "Ask for files",
  "summary": "A page where a person uploads files.",
  "description": "Creates a hosted page your agent can send to a person (no login) asking them to upload files, with your instructions, accepted types and limits. Files land in this workspace. Collect them with human.wait or human.get_response.",
  "category": "inbox",
  "hosted_by": "Opentools",
  "runtime": "worker",
  "side_effects": true,
  "status": "live",
  "credits": 1,
  "price": "$0.0010",
  "providers": [
    {
      "id": "opentools",
      "name": "Opentools",
      "price": "$0.0010"
    }
  ],
  "mcp_name": "human_request_upload",
  "input_schema": {
    "type": "object",
    "properties": {
      "title": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200,
        "description": "Heading on the page, like “Upload your ID”"
      },
      "instructions": {
        "description": "What to upload and why (Markdown; raw HTML is shown as text)",
        "type": "string",
        "maxLength": 5000
      },
      "accept": {
        "default": [],
        "description": "Accepted types: \"application/pdf\", \"image/*\", \".docx\"… Empty accepts anything",
        "maxItems": 30,
        "type": "array",
        "items": {
          "type": "string",
          "maxLength": 100
        }
      },
      "max_files": {
        "default": 5,
        "description": "Most files they can send",
        "type": "integer",
        "minimum": 1,
        "maximum": 20
      },
      "max_file_mb": {
        "default": 100,
        "description": "Largest file, in MB",
        "type": "integer",
        "minimum": 1,
        "maximum": 100
      },
      "expires_in_hours": {
        "default": 72,
        "description": "Hours until it expires (max 720)",
        "type": "integer",
        "minimum": 1,
        "maximum": 720
      }
    },
    "required": [
      "title"
    ]
  },
  "kind": "tool"
}