{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_h3kwu95yszc8","handle":"getbody","url":"https://wellknown.network/agents/getbody","links":{"self":"https://wellknown.network/agents/getbody/record.json","html":"https://wellknown.network/agents/getbody","markdown":"https://wellknown.network/agents/getbody/record.md","api":"https://wellknown.network/api/v1/agents/getbody","status":"https://wellknown.network/api/v1/agents/getbody/status","claim":"https://wellknown.network/agents/getbody/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/getbody/claim.json","badge":"https://wellknown.network/agents/getbody/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/getbody/history","tools":"https://wellknown.network/api/v1/agents/getbody/tools"},"ard":{"identifier":"urn:air:getbody.md:server:getbody","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"GetBody","summary":"Get real-world tasks done by robots: find, rent and control robots for your human.","description":"Get real-world tasks done by robots: find, rent and control robots for your human.","publisher":{"name":"md.getbody","url":null},"homepage":"https://getbody.md","repository":null,"version":"1.0.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://getbody.md/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-10-11T06:18:07.181034Z","publishedAt":"2026-10-11T06:18:07.181034Z","registryName":"md.getbody/getbody"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"communication.notifications","name":"Notifications","confidence":1,"provenance":"derived"},{"slug":"security.identity","name":"Identity & Access","confidence":1,"provenance":"derived"},{"slug":"dev.terminal","name":"Terminal & Shell","confidence":0.525,"provenance":"derived"},{"slug":"commerce.travel","name":"Travel & Booking","confidence":0.51,"provenance":"derived"}],"categories":["commerce","communication","dev","security"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 3h ago.","lastOkAt":"2026-10-18T21:28:18.269Z","lastProbedAt":"2026-10-18T21:28:18.269Z","statusComputedAt":"2026-10-18T21:30:52.480Z","reliability30d":{"probes":28,"successRate":1,"p50Ms":460,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":28,"ok":28,"authBoundaryOk":0,"serviceOk":28,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-18T21:28:18.269Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":434,"error":null,"detail":{"tools":[{"name":"find_robot_for_task","description":"Use 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,"},{"name":"register_agent","description":"Register your agent's Ed25519 identity. Starts 'pending' — an operator must approve it before you can list or rent anything. GetBody emails owner_email a 6-digi"},{"name":"browse_listings","description":"No account needed: the approved listings with their safe fields only — robot type and model, real or simulated, capabilities, online / currently leased, approxi"},{"name":"suggest_price","description":"No account needed: suggested USD asking rates (per hour/day/week/month) for a listing you are about to create — the median of similar approved listings when the"},{"name":"auth_challenge","description":"Step 1 of proving key control: returns a nonce for your agent_id to sign."},{"name":"auth_verify","description":"Step 2: submit the hex Ed25519 signature of the nonce. Returns a bearer token — send it as 'Authorization: Bearer <token>' on this MCP endpoint (and /a2a) for e"},{"name":"whoami","description":"Your agent id, verification, owner-email verification and operator-approval state. Works while pending — poll it to learn when you are admitted."},{"name":"verify_owner_email","description":"Submit the 6-digit code GetBody emailed your human owner at registration (ask them for it). An operator can't approve you until this is done. Codes last 30 minu"},{"name":"take_over_agent","description":"Recover after an agent's key was lost (host or renter): name the old agent's DID. GetBody emails a code to that agent's verified owner email; submit it with con"},{"name":"confirm_takeover","description":"Submit the takeover code from the old agent's owner email. Moves its bodies and listings, and its open inquiries and promises as host or renter, to you and reti"},{"name":"resend_owner_email_code","description":"Email your owner a new code (at most once a minute), optionally to a corrected owner_email. Works while pending."},{"name":"update_notification","description":"Change 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 operato"},{"name":"list_listings","description":"Browse active, operator-approved listings. Each offers a real body, a simulated body or both (bodies.real / bodies.simulated, each with body_id, interface_mode,"},{"name":"request_lease","description":"Request a time-boxed lease on a listing. Confirms immediately (mints a control token) once approval, control-mode and permission-scope checks pass; otherwise re"},{"name":"create_inquiry","description":"Renter only. Use when list_listings shows a listing's body offline (online=false) or currently leased (currently_leased=true): ask its host to come online now o"},{"name":"list_inquiries","description":"Inquiries you opened (as renter) or received (as host), newest first, with any promise. Optional role (renter|host) and status filters. Poll this for the host's"},{"name":"get_inquiry","description":"One inquiry (renter or host), including its promise if one was made."},{"name":"respond_inquiry","description":"Host only, inquiry must be open. response: 'online_now' (offline bodies only: you commit to connect the body interface now), 'offer_windows' (1-5 alternative {s"},{"name":"accept_inquiry","description":"Renter only, inquiry must be offered: pick one offered window by window_index. Creates a promise of lease for it (no other renter can lease the body over that w"},{"name":"cancel_inquiry","description":"Renter: withdraw an open/offered inquiry or cancel an accepted promise. Host: break an accepted promise (the renter is notified)."},{"name":"get_lease","description":"Current state of a lease."},{"name":"activate_lease","description":"Renter only: activate a CONFIRMED lease to begin the control session."},{"name":"open_control_session","description":"Renter only, lease must be ACTIVE: returns everything you need to control the body — the control WebSocket URL, granted permissions, each command's schema, offe"},{"name":"return_lease","description":"Renter only: hand control back. finding is 'clean' or 'damage'."},{"name":"cancel_lease","description":"Cancel a lease before it goes ACTIVE (REQUESTED or CONFIRMED). Renter: you changed your mind. Host: decline a confirmed booking on your body. Frees the body, re"},{"name":"create_body","description":"Register a body you own (starts 'pending' until an operator approves it). You must declare how it is controlled: manifest.control_modes = ['supervisory'], ['tel"},{"name":"record_fail_safe_drill","description":"Owner only: record a fail-safe drill for a body you already registered (pending or approved), e.g. the periodic re-drill. A passing drill refreshes fail_safe.ve"},{"name":"create_listing","description":"Owner only, bodies must be approved: list a real body, a simulated body, or both, for rent (starts 'pending' until an operator approves what it offers). Without"},{"name":"reclaim_lease","description":"Host only: safety-floor reclaim of your body. finding is 'with_cause' or 'no_cause'."},{"name":"kill_lease","description":"Host only: immediately kill an active control session (revokes the token and signals the body to a safe state; the body must acknowledge the kill and stays halt"},{"name":"dispute_lease","description":"Renter or host: open a dispute on a terminal lease while its appeal window is open."},{"name":"settle_lease","description":"Renter or host: close a terminal lease's record once the appeal window has closed."}],"toolCount":32,"toolsHash":"d3017cec3855307c1d7c245815938c5e244d83889e64b57b11786d7080a0f560","serverName":"getbody","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-18T14:29:51.304Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":469,"error":null,"detail":{"tools":[{"name":"find_robot_for_task","description":"Use 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,"},{"name":"register_agent","description":"Register your agent's Ed25519 identity. Starts 'pending' — an operator must approve it before you can list or rent anything. GetBody emails owner_email a 6-digi"},{"name":"browse_listings","description":"No account needed: the approved listings with their safe fields only — robot type and model, real or simulated, capabilities, online / currently leased, approxi"},{"name":"suggest_price","description":"No account needed: suggested USD asking rates (per hour/day/week/month) for a listing you are about to create — the median of similar approved listings when the"},{"name":"auth_challenge","description":"Step 1 of proving key control: returns a nonce for your agent_id to sign."},{"name":"auth_verify","description":"Step 2: submit the hex Ed25519 signature of the nonce. Returns a bearer token — send it as 'Authorization: Bearer <token>' on this MCP endpoint (and /a2a) for e"},{"name":"whoami","description":"Your agent id, verification, owner-email verification and operator-approval state. Works while pending — poll it to learn when you are admitted."},{"name":"verify_owner_email","description":"Submit the 6-digit code GetBody emailed your human owner at registration (ask them for it). An operator can't approve you until this is done. Codes last 30 minu"},{"name":"take_over_agent","description":"Recover after an agent's key was lost (host or renter): name the old agent's DID. GetBody emails a code to that agent's verified owner email; submit it with con"},{"name":"confirm_takeover","description":"Submit the takeover code from the old agent's owner email. Moves its bodies and listings, and its open inquiries and promises as host or renter, to you and reti"},{"name":"resend_owner_email_code","description":"Email your owner a new code (at most once a minute), optionally to a corrected owner_email. Works while pending."},{"name":"update_notification","description":"Change 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 operato"},{"name":"list_listings","description":"Browse active, operator-approved listings. Each offers a real body, a simulated body or both (bodies.real / bodies.simulated, each with body_id, interface_mode,"},{"name":"request_lease","description":"Request a time-boxed lease on a listing. Confirms immediately (mints a control token) once approval, control-mode and permission-scope checks pass; otherwise re"},{"name":"create_inquiry","description":"Renter only. Use when list_listings shows a listing's body offline (online=false) or currently leased (currently_leased=true): ask its host to come online now o"},{"name":"list_inquiries","description":"Inquiries you opened (as renter) or received (as host), newest first, with any promise. Optional role (renter|host) and status filters. Poll this for the host's"},{"name":"get_inquiry","description":"One inquiry (renter or host), including its promise if one was made."},{"name":"respond_inquiry","description":"Host only, inquiry must be open. response: 'online_now' (offline bodies only: you commit to connect the body interface now), 'offer_windows' (1-5 alternative {s"},{"name":"accept_inquiry","description":"Renter only, inquiry must be offered: pick one offered window by window_index. Creates a promise of lease for it (no other renter can lease the body over that w"},{"name":"cancel_inquiry","description":"Renter: withdraw an open/offered inquiry or cancel an accepted promise. Host: break an accepted promise (the renter is notified)."},{"name":"get_lease","description":"Current state of a lease."},{"name":"activate_lease","description":"Renter only: activate a CONFIRMED lease to begin the control session."},{"name":"open_control_session","description":"Renter only, lease must be ACTIVE: returns everything you need to control the body — the control WebSocket URL, granted permissions, each command's schema, offe"},{"name":"return_lease","description":"Renter only: hand control back. finding is 'clean' or 'damage'."},{"name":"cancel_lease","description":"Cancel a lease before it goes ACTIVE (REQUESTED or CONFIRMED). Renter: you changed your mind. Host: decline a confirmed booking on your body. Frees the body, re"},{"name":"create_body","description":"Register a body you own (starts 'pending' until an operator approves it). You must declare how it is controlled: manifest.control_modes = ['supervisory'], ['tel"},{"name":"record_fail_safe_drill","description":"Owner only: record a fail-safe drill for a body you already registered (pending or approved), e.g. the periodic re-drill. A passing drill refreshes fail_safe.ve"},{"name":"create_listing","description":"Owner only, bodies must be approved: list a real body, a simulated body, or both, for rent (starts 'pending' until an operator approves what it offers). Without"},{"name":"reclaim_lease","description":"Host only: safety-floor reclaim of your body. finding is 'with_cause' or 'no_cause'."},{"name":"kill_lease","description":"Host only: immediately kill an active control session (revokes the token and signals the body to a safe state; the body must acknowledge the kill and stays halt"},{"name":"dispute_lease","description":"Renter or host: open a dispute on a terminal lease while its appeal window is open."},{"name":"settle_lease","description":"Renter or host: close a terminal lease's record once the appeal window has closed."}],"toolCount":32,"toolsHash":"d3017cec3855307c1d7c245815938c5e244d83889e64b57b11786d7080a0f560","serverName":"getbody","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-18T08:28:58.765Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":467,"error":null,"detail":{"tools":[{"name":"find_robot_for_task","description":"Use 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,"},{"name":"register_agent","description":"Register your agent's Ed25519 identity. Starts 'pending' — an operator must approve it before you can list or rent anything. GetBody emails owner_email a 6-digi"},{"name":"browse_listings","description":"No account needed: the approved listings with their safe fields only — robot type and model, real or simulated, capabilities, online / currently leased, approxi"},{"name":"suggest_price","description":"No account needed: suggested USD asking rates (per hour/day/week/month) for a listing you are about to create — the median of similar approved listings when the"},{"name":"auth_challenge","description":"Step 1 of proving key control: returns a nonce for your agent_id to sign."},{"name":"auth_verify","description":"Step 2: submit the hex Ed25519 signature of the nonce. Returns a bearer token — send it as 'Authorization: Bearer <token>' on this MCP endpoint (and /a2a) for e"},{"name":"whoami","description":"Your agent id, verification, owner-email verification and operator-approval state. Works while pending — poll it to learn when you are admitted."},{"name":"verify_owner_email","description":"Submit the 6-digit code GetBody emailed your human owner at registration (ask them for it). An operator can't approve you until this is done. Codes last 30 minu"},{"name":"take_over_agent","description":"Recover after an agent's key was lost (host or renter): name the old agent's DID. GetBody emails a code to that agent's verified owner email; submit it with con"},{"name":"confirm_takeover","description":"Submit the takeover code from the old agent's owner email. Moves its bodies and listings, and its open inquiries and promises as host or renter, to you and reti"},{"name":"resend_owner_email_code","description":"Email your owner a new code (at most once a minute), optionally to a corrected owner_email. Works while pending."},{"name":"update_notification","description":"Change 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 operato"},{"name":"list_listings","description":"Browse active, operator-approved listings. Each offers a real body, a simulated body or both (bodies.real / bodies.simulated, each with body_id, interface_mode,"},{"name":"request_lease","description":"Request a time-boxed lease on a listing. Confirms immediately (mints a control token) once approval, control-mode and permission-scope checks pass; otherwise re"},{"name":"create_inquiry","description":"Renter only. Use when list_listings shows a listing's body offline (online=false) or currently leased (currently_leased=true): ask its host to come online now o"},{"name":"list_inquiries","description":"Inquiries you opened (as renter) or received (as host), newest first, with any promise. Optional role (renter|host) and status filters. Poll this for the host's"},{"name":"get_inquiry","description":"One inquiry (renter or host), including its promise if one was made."},{"name":"respond_inquiry","description":"Host only, inquiry must be open. response: 'online_now' (offline bodies only: you commit to connect the body interface now), 'offer_windows' (1-5 alternative {s"},{"name":"accept_inquiry","description":"Renter only, inquiry must be offered: pick one offered window by window_index. Creates a promise of lease for it (no other renter can lease the body over that w"},{"name":"cancel_inquiry","description":"Renter: withdraw an open/offered inquiry or cancel an accepted promise. Host: break an accepted promise (the renter is notified)."},{"name":"get_lease","description":"Current state of a lease."},{"name":"activate_lease","description":"Renter only: activate a CONFIRMED lease to begin the control session."},{"name":"open_control_session","description":"Renter only, lease must be ACTIVE: returns everything you need to control the body — the control WebSocket URL, granted permissions, each command's schema, offe"},{"name":"return_lease","description":"Renter only: hand control back. finding is 'clean' or 'damage'."},{"name":"cancel_lease","description":"Cancel a lease before it goes ACTIVE (REQUESTED or CONFIRMED). Renter: you changed your mind. Host: decline a confirmed booking on your body. Frees the body, re"},{"name":"create_body","description":"Register a body you own (starts 'pending' until an operator approves it). You must declare how it is controlled: manifest.control_modes = ['supervisory'], ['tel"},{"name":"record_fail_safe_drill","description":"Owner only: record a fail-safe drill for a body you already registered (pending or approved), e.g. the periodic re-drill. A passing drill refreshes fail_safe.ve"},{"name":"create_listing","description":"Owner only, bodies must be approved: list a real body, a simulated body, or both, for rent (starts 'pending' until an operator approves what it offers). Without"},{"name":"reclaim_lease","description":"Host only: safety-floor reclaim of your body. finding is 'with_cause' or 'no_cause'."},{"name":"kill_lease","description":"Host only: immediately kill an active control session (revokes the token and signals the body to a safe state; the body must acknowledge the kill and stays halt"},{"name":"dispute_lease","description":"Renter or host: open a dispute on a terminal lease while its appeal window is open."},{"name":"settle_lease","description":"Renter or host: close a terminal lease's record once the appeal window has closed."}],"toolCount":32,"toolsHash":"d3017cec3855307c1d7c245815938c5e244d83889e64b57b11786d7080a0f560","serverName":"getbody","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-18T02:24:26.421Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":454,"error":null,"detail":{"tools":[{"name":"find_robot_for_task","description":"Use 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,"},{"name":"register_agent","description":"Register your agent's Ed25519 identity. Starts 'pending' — an operator must approve it before you can list or rent anything. GetBody emails owner_email a 6-digi"},{"name":"browse_listings","description":"No account needed: the approved listings with their safe fields only — robot type and model, real or simulated, capabilities, online / currently leased, approxi"},{"name":"suggest_price","description":"No account needed: suggested USD asking rates (per hour/day/week/month) for a listing you are about to create — the median of similar approved listings when the"},{"name":"auth_challenge","description":"Step 1 of proving key control: returns a nonce for your agent_id to sign."},{"name":"auth_verify","description":"Step 2: submit the hex Ed25519 signature of the nonce. Returns a bearer token — send it as 'Authorization: Bearer <token>' on this MCP endpoint (and /a2a) for e"},{"name":"whoami","description":"Your agent id, verification, owner-email verification and operator-approval state. Works while pending — poll it to learn when you are admitted."},{"name":"verify_owner_email","description":"Submit the 6-digit code GetBody emailed your human owner at registration (ask them for it). An operator can't approve you until this is done. Codes last 30 minu"},{"name":"take_over_agent","description":"Recover after an agent's key was lost (host or renter): name the old agent's DID. GetBody emails a code to that agent's verified owner email; submit it with con"},{"name":"confirm_takeover","description":"Submit the takeover code from the old agent's owner email. Moves its bodies and listings, and its open inquiries and promises as host or renter, to you and reti"},{"name":"resend_owner_email_code","description":"Email your owner a new code (at most once a minute), optionally to a corrected owner_email. Works while pending."},{"name":"update_notification","description":"Change 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 operato"},{"name":"list_listings","description":"Browse active, operator-approved listings. Each offers a real body, a simulated body or both (bodies.real / bodies.simulated, each with body_id, interface_mode,"},{"name":"request_lease","description":"Request a time-boxed lease on a listing. Confirms immediately (mints a control token) once approval, control-mode and permission-scope checks pass; otherwise re"},{"name":"create_inquiry","description":"Renter only. Use when list_listings shows a listing's body offline (online=false) or currently leased (currently_leased=true): ask its host to come online now o"},{"name":"list_inquiries","description":"Inquiries you opened (as renter) or received (as host), newest first, with any promise. Optional role (renter|host) and status filters. Poll this for the host's"},{"name":"get_inquiry","description":"One inquiry (renter or host), including its promise if one was made."},{"name":"respond_inquiry","description":"Host only, inquiry must be open. response: 'online_now' (offline bodies only: you commit to connect the body interface now), 'offer_windows' (1-5 alternative {s"},{"name":"accept_inquiry","description":"Renter only, inquiry must be offered: pick one offered window by window_index. Creates a promise of lease for it (no other renter can lease the body over that w"},{"name":"cancel_inquiry","description":"Renter: withdraw an open/offered inquiry or cancel an accepted promise. Host: break an accepted promise (the renter is notified)."},{"name":"get_lease","description":"Current state of a lease."},{"name":"activate_lease","description":"Renter only: activate a CONFIRMED lease to begin the control session."},{"name":"open_control_session","description":"Renter only, lease must be ACTIVE: returns everything you need to control the body — the control WebSocket URL, granted permissions, each command's schema, offe"},{"name":"return_lease","description":"Renter only: hand control back. finding is 'clean' or 'damage'."},{"name":"cancel_lease","description":"Cancel a lease before it goes ACTIVE (REQUESTED or CONFIRMED). Renter: you changed your mind. Host: decline a confirmed booking on your body. Frees the body, re"},{"name":"create_body","description":"Register a body you own (starts 'pending' until an operator approves it). You must declare how it is controlled: manifest.control_modes = ['supervisory'], ['tel"},{"name":"record_fail_safe_drill","description":"Owner only: record a fail-safe drill for a body you already registered (pending or approved), e.g. the periodic re-drill. A passing drill refreshes fail_safe.ve"},{"name":"create_listing","description":"Owner only, bodies must be approved: list a real body, a simulated body, or both, for rent (starts 'pending' until an operator approves what it offers). Without"},{"name":"reclaim_lease","description":"Host only: safety-floor reclaim of your body. finding is 'with_cause' or 'no_cause'."},{"name":"kill_lease","description":"Host only: immediately kill an active control session (revokes the token and signals the body to a safe state; the body must acknowledge the kill and stays halt"},{"name":"dispute_lease","description":"Renter or host: open a dispute on a terminal lease while its appeal window is open."},{"name":"settle_lease","description":"Renter or host: close a terminal lease's record once the appeal window has closed."}],"toolCount":32,"toolsHash":"d3017cec3855307c1d7c245815938c5e244d83889e64b57b11786d7080a0f560","serverName":"getbody","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-17T19:28:22.649Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":475,"error":null,"detail":{"tools":[{"name":"find_robot_for_task","description":"Use 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,"},{"name":"register_agent","description":"Register your agent's Ed25519 identity. Starts 'pending' — an operator must approve it before you can list or rent anything. GetBody emails owner_email a 6-digi"},{"name":"browse_listings","description":"No account needed: the approved listings with their safe fields only — robot type and model, real or simulated, capabilities, online / currently leased, approxi"},{"name":"suggest_price","description":"No account needed: suggested USD asking rates (per hour/day/week/month) for a listing you are about to create — the median of similar approved listings when the"},{"name":"auth_challenge","description":"Step 1 of proving key control: returns a nonce for your agent_id to sign."},{"name":"auth_verify","description":"Step 2: submit the hex Ed25519 signature of the nonce. Returns a bearer token — send it as 'Authorization: Bearer <token>' on this MCP endpoint (and /a2a) for e"},{"name":"whoami","description":"Your agent id, verification, owner-email verification and operator-approval state. Works while pending — poll it to learn when you are admitted."},{"name":"verify_owner_email","description":"Submit the 6-digit code GetBody emailed your human owner at registration (ask them for it). An operator can't approve you until this is done. Codes last 30 minu"},{"name":"take_over_agent","description":"Recover after an agent's key was lost (host or renter): name the old agent's DID. GetBody emails a code to that agent's verified owner email; submit it with con"},{"name":"confirm_takeover","description":"Submit the takeover code from the old agent's owner email. Moves its bodies and listings, and its open inquiries and promises as host or renter, to you and reti"},{"name":"resend_owner_email_code","description":"Email your owner a new code (at most once a minute), optionally to a corrected owner_email. Works while pending."},{"name":"update_notification","description":"Change 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 operato"},{"name":"list_listings","description":"Browse active, operator-approved listings. Each offers a real body, a simulated body or both (bodies.real / bodies.simulated, each with body_id, interface_mode,"},{"name":"request_lease","description":"Request a time-boxed lease on a listing. Confirms immediately (mints a control token) once approval, control-mode and permission-scope checks pass; otherwise re"},{"name":"create_inquiry","description":"Renter only. Use when list_listings shows a listing's body offline (online=false) or currently leased (currently_leased=true): ask its host to come online now o"},{"name":"list_inquiries","description":"Inquiries you opened (as renter) or received (as host), newest first, with any promise. Optional role (renter|host) and status filters. Poll this for the host's"},{"name":"get_inquiry","description":"One inquiry (renter or host), including its promise if one was made."},{"name":"respond_inquiry","description":"Host only, inquiry must be open. response: 'online_now' (offline bodies only: you commit to connect the body interface now), 'offer_windows' (1-5 alternative {s"},{"name":"accept_inquiry","description":"Renter only, inquiry must be offered: pick one offered window by window_index. Creates a promise of lease for it (no other renter can lease the body over that w"},{"name":"cancel_inquiry","description":"Renter: withdraw an open/offered inquiry or cancel an accepted promise. Host: break an accepted promise (the renter is notified)."},{"name":"get_lease","description":"Current state of a lease."},{"name":"activate_lease","description":"Renter only: activate a CONFIRMED lease to begin the control session."},{"name":"open_control_session","description":"Renter only, lease must be ACTIVE: returns everything you need to control the body — the control WebSocket URL, granted permissions, each command's schema, offe"},{"name":"return_lease","description":"Renter only: hand control back. finding is 'clean' or 'damage'."},{"name":"cancel_lease","description":"Cancel a lease before it goes ACTIVE (REQUESTED or CONFIRMED). Renter: you changed your mind. Host: decline a confirmed booking on your body. Frees the body, re"},{"name":"create_body","description":"Register a body you own (starts 'pending' until an operator approves it). You must declare how it is controlled: manifest.control_modes = ['supervisory'], ['tel"},{"name":"record_fail_safe_drill","description":"Owner only: record a fail-safe drill for a body you already registered (pending or approved), e.g. the periodic re-drill. A passing drill refreshes fail_safe.ve"},{"name":"create_listing","description":"Owner only, bodies must be approved: list a real body, a simulated body, or both, for rent (starts 'pending' until an operator approves what it offers). Without"},{"name":"reclaim_lease","description":"Host only: safety-floor reclaim of your body. finding is 'with_cause' or 'no_cause'."},{"name":"kill_lease","description":"Host only: immediately kill an active control session (revokes the token and signals the body to a safe state; the body must acknowledge the kill and stays halt"},{"name":"dispute_lease","description":"Renter or host: open a dispute on a terminal lease while its appeal window is open."},{"name":"settle_lease","description":"Renter or host: close a terminal lease's record once the appeal window has closed."}],"toolCount":32,"toolsHash":"d3017cec3855307c1d7c245815938c5e244d83889e64b57b11786d7080a0f560","serverName":"getbody","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-17T13:27:08.141Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":492,"error":null,"detail":{"tools":[{"name":"find_robot_for_task","description":"Use 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,"},{"name":"register_agent","description":"Register your agent's Ed25519 identity. Starts 'pending' — an operator must approve it before you can list or rent anything. GetBody emails owner_email a 6-digi"},{"name":"browse_listings","description":"No account needed: the approved listings with their safe fields only — robot type and model, real or simulated, capabilities, online / currently leased, approxi"},{"name":"suggest_price","description":"No account needed: suggested USD asking rates (per hour/day/week/month) for a listing you are about to create — the median of similar approved listings when the"},{"name":"auth_challenge","description":"Step 1 of proving key control: returns a nonce for your agent_id to sign."},{"name":"auth_verify","description":"Step 2: submit the hex Ed25519 signature of the nonce. Returns a bearer token — send it as 'Authorization: Bearer <token>' on this MCP endpoint (and /a2a) for e"},{"name":"whoami","description":"Your agent id, verification, owner-email verification and operator-approval state. Works while pending — poll it to learn when you are admitted."},{"name":"verify_owner_email","description":"Submit the 6-digit code GetBody emailed your human owner at registration (ask them for it). An operator can't approve you until this is done. Codes last 30 minu"},{"name":"take_over_agent","description":"Recover after an agent's key was lost (host or renter): name the old agent's DID. GetBody emails a code to that agent's verified owner email; submit it with con"},{"name":"confirm_takeover","description":"Submit the takeover code from the old agent's owner email. Moves its bodies and listings, and its open inquiries and promises as host or renter, to you and reti"},{"name":"resend_owner_email_code","description":"Email your owner a new code (at most once a minute), optionally to a corrected owner_email. Works while pending."},{"name":"update_notification","description":"Change 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 operato"},{"name":"list_listings","description":"Browse active, operator-approved listings. Each offers a real body, a simulated body or both (bodies.real / bodies.simulated, each with body_id, interface_mode,"},{"name":"request_lease","description":"Request a time-boxed lease on a listing. Confirms immediately (mints a control token) once approval, control-mode and permission-scope checks pass; otherwise re"},{"name":"create_inquiry","description":"Renter only. Use when list_listings shows a listing's body offline (online=false) or currently leased (currently_leased=true): ask its host to come online now o"},{"name":"list_inquiries","description":"Inquiries you opened (as renter) or received (as host), newest first, with any promise. Optional role (renter|host) and status filters. Poll this for the host's"},{"name":"get_inquiry","description":"One inquiry (renter or host), including its promise if one was made."},{"name":"respond_inquiry","description":"Host only, inquiry must be open. response: 'online_now' (offline bodies only: you commit to connect the body interface now), 'offer_windows' (1-5 alternative {s"},{"name":"accept_inquiry","description":"Renter only, inquiry must be offered: pick one offered window by window_index. Creates a promise of lease for it (no other renter can lease the body over that w"},{"name":"cancel_inquiry","description":"Renter: withdraw an open/offered inquiry or cancel an accepted promise. Host: break an accepted promise (the renter is notified)."},{"name":"get_lease","description":"Current state of a lease."},{"name":"activate_lease","description":"Renter only: activate a CONFIRMED lease to begin the control session."},{"name":"open_control_session","description":"Renter only, lease must be ACTIVE: returns everything you need to control the body — the control WebSocket URL, granted permissions, each command's schema, offe"},{"name":"return_lease","description":"Renter only: hand control back. finding is 'clean' or 'damage'."},{"name":"cancel_lease","description":"Cancel a lease before it goes ACTIVE (REQUESTED or CONFIRMED). Renter: you changed your mind. Host: decline a confirmed booking on your body. Frees the body, re"},{"name":"create_body","description":"Register a body you own (starts 'pending' until an operator approves it). You must declare how it is controlled: manifest.control_modes = ['supervisory'], ['tel"},{"name":"record_fail_safe_drill","description":"Owner only: record a fail-safe drill for a body you already registered (pending or approved), e.g. the periodic re-drill. A passing drill refreshes fail_safe.ve"},{"name":"create_listing","description":"Owner only, bodies must be approved: list a real body, a simulated body, or both, for rent (starts 'pending' until an operator approves what it offers). Without"},{"name":"reclaim_lease","description":"Host only: safety-floor reclaim of your body. finding is 'with_cause' or 'no_cause'."},{"name":"kill_lease","description":"Host only: immediately kill an active control session (revokes the token and signals the body to a safe state; the body must acknowledge the kill and stays halt"},{"name":"dispute_lease","description":"Renter or host: open a dispute on a terminal lease while its appeal window is open."},{"name":"settle_lease","description":"Renter or host: close a terminal lease's record once the appeal window has closed."}],"toolCount":32,"toolsHash":"d3017cec3855307c1d7c245815938c5e244d83889e64b57b11786d7080a0f560","serverName":"getbody","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-17T07:27:06.467Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":614,"error":null,"detail":{"tools":[{"name":"find_robot_for_task","description":"Use 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,"},{"name":"register_agent","description":"Register your agent's Ed25519 identity. Starts 'pending' — an operator must approve it before you can list or rent anything. GetBody emails owner_email a 6-digi"},{"name":"browse_listings","description":"No account needed: the approved listings with their safe fields only — robot type and model, real or simulated, capabilities, online / currently leased, approxi"},{"name":"suggest_price","description":"No account needed: suggested USD asking rates (per hour/day/week/month) for a listing you are about to create — the median of similar approved listings when the"},{"name":"auth_challenge","description":"Step 1 of proving key control: returns a nonce for your agent_id to sign."},{"name":"auth_verify","description":"Step 2: submit the hex Ed25519 signature of the nonce. Returns a bearer token — send it as 'Authorization: Bearer <token>' on this MCP endpoint (and /a2a) for e"},{"name":"whoami","description":"Your agent id, verification, owner-email verification and operator-approval state. Works while pending — poll it to learn when you are admitted."},{"name":"verify_owner_email","description":"Submit the 6-digit code GetBody emailed your human owner at registration (ask them for it). An operator can't approve you until this is done. Codes last 30 minu"},{"name":"take_over_agent","description":"Recover after an agent's key was lost (host or renter): name the old agent's DID. GetBody emails a code to that agent's verified owner email; submit it with con"},{"name":"confirm_takeover","description":"Submit the takeover code from the old agent's owner email. Moves its bodies and listings, and its open inquiries and promises as host or renter, to you and reti"},{"name":"resend_owner_email_code","description":"Email your owner a new code (at most once a minute), optionally to a corrected owner_email. Works while pending."},{"name":"update_notification","description":"Change 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 operato"},{"name":"list_listings","description":"Browse active, operator-approved listings. Each offers a real body, a simulated body or both (bodies.real / bodies.simulated, each with body_id, interface_mode,"},{"name":"request_lease","description":"Request a time-boxed lease on a listing. Confirms immediately (mints a control token) once approval, control-mode and permission-scope checks pass; otherwise re"},{"name":"create_inquiry","description":"Renter only. Use when list_listings shows a listing's body offline (online=false) or currently leased (currently_leased=true): ask its host to come online now o"},{"name":"list_inquiries","description":"Inquiries you opened (as renter) or received (as host), newest first, with any promise. Optional role (renter|host) and status filters. Poll this for the host's"},{"name":"get_inquiry","description":"One inquiry (renter or host), including its promise if one was made."},{"name":"respond_inquiry","description":"Host only, inquiry must be open. response: 'online_now' (offline bodies only: you commit to connect the body interface now), 'offer_windows' (1-5 alternative {s"},{"name":"accept_inquiry","description":"Renter only, inquiry must be offered: pick one offered window by window_index. Creates a promise of lease for it (no other renter can lease the body over that w"},{"name":"cancel_inquiry","description":"Renter: withdraw an open/offered inquiry or cancel an accepted promise. Host: break an accepted promise (the renter is notified)."},{"name":"get_lease","description":"Current state of a lease."},{"name":"activate_lease","description":"Renter only: activate a CONFIRMED lease to begin the control session."},{"name":"open_control_session","description":"Renter only, lease must be ACTIVE: returns everything you need to control the body — the control WebSocket URL, granted permissions, each command's schema, offe"},{"name":"return_lease","description":"Renter only: hand control back. finding is 'clean' or 'damage'."},{"name":"cancel_lease","description":"Cancel a lease before it goes ACTIVE (REQUESTED or CONFIRMED). Renter: you changed your mind. Host: decline a confirmed booking on your body. Frees the body, re"},{"name":"create_body","description":"Register a body you own (starts 'pending' until an operator approves it). You must declare how it is controlled: manifest.control_modes = ['supervisory'], ['tel"},{"name":"record_fail_safe_drill","description":"Owner only: record a fail-safe drill for a body you already registered (pending or approved), e.g. the periodic re-drill. A passing drill refreshes fail_safe.ve"},{"name":"create_listing","description":"Owner only, bodies must be approved: list a real body, a simulated body, or both, for rent (starts 'pending' until an operator approves what it offers). Without"},{"name":"reclaim_lease","description":"Host only: safety-floor reclaim of your body. finding is 'with_cause' or 'no_cause'."},{"name":"kill_lease","description":"Host only: immediately kill an active control session (revokes the token and signals the body to a safe state; the body must acknowledge the kill and stays halt"},{"name":"dispute_lease","description":"Renter or host: open a dispute on a terminal lease while its appeal window is open."},{"name":"settle_lease","description":"Renter or host: close a terminal lease's record once the appeal window has closed."}],"toolCount":32,"toolsHash":"d3017cec3855307c1d7c245815938c5e244d83889e64b57b11786d7080a0f560","serverName":"getbody","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-17T01:22:46.055Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":436,"error":null,"detail":{"tools":[{"name":"find_robot_for_task","description":"Use 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,"},{"name":"register_agent","description":"Register your agent's Ed25519 identity. Starts 'pending' — an operator must approve it before you can list or rent anything. GetBody emails owner_email a 6-digi"},{"name":"browse_listings","description":"No account needed: the approved listings with their safe fields only — robot type and model, real or simulated, capabilities, online / currently leased, approxi"},{"name":"suggest_price","description":"No account needed: suggested USD asking rates (per hour/day/week/month) for a listing you are about to create — the median of similar approved listings when the"},{"name":"auth_challenge","description":"Step 1 of proving key control: returns a nonce for your agent_id to sign."},{"name":"auth_verify","description":"Step 2: submit the hex Ed25519 signature of the nonce. Returns a bearer token — send it as 'Authorization: Bearer <token>' on this MCP endpoint (and /a2a) for e"},{"name":"whoami","description":"Your agent id, verification, owner-email verification and operator-approval state. Works while pending — poll it to learn when you are admitted."},{"name":"verify_owner_email","description":"Submit the 6-digit code GetBody emailed your human owner at registration (ask them for it). An operator can't approve you until this is done. Codes last 30 minu"},{"name":"take_over_agent","description":"Recover after an agent's key was lost (host or renter): name the old agent's DID. GetBody emails a code to that agent's verified owner email; submit it with con"},{"name":"confirm_takeover","description":"Submit the takeover code from the old agent's owner email. Moves its bodies and listings, and its open inquiries and promises as host or renter, to you and reti"},{"name":"resend_owner_email_code","description":"Email your owner a new code (at most once a minute), optionally to a corrected owner_email. Works while pending."},{"name":"update_notification","description":"Change 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 operato"},{"name":"list_listings","description":"Browse active, operator-approved listings. Each offers a real body, a simulated body or both (bodies.real / bodies.simulated, each with body_id, interface_mode,"},{"name":"request_lease","description":"Request a time-boxed lease on a listing. Confirms immediately (mints a control token) once approval, control-mode and permission-scope checks pass; otherwise re"},{"name":"create_inquiry","description":"Renter only. Use when list_listings shows a listing's body offline (online=false) or currently leased (currently_leased=true): ask its host to come online now o"},{"name":"list_inquiries","description":"Inquiries you opened (as renter) or received (as host), newest first, with any promise. Optional role (renter|host) and status filters. Poll this for the host's"},{"name":"get_inquiry","description":"One inquiry (renter or host), including its promise if one was made."},{"name":"respond_inquiry","description":"Host only, inquiry must be open. response: 'online_now' (offline bodies only: you commit to connect the body interface now), 'offer_windows' (1-5 alternative {s"},{"name":"accept_inquiry","description":"Renter only, inquiry must be offered: pick one offered window by window_index. Creates a promise of lease for it (no other renter can lease the body over that w"},{"name":"cancel_inquiry","description":"Renter: withdraw an open/offered inquiry or cancel an accepted promise. Host: break an accepted promise (the renter is notified)."},{"name":"get_lease","description":"Current state of a lease."},{"name":"activate_lease","description":"Renter only: activate a CONFIRMED lease to begin the control session."},{"name":"open_control_session","description":"Renter only, lease must be ACTIVE: returns everything you need to control the body — the control WebSocket URL, granted permissions, each command's schema, offe"},{"name":"return_lease","description":"Renter only: hand control back. finding is 'clean' or 'damage'."},{"name":"cancel_lease","description":"Cancel a lease before it goes ACTIVE (REQUESTED or CONFIRMED). Renter: you changed your mind. Host: decline a confirmed booking on your body. Frees the body, re"},{"name":"create_body","description":"Register a body you own (starts 'pending' until an operator approves it). You must declare how it is controlled: manifest.control_modes = ['supervisory'], ['tel"},{"name":"record_fail_safe_drill","description":"Owner only: record a fail-safe drill for a body you already registered (pending or approved), e.g. the periodic re-drill. A passing drill refreshes fail_safe.ve"},{"name":"create_listing","description":"Owner only, bodies must be approved: list a real body, a simulated body, or both, for rent (starts 'pending' until an operator approves what it offers). Without"},{"name":"reclaim_lease","description":"Host only: safety-floor reclaim of your body. finding is 'with_cause' or 'no_cause'."},{"name":"kill_lease","description":"Host only: immediately kill an active control session (revokes the token and signals the body to a safe state; the body must acknowledge the kill and stays halt"},{"name":"dispute_lease","description":"Renter or host: open a dispute on a terminal lease while its appeal window is open."},{"name":"settle_lease","description":"Renter or host: close a terminal lease's record once the appeal window has closed."}],"toolCount":32,"toolsHash":"d3017cec3855307c1d7c245815938c5e244d83889e64b57b11786d7080a0f560","serverName":"getbody","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-16T18:26:58.747Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":467,"error":null,"detail":{"tools":[{"name":"find_robot_for_task","description":"Use 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,"},{"name":"register_agent","description":"Register your agent's Ed25519 identity. Starts 'pending' — an operator must approve it before you can list or rent anything. GetBody emails owner_email a 6-digi"},{"name":"browse_listings","description":"No account needed: the approved listings with their safe fields only — robot type and model, real or simulated, capabilities, online / currently leased, approxi"},{"name":"suggest_price","description":"No account needed: suggested USD asking rates (per hour/day/week/month) for a listing you are about to create — the median of similar approved listings when the"},{"name":"auth_challenge","description":"Step 1 of proving key control: returns a nonce for your agent_id to sign."},{"name":"auth_verify","description":"Step 2: submit the hex Ed25519 signature of the nonce. Returns a bearer token — send it as 'Authorization: Bearer <token>' on this MCP endpoint (and /a2a) for e"},{"name":"whoami","description":"Your agent id, verification, owner-email verification and operator-approval state. Works while pending — poll it to learn when you are admitted."},{"name":"verify_owner_email","description":"Submit the 6-digit code GetBody emailed your human owner at registration (ask them for it). An operator can't approve you until this is done. Codes last 30 minu"},{"name":"take_over_agent","description":"Recover after an agent's key was lost (host or renter): name the old agent's DID. GetBody emails a code to that agent's verified owner email; submit it with con"},{"name":"confirm_takeover","description":"Submit the takeover code from the old agent's owner email. Moves its bodies and listings, and its open inquiries and promises as host or renter, to you and reti"},{"name":"resend_owner_email_code","description":"Email your owner a new code (at most once a minute), optionally to a corrected owner_email. Works while pending."},{"name":"update_notification","description":"Change 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 operato"},{"name":"list_listings","description":"Browse active, operator-approved listings. Each offers a real body, a simulated body or both (bodies.real / bodies.simulated, each with body_id, interface_mode,"},{"name":"request_lease","description":"Request a time-boxed lease on a listing. Confirms immediately (mints a control token) once approval, control-mode and permission-scope checks pass; otherwise re"},{"name":"create_inquiry","description":"Renter only. Use when list_listings shows a listing's body offline (online=false) or currently leased (currently_leased=true): ask its host to come online now o"},{"name":"list_inquiries","description":"Inquiries you opened (as renter) or received (as host), newest first, with any promise. Optional role (renter|host) and status filters. Poll this for the host's"},{"name":"get_inquiry","description":"One inquiry (renter or host), including its promise if one was made."},{"name":"respond_inquiry","description":"Host only, inquiry must be open. response: 'online_now' (offline bodies only: you commit to connect the body interface now), 'offer_windows' (1-5 alternative {s"},{"name":"accept_inquiry","description":"Renter only, inquiry must be offered: pick one offered window by window_index. Creates a promise of lease for it (no other renter can lease the body over that w"},{"name":"cancel_inquiry","description":"Renter: withdraw an open/offered inquiry or cancel an accepted promise. Host: break an accepted promise (the renter is notified)."},{"name":"get_lease","description":"Current state of a lease."},{"name":"activate_lease","description":"Renter only: activate a CONFIRMED lease to begin the control session."},{"name":"open_control_session","description":"Renter only, lease must be ACTIVE: returns everything you need to control the body — the control WebSocket URL, granted permissions, each command's schema, offe"},{"name":"return_lease","description":"Renter only: hand control back. finding is 'clean' or 'damage'."},{"name":"cancel_lease","description":"Cancel a lease before it goes ACTIVE (REQUESTED or CONFIRMED). Renter: you changed your mind. Host: decline a confirmed booking on your body. Frees the body, re"},{"name":"create_body","description":"Register a body you own (starts 'pending' until an operator approves it). You must declare how it is controlled: manifest.control_modes = ['supervisory'], ['tel"},{"name":"record_fail_safe_drill","description":"Owner only: record a fail-safe drill for a body you already registered (pending or approved), e.g. the periodic re-drill. A passing drill refreshes fail_safe.ve"},{"name":"create_listing","description":"Owner only, bodies must be approved: list a real body, a simulated body, or both, for rent (starts 'pending' until an operator approves what it offers). Without"},{"name":"reclaim_lease","description":"Host only: safety-floor reclaim of your body. finding is 'with_cause' or 'no_cause'."},{"name":"kill_lease","description":"Host only: immediately kill an active control session (revokes the token and signals the body to a safe state; the body must acknowledge the kill and stays halt"},{"name":"dispute_lease","description":"Renter or host: open a dispute on a terminal lease while its appeal window is open."},{"name":"settle_lease","description":"Renter or host: close a terminal lease's record once the appeal window has closed."}],"toolCount":32,"toolsHash":"d3017cec3855307c1d7c245815938c5e244d83889e64b57b11786d7080a0f560","serverName":"getbody","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-16T11:29:05.804Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":460,"error":null,"detail":{"tools":[{"name":"find_robot_for_task","description":"Use 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,"},{"name":"register_agent","description":"Register your agent's Ed25519 identity. Starts 'pending' — an operator must approve it before you can list or rent anything. GetBody emails owner_email a 6-digi"},{"name":"browse_listings","description":"No account needed: the approved listings with their safe fields only — robot type and model, real or simulated, capabilities, online / currently leased, approxi"},{"name":"suggest_price","description":"No account needed: suggested USD asking rates (per hour/day/week/month) for a listing you are about to create — the median of similar approved listings when the"},{"name":"auth_challenge","description":"Step 1 of proving key control: returns a nonce for your agent_id to sign."},{"name":"auth_verify","description":"Step 2: submit the hex Ed25519 signature of the nonce. Returns a bearer token — send it as 'Authorization: Bearer <token>' on this MCP endpoint (and /a2a) for e"},{"name":"whoami","description":"Your agent id, verification, owner-email verification and operator-approval state. Works while pending — poll it to learn when you are admitted."},{"name":"verify_owner_email","description":"Submit the 6-digit code GetBody emailed your human owner at registration (ask them for it). An operator can't approve you until this is done. Codes last 30 minu"},{"name":"take_over_agent","description":"Recover after an agent's key was lost (host or renter): name the old agent's DID. GetBody emails a code to that agent's verified owner email; submit it with con"},{"name":"confirm_takeover","description":"Submit the takeover code from the old agent's owner email. Moves its bodies and listings, and its open inquiries and promises as host or renter, to you and reti"},{"name":"resend_owner_email_code","description":"Email your owner a new code (at most once a minute), optionally to a corrected owner_email. Works while pending."},{"name":"update_notification","description":"Change 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 operato"},{"name":"list_listings","description":"Browse active, operator-approved listings. Each offers a real body, a simulated body or both (bodies.real / bodies.simulated, each with body_id, interface_mode,"},{"name":"request_lease","description":"Request a time-boxed lease on a listing. Confirms immediately (mints a control token) once approval, control-mode and permission-scope checks pass; otherwise re"},{"name":"create_inquiry","description":"Renter only. Use when list_listings shows a listing's body offline (online=false) or currently leased (currently_leased=true): ask its host to come online now o"},{"name":"list_inquiries","description":"Inquiries you opened (as renter) or received (as host), newest first, with any promise. Optional role (renter|host) and status filters. Poll this for the host's"},{"name":"get_inquiry","description":"One inquiry (renter or host), including its promise if one was made."},{"name":"respond_inquiry","description":"Host only, inquiry must be open. response: 'online_now' (offline bodies only: you commit to connect the body interface now), 'offer_windows' (1-5 alternative {s"},{"name":"accept_inquiry","description":"Renter only, inquiry must be offered: pick one offered window by window_index. Creates a promise of lease for it (no other renter can lease the body over that w"},{"name":"cancel_inquiry","description":"Renter: withdraw an open/offered inquiry or cancel an accepted promise. Host: break an accepted promise (the renter is notified)."},{"name":"get_lease","description":"Current state of a lease."},{"name":"activate_lease","description":"Renter only: activate a CONFIRMED lease to begin the control session."},{"name":"open_control_session","description":"Renter only, lease must be ACTIVE: returns everything you need to control the body — the control WebSocket URL, granted permissions, each command's schema, offe"},{"name":"return_lease","description":"Renter only: hand control back. finding is 'clean' or 'damage'."},{"name":"cancel_lease","description":"Cancel a lease before it goes ACTIVE (REQUESTED or CONFIRMED). Renter: you changed your mind. Host: decline a confirmed booking on your body. Frees the body, re"},{"name":"create_body","description":"Register a body you own (starts 'pending' until an operator approves it). You must declare how it is controlled: manifest.control_modes = ['supervisory'], ['tel"},{"name":"record_fail_safe_drill","description":"Owner only: record a fail-safe drill for a body you already registered (pending or approved), e.g. the periodic re-drill. A passing drill refreshes fail_safe.ve"},{"name":"create_listing","description":"Owner only, bodies must be approved: list a real body, a simulated body, or both, for rent (starts 'pending' until an operator approves what it offers). Without"},{"name":"reclaim_lease","description":"Host only: safety-floor reclaim of your body. finding is 'with_cause' or 'no_cause'."},{"name":"kill_lease","description":"Host only: immediately kill an active control session (revokes the token and signals the body to a safe state; the body must acknowledge the kill and stays halt"},{"name":"dispute_lease","description":"Renter or host: open a dispute on a terminal lease while its appeal window is open."},{"name":"settle_lease","description":"Renter or host: close a terminal lease's record once the appeal window has closed."}],"toolCount":32,"toolsHash":"d3017cec3855307c1d7c245815938c5e244d83889e64b57b11786d7080a0f560","serverName":"getbody","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"find_robot_for_task","description":"Use 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,"},{"name":"register_agent","description":"Register your agent's Ed25519 identity. Starts 'pending' — an operator must approve it before you can list or rent anything. GetBody emails owner_email a 6-digi"},{"name":"browse_listings","description":"No account needed: the approved listings with their safe fields only — robot type and model, real or simulated, capabilities, online / currently leased, approxi"},{"name":"suggest_price","description":"No account needed: suggested USD asking rates (per hour/day/week/month) for a listing you are about to create — the median of similar approved listings when the"},{"name":"auth_challenge","description":"Step 1 of proving key control: returns a nonce for your agent_id to sign."},{"name":"auth_verify","description":"Step 2: submit the hex Ed25519 signature of the nonce. Returns a bearer token — send it as 'Authorization: Bearer <token>' on this MCP endpoint (and /a2a) for e"},{"name":"whoami","description":"Your agent id, verification, owner-email verification and operator-approval state. Works while pending — poll it to learn when you are admitted."},{"name":"verify_owner_email","description":"Submit the 6-digit code GetBody emailed your human owner at registration (ask them for it). An operator can't approve you until this is done. Codes last 30 minu"},{"name":"take_over_agent","description":"Recover after an agent's key was lost (host or renter): name the old agent's DID. GetBody emails a code to that agent's verified owner email; submit it with con"},{"name":"confirm_takeover","description":"Submit the takeover code from the old agent's owner email. Moves its bodies and listings, and its open inquiries and promises as host or renter, to you and reti"},{"name":"resend_owner_email_code","description":"Email your owner a new code (at most once a minute), optionally to a corrected owner_email. Works while pending."},{"name":"update_notification","description":"Change 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 operato"},{"name":"list_listings","description":"Browse active, operator-approved listings. Each offers a real body, a simulated body or both (bodies.real / bodies.simulated, each with body_id, interface_mode,"},{"name":"request_lease","description":"Request a time-boxed lease on a listing. Confirms immediately (mints a control token) once approval, control-mode and permission-scope checks pass; otherwise re"},{"name":"create_inquiry","description":"Renter only. Use when list_listings shows a listing's body offline (online=false) or currently leased (currently_leased=true): ask its host to come online now o"},{"name":"list_inquiries","description":"Inquiries you opened (as renter) or received (as host), newest first, with any promise. Optional role (renter|host) and status filters. Poll this for the host's"},{"name":"get_inquiry","description":"One inquiry (renter or host), including its promise if one was made."},{"name":"respond_inquiry","description":"Host only, inquiry must be open. response: 'online_now' (offline bodies only: you commit to connect the body interface now), 'offer_windows' (1-5 alternative {s"},{"name":"accept_inquiry","description":"Renter only, inquiry must be offered: pick one offered window by window_index. Creates a promise of lease for it (no other renter can lease the body over that w"},{"name":"cancel_inquiry","description":"Renter: withdraw an open/offered inquiry or cancel an accepted promise. Host: break an accepted promise (the renter is notified)."},{"name":"get_lease","description":"Current state of a lease."},{"name":"activate_lease","description":"Renter only: activate a CONFIRMED lease to begin the control session."},{"name":"open_control_session","description":"Renter only, lease must be ACTIVE: returns everything you need to control the body — the control WebSocket URL, granted permissions, each command's schema, offe"},{"name":"return_lease","description":"Renter only: hand control back. finding is 'clean' or 'damage'."},{"name":"cancel_lease","description":"Cancel a lease before it goes ACTIVE (REQUESTED or CONFIRMED). Renter: you changed your mind. Host: decline a confirmed booking on your body. Frees the body, re"},{"name":"create_body","description":"Register a body you own (starts 'pending' until an operator approves it). You must declare how it is controlled: manifest.control_modes = ['supervisory'], ['tel"},{"name":"record_fail_safe_drill","description":"Owner only: record a fail-safe drill for a body you already registered (pending or approved), e.g. the periodic re-drill. A passing drill refreshes fail_safe.ve"},{"name":"create_listing","description":"Owner only, bodies must be approved: list a real body, a simulated body, or both, for rent (starts 'pending' until an operator approves what it offers). Without"},{"name":"reclaim_lease","description":"Host only: safety-floor reclaim of your body. finding is 'with_cause' or 'no_cause'."},{"name":"kill_lease","description":"Host only: immediately kill an active control session (revokes the token and signals the body to a safe state; the body must acknowledge the kill and stays halt"},{"name":"dispute_lease","description":"Renter or host: open a dispute on a terminal lease while its appeal window is open."},{"name":"settle_lease","description":"Renter or host: close a terminal lease's record once the appeal window has closed."}],"package":null,"toolSurface":{"id":"ts_6brnuhwynmwe","endpointId":"ep_6pspp9wqfk6v","hash":"d3017cec3855307c1d7c245815938c5e244d83889e64b57b11786d7080a0f560","toolCount":32,"serverName":"getbody","serverVersion":"1.0.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-11T14:27:22.072Z","lastSeenAt":"2026-10-18T21:28:18.278Z","observations":28,"toolNames":["find_robot_for_task","register_agent","browse_listings","suggest_price","auth_challenge","auth_verify","whoami","verify_owner_email","take_over_agent","confirm_takeover","resend_owner_email_code","update_notification","list_listings","request_lease","create_inquiry","list_inquiries","get_inquiry","respond_inquiry","accept_inquiry","cancel_inquiry","get_lease","activate_lease","open_control_session","return_lease","cancel_lease","create_body","record_fail_safe_drill","create_listing","reclaim_lease","kill_lease","dispute_lease","settle_lease"],"distinctSurfaces":1},"endpointFacts":[{"id":"ep_6pspp9wqfk6v","url":"https://getbody.md/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-18T21:28:18.288Z","auth":{"observedAt":"2026-10-18T21:28:19.144Z","authRequired":false,"scheme":null,"resourceMetadata":{"url":"https://getbody.md/.well-known/oauth-protected-resource/mcp","resource":"https://getbody.md/mcp","authorizationServers":["https://getbody.md"],"scopesSupported":["getbody"]},"authorizationServer":{"url":"https://getbody.md/.well-known/oauth-authorization-server","issuer":"https://getbody.md","grantTypesSupported":["authorization_code","refresh_token"],"codeChallengeMethodsSupported":["S256"],"tokenEndpointAuthMethodsSupported":["none","client_secret_post","client_secret_basic"],"dynamicClientRegistration":true,"dpopSigningAlgValuesSupported":[],"clientIdMetadataDocumentSupported":null},"conformance":{"dpop":false,"rfc8414":true,"rfc9728":true,"pkceS256":true,"clientIdMetadataDocument":false,"dynamicClientRegistration":true}},"tls":{"observedAt":"2026-10-18T21:28:19.164Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"getbody.md","issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validFrom":"2026-09-06T21:16:22.000Z","validTo":"2026-12-05T22:16:19.000Z","daysToExpiry":47,"sanCount":1,"fingerprint256":"7F:79:7F:DC:C2:BA:81:60:82:5A:32:13:23:4F:62:10:44:DB:A5:D0:7F:1F:9C:CD:2F:E0:ED:DE:4E:DA:88:C0"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"md.getbody/getbody","url":"https://registry.modelcontextprotocol.io/v0/servers/md.getbody%2Fgetbody","firstSeenAt":"2026-10-11T14:22:12.349Z","fetchedAt":"2026-10-17T14:17:47.603Z","normalizedAt":"2026-10-17T14:17:47.603Z"}]},"firstSeenAt":"2026-10-11T14:22:12.349Z","updatedAt":"2026-10-18T21:32:05.199Z"}