# Adopt a pet (test) > A test form on the Cube embed demo: invent a pet. Every answer is made up; no real person or data is involved. This is a test form for trying Cube. Make up any answers you like. This is a form you can fill in for a person without opening a browser. Its fields are `animal`, `pet_name`, `snack`, `cute` (`animal`, `pet_name`, `snack`, `cute` required). What you send counts at once, as if your person had submitted it themselves. **Only send what your person told you. Ask them for any required answer you do not have, and never tick a consent box or answer a demographic question for them unless they told you to.** ## How to fill it 1. **If you can send HTTP requests:** `POST https://ui.usecube.io/f/test-pet` with a JSON body `{"answers": {...}}`. Details below. 2. **If you have the Cube MCP connector** (`https://ui.usecube.io/mcp`): call `submit_form` with `id: "test-pet"` and `answers`; or `prefill_link` with `id` and `answers` to get the link for your person (a file cannot ride in it; they attach it on the page). 3. **If you can't do either (a chatbot):** give your person this link with the answers filled in, each one URL-encoded (lists and objects as JSON). They check it and press Submit themselves: ``` https://ui.usecube.io/f/test-pet#animal=...&pet_name=...&snack=...&cute=... ``` For example: https://ui.usecube.io/f/test-pet#animal=...&pet_name=Jane%20Doe&snack=Apples&cute=9 ## Fields - **animal** (string, up to 200 characters, required): Any animal, made up is fine. - **pet_name** (string, up to 200 characters, required): Any name for the pet. - **snack** (string, one of "Apples", "Fish", "Cookies", "Leaves", required): Pick one. - **cute** (integer 0 to 10, 0 = "Not very", 10 = "Extremely", required): Any score. ## Submit over HTTP `POST https://ui.usecube.io/f/test-pet` with `Content-Type: application/json`: ```json { "answers": { "animal": "...", "pet_name": "Jane Doe", "snack": "Apples", "cute": 9 } } ``` ```sh curl -X POST https://ui.usecube.io/f/test-pet \ -H 'Content-Type: application/json' \ -d '{"answers":{"animal":"...","pet_name":"Jane Doe","snack":"Apples","cute":9}}' ``` A success is `201 Created`: ```json { "id": "s_...", "status": "completed", "receipt_url": "https://ui.usecube.io/s/..." } ``` `status` uses A2A's task states: `completed` means it is in and counts, as if your person had pressed Submit. `receipt_url` is your person's own view of what was sent; give it to them. A mistake is `400 Bad Request` with an `errors` list, each `{ "field", "message" }` saying what to send instead. Fix those answers and send again. `429 Too Many Requests` means wait the `Retry-After` seconds. ## Other formats - [JSON Schema of the answers](https://ui.usecube.io/f/test-pet.json) - [This page as Markdown](https://ui.usecube.io/f/test-pet.md) - MCP (Streamable HTTP): `https://ui.usecube.io/mcp`, tools `list_forms`, `read_form`, `submit_form`, `prefill_link`, `draft_form`, `list_templates`, `get_receipt`; the form owner's server `https://ui.usecube.io/mcp/owner` (signed in with OAuth) also has `create_form`, `update_form`, `delete_form`, `list_my_forms`, `list_answers`, `get_answer`, `get_answer_file`, `export_answers`, `delete_answer`, `get_me`, `sign_out`, `list_integrations`, `connect_integration`, `edit_webhook`, `send_integration_test`, `disconnect_integration`. - In a browser with WebMCP, the page's form is the tool `adopt_a_test_pet`.