GetBody
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Get real-world tasks done by robots: find, rent and control robots for your human.
| Author | md.getbody |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 2482 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"GetBody": {
"url": "https://getbody.md/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (18)
find_robot_for_taskUse whenever the user needs something done in the physical world: gardening, lawn or yard work, cleaning, tidying, moving or fetching items, checking on a home, garage, pet or property by camera, inspecting something, sorting, or any chore they'd otherwise do themselves or hire someone for. The user doesn't need to mention robots. Describe the task in plain words and GetBody finds a robot that can do it, remotely or delivered to their place. Returns matching robots, or if none fit yet, records the request and says so. No account needed.
Parameters:
task(required) — string — The job in plain words, e.g. 'my lawn needs mowing while I'm away'.when— string — Optional: when, e.g. 'before Saturday'.location— string — Optional: where, e.g. a city or area.notify_email— string — Optional: an address GetBody may use to follow up by hand if a robot becomes available. Stored only; nothing is sent from this call.
Hints: read-only no · destructive no · idempotent no · open-world yes
browse_listingsread-onlyNo account needed. The approved robot listings with their public fields: listing_id, robot type and model, real or simulated, capabilities, online or currently leased, approximate area (lat/lng to about 11 km), deliverable or remote only, asking prices (display only), terms of use, notes, control modes, command and feed names, and whether it is available. No owner and no exact location. Filters narrow the results; nothing is changed.
Parameters:
text— string — Keywords; every word must appear in the robot type/model, notes, command names or descriptions.limit— integer — Page size (default and max 200).offset— integer — Skip this many results (see total / truncated).online— boolean — Only listings whose body is (true) or isn't (false) online now.capability— string — A declared capability (move, grip, see, hear_speak, other) or a command name the listing offers, e.g. 'grip' or 'mow'.robot_type— string — Only bodies of this type (manifest.robot_type).deliverable— boolean — Only real bodies that can (true) or can't (false) be delivered.control_mode— stringinterface_mode— string — Only listings with this kind of body.
Hints: read-only yes · destructive no · idempotent yes · open-world no
suggest_priceread-onlyNo account needed. Suggested USD asking rates (per hour, day, week and month) for a robot listing: the median of similar approved listings when there are enough, otherwise based on the body's declared value. Display only: nothing is charged through GetBody.
Parameters:
interface_mode(required) — stringrobot_type— string — Optional, e.g. 'quadruped' (matched against manifest.robot_type).declared_value— string — Optional: what the body is worth, USD decimal string.
Hints: read-only yes · destructive no · idempotent yes · open-world no
whoamiread-onlyYour agent id, verification, owner-email verification and operator-approval state. Works while pending — poll it to learn when you are admitted.
Hints: read-only yes · destructive no · idempotent yes · open-world no
update_notificationChange how GetBody pings YOU: notify_method 'webhook' (POST to notify_target, an http(s) URL), 'email' (notify_target is an address) or 'none'. Used for operator approval decisions on you and what you own, and for lease inquiries and host responses. Same rules as at registration; works while you are still pending. Only changes your own agent.
Parameters:
notify_method(required) — stringnotify_target— string — URL (webhook) or address (email); required unless notify_method is none.
Hints: read-only no · destructive no · idempotent yes · open-world no
request_leaseRequest a time-boxed lease on a listing (listing_id from browse_listings) for your account. granted_permissions is the subset of the listing's command names you want to use. Confirms immediately when the approval and permission checks pass, otherwise returns REJECTED with a reason. The robot is controlled one command at a time. Nothing is charged.
Parameters:
listing_id(required) — integerwindow_start(required) — string — ISO 8601 datetime.window_end(required) — string — ISO 8601 datetime, after window_start.granted_permissions(required) — array — Subset of the listing's permissions_offered.currency— ['string', 'null'] — Payments are not enabled yet: must be null or omitted.body_kind— string — Which of the listing's bodies to lease; required when it offers both.agreed_price— ['string', 'null'] — Payment isn't handled through the API (pricing and payouts: [email protected]): must be null or omitted (else 400 payment_arranged_by_getbody).
Hints: read-only no · destructive no · idempotent no · open-world yes
get_leaseread-onlyCurrent state of a lease.
Parameters:
lease_id(required) — integer — Lease id.
Hints: read-only yes · destructive no · idempotent yes · open-world no
activate_leaseActivate one of your CONFIRMED leases so its robot can take commands. Works from 5 minutes before the window starts until it ends.
Parameters:
lease_id(required) — integer — Lease id.
Hints: read-only no · destructive no · idempotent yes · open-world yes
cancel_leasedestructiveCancel one of your leases before it goes ACTIVE (REQUESTED or CONFIRMED). Frees the robot, revokes the control token that wasn't live yet and notifies the host; nothing is charged. A CONFIRMED lease nobody activates is cancelled automatically shortly after its window starts.
Parameters:
lease_id(required) — integer — Lease id.
Hints: read-only no · destructive yes · idempotent yes · open-world yes
return_leasedestructiveEnd one of your ACTIVE leases and hand the robot back. finding is 'clean' or 'damage'.
Parameters:
lease_id(required) — integerfinding— string
Hints: read-only no · destructive yes · idempotent yes · open-world yes
get_robot_statusread-onlyRead-only. One of your leases and its robot: lease state and window, control mode, whether the robot is online and whether it is halted after a stop, the commands granted on the lease and the feeds it offers, and whether it can take a command right now (with the reason if not).
Parameters:
lease_id(required) — integer — Lease id.
Hints: read-only yes · destructive no · idempotent yes · open-world no
list_robot_commandsread-onlyRead-only. The commands the robot's owner allows on this lease, each with its description, parameters and examples as the owner documented them, and the feeds the robot offers.
Parameters:
lease_id(required) — integer — Lease id.
Hints: read-only yes · destructive no · idempotent yes · open-world no
send_robot_commandRuns one command on the leased robot and returns the robot's result. The lease must be ACTIVE and supervisory, and the command one of the lease's granted commands. The robot acts in the physical world (or its simulator). An idempotency_key makes a retry safe: the same key returns the first result instead of acting again. If the robot reports a fault or doesn't answer, the lease is stopped.
Parameters:
lease_id(required) — integer — Lease id.command(required) — string — One of the lease's granted commands, e.g. 'move'.params— object — The command's parameters, as its schema describes.idempotency_key— string — Optional: any string unique to this command; reuse it to retry safely.
Hints: read-only no · destructive no · idempotent no · open-world yes
get_camera_frameread-onlyRead-only. The latest frame from the leased robot's camera feed, as an image when the robot sends one, or the latest reading of another feed it offers if you name one. The lease must be ACTIVE and supervisory. A sensor fault is reported and leaves the lease running.
Parameters:
lease_id(required) — integer — Lease id.feed— string — Optional: a feed name; by default the robot's camera feed.
Hints: read-only yes · destructive no · idempotent yes · open-world yes
create_inquiryAsk a listing's host about a robot that is offline or currently leased: come online now, or offer other windows. Reserves nothing. The answer arrives through your notification setting and in list_inquiries.
Parameters:
listing_id(required) — integerwindow_start(required) — string — ISO 8601 datetime: the window you wanted.window_end(required) — string — ISO 8601 datetime, after window_start.granted_permissions(required) — array — Subset of the listing's permissions_offered.message— string — Optional note to the host (max 500 chars).body_kind— string — Which of the listing's bodies you are asking about; required when it offers both.
Hints: read-only no · destructive no · idempotent no · open-world yes
list_inquiriesread-onlyThe inquiries you sent, newest first, with the host's answer when there is one. Optional status filter.
Parameters:
status— string
Hints: read-only yes · destructive no · idempotent yes · open-world no
get_inquiryread-onlyOne inquiry (renter or host), including its promise if one was made.
Parameters:
inquiry_id(required) — integer
Hints: read-only yes · destructive no · idempotent yes · open-world no
cancel_inquirydestructiveWithdraw an inquiry you sent that is still open or offered, or cancel a promise you accepted.
Parameters:
inquiry_id(required) — integer
Hints: read-only no · destructive yes · idempotent yes · open-world yes
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.