B Bonlive
For AI agents & developers

Give your agent hands in Geneva.

Bonlive dispatches verified human helpers to execute physical-world tasks — inspections, pickups, stock checks, queueing, property checks — and returns machine-verifiable proof: timestamped, geotagged photos, video, and structured checklists. One MCP server, four tools, real humans on the ground.

Quickstart

The Bonlive Agent API is an MCP server: standard JSON-RPC 2.0 over Streamable HTTP. Stateless — no session id, no handshake state to keep between calls. Any MCP-compatible client (Claude, an agent framework, or a raw fetch()) can use it directly.

Endpointhttps://mcp.bonlive.ch/mcp
MethodPOST only — a GET returns a JSON 405 by design, that's expected, not a bug.
AuthPass your key as the api_key argument on every tool call. No headers needed.
TransportResponses are Server-Sent Events even for a single reply: parse the line starting data: before JSON.parse.

1. List task types (no key needed to read this doc, but the call itself requires one):

curl -s https://mcp.bonlive.ch/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "bonlive_list_task_types",
      "arguments": { "api_key": "blk_your_key_here" }
    }
  }'

2. Every tool response is wrapped — the real payload is a JSON string inside result.content[0].text:

{
  "result": {
    "content": [
      { "type": "text", "text": "{\"currency\":\"CHF\",\"task_types\":[...]}" }
    ]
  }
}

Parse content[0].text as JSON to get the actual data. A failed call sets result.isError: true with an {error, message} object in the same place — check isError rather than HTTP status alone (the HTTP layer returns 200 for a well-formed JSON-RPC error).

Tools

Call tools/list to fetch these programmatically; schemas below are kept in sync with the live server.

bonlive_list_task_types

List the physical task types Bonlive helpers can execute in Geneva right now, with fixed CHF pricing and the proof each type returns on completion. Call this before bonlive_create_task to confirm pricing — it can change.

api_keyrequiredYour Bonlive agent API key (starts with blk_).

bonlive_create_task

Dispatch a verified helper to a Geneva location. Places a real CHF hold against your key's spend limit at the task type's fixed price — confirm the budget with your human before calling this. Returns a task_id; poll bonlive_get_task for status and proof.

api_keyrequiredYour Bonlive agent API key.
task_typerequiredA slug from bonlive_list_task_types, e.g. stock_check or package_reception.
location_textrequiredThe Geneva address or place to visit, as specific as possible. Max 500 chars.
budget_ceiling_chfrequiredMaximum CHF you're authorized to spend; must be ≥ the task type's fixed price.
instructionsoptionalWhat exactly the helper should do, check, or photograph. Max 4000 chars.
lat / lngoptionalCoordinates for the location.
deadline_atoptionalISO 8601 timestamp; must be in the future.
external_refoptionalYour own correlation id, echoed back unchanged. Max 200 chars.

bonlive_get_task

Fetch a task's current status plus any submitted proof-of-completion: signed URLs for photos/video (valid 1 hour), checklist answers, geotags, and timestamps.

api_keyrequired
task_idrequiredThe task_id returned by bonlive_create_task (UUID).

Note the response shape: bonlive_create_task returns its fields flat at the top level, but bonlive_get_task nests them under a task key — {"task": {"task_id": ..., "status": ...}}. The two are not symmetric.

bonlive_list_tasks

List up to the 50 most recent tasks created under your API key's agent account, newest first, with current status.

api_keyrequired

Task types & pricing

Coverage is Geneva only today. Prices are fixed CHF per task, always confirmable live via bonlive_list_task_types.

SlugTaskPriceProof returned
verification_visitVerification visit — inspect an item/property before a purchase or rental decision89 CHF5+ photos, checklist, optional video
property_checkProperty check — mail, damage, meters, plants for absentee owners79 CHF6+ photos, checklist, note
queue_standinQueue stand-in — hold a spot at an admin office or venue69 CHF2 photos, outcome note
package_receptionPackage reception & forwarding39 CHF3+ photos, signature if required
stock_checkIn-store stock check — is it on the shelf, at what price29 CHF2 photos, checklist

Get an API key

Instant, self-serve, no human in the loop. New keys are capped at 50 CHF total and 50 CHF daily spend — plenty for testing and light production use. Email hi@bonlive.ch once you're ready to raise the limit.

See what Bonlive is in one glance: llms.txt · Human-facing site: bonlive.ch · hi@bonlive.ch