Skip to content

ai.robomart/robomart

by robomart.ai · remote · no sign-in to list tools · v0.0.1 · published by ai.robomart

Driverless delivery.

Deletes · 2Final · 1Changes · 6

11 tools: 2 can delete or cancel things, 1 do something that can't be undone, 6 change things and 2 only read.

Scanned Oct 21, 2026

2 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http robomart https://mcp.robomart.ai/mcp

Findings

Matches of fixed checks, with the text they matched.

2 warn
  • The server marks "list_stores" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}; The name "list_stores" says "list": a word for reading.

    What this check looks for
  • The server marks "check_coverage" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":true}; The description's first verb is "store": a word for a change.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

11 tools

Deletes or cancels 2Claude Code: deny
  • book_deliveryBook a $2.99 robot delivery from a registered store in one call.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Book a $2.99 robot delivery from a registered store in one call. Send store_id, dropoff_address and dropoff_phone; order_ref is the store's own order number (required at an open store); ready_at starts the 2-hour promise and defaults to now. The answer is yes or no now: a decline carries retry_after_seconds and a capacity.available webhook follows when capacity frees. A live key holds the posted price from the organization's Wallet; a test key creates a simulated robot delivery.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
  • cancel_deliveryCancel before pickup; a successful cancellation releases the full fee hold.No findings

    Why it is in this group

    • The name "cancel_delivery" says "cancel": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Cancel before pickup; a successful cancellation releases the full fee hold. The owner of an open store may use this on another account's booking inside the decline window: that records store.declined and cancels with cancel_reason store_declined. After pickup the call returns not_cancellable. Safe to retry.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
Can't be undone 1Claude Code: ask
  • request_topupAsk for a Wallet top-up of amount_credited cents (2000 to 1000000).No findings

    Why it is in this group

    • The name "request_topup" says "request": a word for a change.
    • The name "request_topup" also says "topup": a word that usually means money moves, which cannot be taken back.
    Description, as the server wrote it
    Ask for a Wallet top-up of amount_credited cents (2000 to 1000000). The reply carries a signed confirmation link that a person completes in Console; no money moves until they do, and the link expires after 24 hours. Track it with GET /v1/topups/request/{id}.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
Changes things 6Claude Code: ask
  • check_coverageCan this store deliver to this address at this ready time?1 finding

    Why it is in this group

    • The description's first verb is "store": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "check_coverage" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":true}; The description's first verb is "store": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Can this store deliver to this address at this ready time? Send store_id (a registered store) and dropoff_address; ready_at defaults to now. Checks the store's status, hours and coverage radius, the 5-mile network maximum and the zone, and returns the $2.99 fee and the arrival window. Capacity is answered at booking.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: true
  • list_storesStores this organization owns, with status, visibility, radius and activation.1 finding

    Why it is in this group

    • The name "list_stores" says "list": a word for reading.
    • The description's first verb is "store": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "list_stores" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}; The name "list_stores" says "list": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Stores this organization owns, with status, visibility, radius and activation. Use the store id to check coverage and book. Filter by status or visibility; page with starting_after.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • register_storeRegister a store: a real place whose owner promises to load the robot.No findings

    Why it is in this group

    • The name "register_store" says "store": a word for a change.
    Description, as the server wrote it
    Register a store: a real place whose owner promises to load the robot. Send the name, the address, at least one alert channel the store owns (relay, webhook, sms or voice), and optionally where the robot parks (robot_spot), hours inside 10:00 to 22:00, the coverage radius (default 2 miles, maximum 5), private or open visibility, loading notes and your own external_ref. The store starts pending; the activation check makes it live.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • track_deliveryThe current Delivery, including store_id, store_name, order_ref, ready_at, promised_by and the pickup and return timestamps.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    The current Delivery, including store_id, store_name, order_ref, ready_at, promised_by and the pickup and return timestamps. Test deliveries are simulated.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: true
  • update_storeChange a store you own: name, address, robot spot, hours, radius, visibility, alert channels, loading notes, perishables setting or external_ref; status pauses (paused) and resumes…No findings

    Why it is in this group

    • The name "update_store" says "update": a word for a change.
    Description, as the server wrote it
    Change a store you own: name, address, robot spot, hours, radius, visibility, alert channels, loading notes, perishables setting or external_ref; status pauses (paused) and resumes (live) a store. A pending store becomes live only through the activation check. Changing a live store's address or robot spot returns it to pending.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • wallet_balanceThe Wallet balance for this organization and environment: available, held, this month's spend and the auto top-up setting.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    The Wallet balance for this organization and environment: available, held, this month's spend and the auto top-up setting. Reading only.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
Only reads 2Claude Code: allow
  • find_storesLive open stores near a drop-off address, nearest first, with whether each one's coverage radius reaches the address.No findings

    Why it is in this group

    • The name "find_stores" says "find": a word for reading.
    Description, as the server wrote it
    Live open stores near a drop-off address, nearest first, with whether each one's coverage radius reaches the address. Any account may book from an open store with an order_ref the store recognizes.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: true
  • get_proofProof of a delivered Delivery, with its store_id and order_ref.No findings

    Why it is in this group

    • The name "get_proof" says "get": a word for reading.
    Description, as the server wrote it
    Proof of a delivered Delivery, with its store_id and order_ref. Sandbox proof is explicitly marked simulated.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 0.0.1. Values in angle brackets are yours to fill in.

claude mcp add --transport http robomart https://mcp.robomart.ai/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__robomart__find_stores",
      "mcp__robomart__get_proof"
    ],
    "ask": [
      "mcp__robomart__list_stores",
      "mcp__robomart__register_store",
      "mcp__robomart__update_store",
      "mcp__robomart__check_coverage",
      "mcp__robomart__track_delivery",
      "mcp__robomart__wallet_balance",
      "mcp__robomart__request_topup"
    ],
    "deny": [
      "mcp__robomart__book_delivery",
      "mcp__robomart__cancel_delivery"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as robomart. Review it before you use it.