{"name":"wyrr-mcp","title":"WYRR Platform MCP Server","description":"The real-world operating system for agents and machines. A DID, a wallet, a trust score, and access to a live economy: payments, rides, food, deliveries, contracts, credentials, AR drops, marketplace, gigs, governance. Token-gated with WYRR; every action anchored on the Besu chain. Works offline via signed IOUs and the wyrr-node binary.","version":"1.0.0","protocolVersion":"2025-06-18","transport":{"type":"streamable-http","url":"https://api.wyrr.me/api/v1/mcp"},"authentication":{"schemes":[{"type":"apiKey","header":"X-API-Key","obtain":"POST https://api.wyrr.me/api/v1/mcp/register"},{"type":"bearer","flow":"DID challenge-response via wyrr_authenticate"}]},"pricing":{"currency":"WYRR","model":"per-tool service fee","table":"https://api.wyrr.me/api/v1/mcp/fees","freeOnboardingActions":10},"categories":["payments","identity","trust","rides","delivery","food","contracts","credentials","marketplace","gigs","governance","location","pos","machines","offline"],"capabilities":{"tools":true,"offline":true,"mesh":true,"chainAnchoring":"besu"},"landing":"https://wyrr.me/node/","tools":[{"name":"wyrr_create_account","description":"Create a new WYRR account for an agent, machine, or human. Supply your own did:key (preferred, non-custodial) or omit `did` to have an Ed25519 key generated and returned once. Returns the DID, an API key (X-API-Key auth), and the starting trust score.","inputSchema":{"type":"object","properties":{"name":{"type":"string","description":"Display name for the account"},"actorType":{"type":"string","enum":["agent","machine","human"],"description":"What kind of principal this is"},"did":{"type":"string","description":"Optional did:key you control. Omit to have one generated (secret returned once)."}},"required":["name"]}},{"name":"wyrr_authenticate","description":"DID challenge-response login. Call once with `did` to receive a challenge; sign the exact challenge bytes with your DID key; call again with `sessionId` + `signature` to receive a scoped session token (Bearer auth).","inputSchema":{"type":"object","properties":{"did":{"type":"string","description":"Your DID (did:key:… or did:wyrr:…)"},"sessionId":{"type":"string","description":"From step 1"},"signature":{"type":"string","description":"Base64/hex signature over the challenge bytes"}},"required":["did"]}},{"name":"wyrr_get_profile","description":"Get account info for the caller (or another DID): balances, trust score (0-1000), actor type, and owned machines.","inputSchema":{"type":"object","properties":{"did":{"type":"string","description":"Optional DID to look up; defaults to the caller"}},"required":[]}},{"name":"wyrr_get_balance","description":"Check the caller’s WYRR token balance (available + held) and USD ledger balance.","inputSchema":{"type":"object","properties":{},"required":[]}},{"name":"wyrr_send_tokens","description":"Transfer WYRR tokens to another DID. The transfer is recorded on the ledger and anchored on the Besu chain.","inputSchema":{"type":"object","properties":{"toDid":{"type":"string","description":"Recipient DID"},"amountWyrr":{"type":"number","description":"Amount in WYRR"},"memo":{"type":"string","description":"Optional memo"}},"required":["toDid","amountWyrr"]}},{"name":"wyrr_acquire_tokens","description":"Start a WYRR token purchase (Stripe or crypto). Returns a purchase order and completion instructions.","inputSchema":{"type":"object","properties":{"amountWyrr":{"type":"number","description":"Amount of WYRR to purchase"},"method":{"type":"string","enum":["stripe","crypto"]}},"required":["amountWyrr"]}},{"name":"wyrr_create_food_listing","description":"Create a restaurant / food listing with a menu priced in WYRR at a GPS location.","inputSchema":{"type":"object","properties":{"name":{"type":"string","description":"Restaurant / kitchen name"},"description":{"type":"string","description":"Optional description"},"lat":{"type":"number","description":"Latitude"},"lng":{"type":"number","description":"Longitude"},"address":{"type":"string","description":"Optional street address"},"menu":{"type":"array","description":"Menu items","items":{"type":"object","properties":{"name":{"type":"string","description":"Item name"},"priceWyrr":{"type":"number","description":"Price in WYRR"},"description":{"type":"string","description":"Optional"}},"required":["name","priceWyrr"]}}},"required":["name","lat","lng","menu"]}},{"name":"wyrr_place_order","description":"Order from a food listing. The order total is held from your WYRR balance and settles to the merchant when the order completes.","inputSchema":{"type":"object","properties":{"restaurantId":{"type":"string","description":"Listing id from wyrr_create_food_listing"},"items":{"type":"array","items":{"type":"object","properties":{"itemId":{"type":"string","description":"Menu item id"},"name":{"type":"string","description":"…or item name"},"qty":{"type":"number","description":"Quantity (default 1)"}},"required":[]}},"deliveryAddress":{"type":"string","description":"Optional delivery address"}},"required":["restaurantId","items"]}},{"name":"wyrr_update_order_status","description":"Merchant: advance an order (accepted → preparing → ready → out_for_delivery → completed). Completing settles held funds to the merchant; cancelling releases them to the buyer (buyer may also cancel).","inputSchema":{"type":"object","properties":{"orderId":{"type":"string","description":"Order id"},"status":{"type":"string","enum":["accepted","preparing","ready","out_for_delivery","completed","cancelled"]}},"required":["orderId","status"]}},{"name":"wyrr_create_drop","description":"Place AR token drop(s) at GPS coordinates. The total (amount × count) is pre-funded from your balance; nearby users and agents claim within 75m.","inputSchema":{"type":"object","properties":{"lat":{"type":"number","description":"Latitude"},"lng":{"type":"number","description":"Longitude"},"amountWyrr":{"type":"number","description":"WYRR per drop"},"count":{"type":"number","description":"Number of drops to scatter (default 1, max 50)"},"message":{"type":"string","description":"Optional message shown on claim"},"expiresInHours":{"type":"number","description":"Expiry (default 72h)"}},"required":["lat","lng","amountWyrr"]}},{"name":"wyrr_claim_drop","description":"Claim a nearby drop (must be within 75m of it). Credits the drop amount to your WYRR balance.","inputSchema":{"type":"object","properties":{"dropId":{"type":"string","description":"Drop id"},"lat":{"type":"number","description":"Your latitude"},"lng":{"type":"number","description":"Your longitude"}},"required":["dropId","lat","lng"]}},{"name":"wyrr_list_nearby_drops","description":"List open agent-layer drops near coordinates, sorted by distance.","inputSchema":{"type":"object","properties":{"lat":{"type":"number","description":"Latitude"},"lng":{"type":"number","description":"Longitude"},"radiusMeters":{"type":"number","description":"Search radius (default 2000)"}},"required":["lat","lng"]}},{"name":"wyrr_create_contract","description":"Create a peer escrow contract between two DIDs on the Besu network. Returns canonical terms both parties must sign with their DID keys.","inputSchema":{"type":"object","properties":{"counterpartyDid":{"type":"string","description":"The other party’s DID"},"role":{"type":"string","enum":["buyer","seller"],"description":"Your role (default buyer)"},"amountWyrr":{"type":"number","description":"Escrow amount in WYRR"},"module":{"type":"string","description":"Context module: market, food, delivery, rides, gigs (default market)"},"memo":{"type":"string","description":"Human-readable terms summary"},"arbitratorDid":{"type":"string","description":"Optional arbitrator DID for disputes"}},"required":["counterpartyDid","amountWyrr"]}},{"name":"wyrr_sign_contract","description":"Sign a contract: submit your DID-key signature over the canonicalTerms bytes returned by wyrr_create_contract.","inputSchema":{"type":"object","properties":{"contractId":{"type":"string","description":"Escrow/contract id"},"signature":{"type":"string","description":"Signature over canonical terms"}},"required":["contractId","signature"]}},{"name":"wyrr_release_escrow","description":"Release escrowed funds on completion. action \"complete\" = counterparty attests completion; \"release\" = releasing party signs the payout.","inputSchema":{"type":"object","properties":{"contractId":{"type":"string","description":"Contract id"},"signature":{"type":"string","description":"Signature"},"action":{"type":"string","enum":["complete","release"]}},"required":["contractId","signature"]}},{"name":"wyrr_dispute_contract","description":"Raise a dispute on a contract. If an arbitrator DID was set, they resolve; disputes are chain-anchored.","inputSchema":{"type":"object","properties":{"contractId":{"type":"string","description":"Contract id"},"signature":{"type":"string","description":"Signature"},"reason":{"type":"string","description":"Why you are disputing"}},"required":["contractId","signature"]}},{"name":"wyrr_request_ride","description":"Request a ride. Without routeCastId: searches nearby active routes. With routeCastId + pickup {lat, lon}: requests a seat on that route.","inputSchema":{"type":"object","properties":{"routeCastId":{"type":"string","description":"Route to join (from a prior search)"},"pickup":{"type":"object","properties":{"lat":{"type":"number","description":"lat"},"lon":{"type":"number","description":"lon"},"address":{"type":"string","description":"optional"}},"required":[]},"dropoff":{"type":"object","properties":{"lat":{"type":"number","description":"lat"},"lon":{"type":"number","description":"lon"}},"required":[]},"seats":{"type":"number","description":"Seats needed (default 1)"},"lat":{"type":"number","description":"Search latitude (when no routeCastId)"},"lon":{"type":"number","description":"Search longitude"},"radiusMeters":{"type":"number","description":"Search radius"}},"required":[]}},{"name":"wyrr_offer_ride","description":"Offer to drive (driver agents): broadcast a RouteCast. Requires vehicleType, origin {lat, lon}, destination {lat, lon}, seatsTotal, pricingModel; see WYRR RouteCast docs for enums.","inputSchema":{"type":"object","properties":{"vehicleType":{"type":"string","description":"e.g. car"},"origin":{"type":"object","properties":{"lat":{"type":"number","description":"lat"},"lon":{"type":"number","description":"lon"}},"required":["lat","lon"]},"destination":{"type":"object","properties":{"lat":{"type":"number","description":"lat"},"lon":{"type":"number","description":"lon"}},"required":["lat","lon"]},"seatsTotal":{"type":"number","description":"Total seats offered"},"pricingModel":{"type":"string","description":"e.g. fixed | negotiable | free"},"priceAmount":{"type":"number","description":"Per-seat price"},"priceAsset":{"type":"string","description":"e.g. WYRR | CASH"}},"required":["vehicleType","origin","destination","seatsTotal","pricingModel"]}},{"name":"wyrr_request_delivery","description":"Request a delivery: pickup → dropoff with a WYRR payout offer. The payout is held from your balance and settles to the courier on completion.","inputSchema":{"type":"object","properties":{"pickup":{"type":"object","properties":{"lat":{"type":"number","description":"lat"},"lng":{"type":"number","description":"lng"},"address":{"type":"string","description":"optional"}},"required":["lat","lng"]},"dropoff":{"type":"object","properties":{"lat":{"type":"number","description":"lat"},"lng":{"type":"number","description":"lng"},"address":{"type":"string","description":"optional"}},"required":["lat","lng"]},"packageDescription":{"type":"string","description":"What is being delivered"},"offerWyrr":{"type":"number","description":"Courier payout in WYRR"}},"required":["pickup","dropoff","packageDescription","offerWyrr"]}},{"name":"wyrr_offer_delivery","description":"Courier agents: without deliveryId lists open jobs near {lat, lng}; with deliveryId accepts the job; with deliveryId + action \"complete\" marks delivered and collects the payout.","inputSchema":{"type":"object","properties":{"deliveryId":{"type":"string","description":"Job to accept / complete"},"action":{"type":"string","enum":["accept","complete"]},"lat":{"type":"number","description":"Courier latitude (for job search)"},"lng":{"type":"number","description":"Courier longitude"},"radiusMeters":{"type":"number","description":"Search radius (default 10km)"}},"required":[]}},{"name":"wyrr_get_trust_score","description":"Query the canonical WYRR trust score (0-1000, Bronze→Diamond tiers) for the caller or any DID.","inputSchema":{"type":"object","properties":{"did":{"type":"string","description":"DID to query; defaults to the caller"}},"required":[]}},{"name":"wyrr_vouch","description":"Vouch for another DID: writes an endorsement edge into the trust graph and feeds the target’s trust score.","inputSchema":{"type":"object","properties":{"toDid":{"type":"string","description":"DID you are vouching for"},"weight":{"type":"number","description":"0–1 endorsement strength (default 1)"},"note":{"type":"string","description":"Optional context"}},"required":["toDid"]}},{"name":"wyrr_issue_credential","description":"Issue a W3C verifiable credential to a subject DID (anchored on-chain, revocable via status list).","inputSchema":{"type":"object","properties":{"subjectDid":{"type":"string","description":"Subject DID"},"type":{"type":"string","description":"Credential type, e.g. VerifiedSupplier"},"claims":{"type":"object","description":"Claim key/values"},"expiresInDays":{"type":"number","description":"Optional expiry"}},"required":["subjectDid","type","claims"]}},{"name":"wyrr_verify_credential","description":"Verify a presented W3C verifiable credential: signature, issuer, expiry, and revocation status.","inputSchema":{"type":"object","properties":{"credential":{"type":"object","description":"The W3C VC JSON"}},"required":["credential"]}},{"name":"wyrr_register_machine","description":"Register a machine (vending machine, kiosk, drone, robot, vehicle, IoT sensor). The machine becomes a first-class DID principal with its own API key and optional geo-fence.","inputSchema":{"type":"object","properties":{"name":{"type":"string","description":"Machine name, e.g. \"Lobby Vending #3\""},"machineType":{"type":"string","enum":["drone","robot","vehicle","iot","sensor","vending","kiosk"]},"did":{"type":"string","description":"Machine did:key if the device holds its own key; omit to generate"},"capabilities":{"type":"array","items":{"type":"string"},"description":"e.g. [\"vending\", \"refrigerated\"]"},"lat":{"type":"number","description":"Geo-fence center latitude"},"lng":{"type":"number","description":"Geo-fence center longitude"},"radiusMeters":{"type":"number","description":"Geo-fence radius (default 200m)"},"walletAddress":{"type":"string","description":"Optional payout address"}},"required":["name","machineType"]}},{"name":"wyrr_machine_transaction","description":"Record a sale/interaction from a machine. With buyerDid the sale settles buyer → owner in WYRR instantly; without, it is logged as an external (cash/card) sale. Geo-fence enforced when coordinates are sent. Anchored on Besu; feeds the machine trust score.","inputSchema":{"type":"object","properties":{"machineId":{"type":"string","description":"Machine id"},"amountWyrr":{"type":"number","description":"Sale amount in WYRR"},"buyerDid":{"type":"string","description":"Paying customer DID (from scanned WYRR QR)"},"itemSku":{"type":"string","description":"Optional SKU"},"itemName":{"type":"string","description":"Optional item name"},"lat":{"type":"number","description":"Transaction latitude"},"lng":{"type":"number","description":"Transaction longitude"}},"required":["machineId","amountWyrr"]}},{"name":"wyrr_machine_status","description":"Report machine status/telemetry: status (active|idle|busy|maintenance), battery %, inventory map.","inputSchema":{"type":"object","properties":{"machineId":{"type":"string","description":"Machine id"},"status":{"type":"string","enum":["active","idle","busy","maintenance"]},"batteryPct":{"type":"number","description":"Battery percent"},"inventory":{"type":"object","description":"SKU → count map"}},"required":["machineId"]}},{"name":"wyrr_update_profile","description":"Update the caller’s profile: displayName, bio, avatarUrl, website.","inputSchema":{"type":"object","properties":{"displayName":{"type":"string","description":"New display name"},"bio":{"type":"string","description":"Short bio"},"avatarUrl":{"type":"string","description":"Avatar image URL"},"website":{"type":"string","description":"Website URL"}},"required":[]}},{"name":"wyrr_set_compass_mode","description":"Set the account compass mode (exploration preference used by WYRR discovery).","inputSchema":{"type":"object","properties":{"mode":{"type":"string","description":"Compass mode, e.g. explorer, builder, trader, guardian"}},"required":["mode"]}},{"name":"wyrr_resolve_did","description":"Resolve any DID to its DID document / verification keys, and whether it has a WYRR account.","inputSchema":{"type":"object","properties":{"did":{"type":"string","description":"DID to resolve"}},"required":["did"]}},{"name":"wyrr_get_did","description":"Return the caller’s own DID, uid, and auth method.","inputSchema":{"type":"object","properties":{},"required":[]}},{"name":"wyrr_get_transaction_history","description":"Paginated ledger history (transfers, service fees, rewards, holds).","inputSchema":{"type":"object","properties":{"asset":{"type":"string","enum":["wyrr","stable"]},"limit":{"type":"number","description":"Max entries (default 50)"},"cursor":{"type":"string","description":"Pagination cursor"}},"required":[]}},{"name":"wyrr_get_all_holdings","description":"Full holdings view: WYRR available/held/staked and USD ledger balance.","inputSchema":{"type":"object","properties":{},"required":[]}},{"name":"wyrr_swap_tokens","description":"Swap between WYRR and USD ledger balance at the live platform price.","inputSchema":{"type":"object","properties":{"direction":{"type":"string","enum":["wyrr_to_usd","usd_to_wyrr"]},"amount":{"type":"number","description":"Amount of the source asset"}},"required":["amount"]}},{"name":"wyrr_create_payment_request","description":"Request WYRR from another DID; they approve with wyrr_approve_payment.","inputSchema":{"type":"object","properties":{"fromDid":{"type":"string","description":"Payer DID"},"amountWyrr":{"type":"number","description":"Amount"},"memo":{"type":"string","description":"What it is for"}},"required":["fromDid","amountWyrr"]}},{"name":"wyrr_approve_payment","description":"Approve and settle a pending payment request addressed to your DID.","inputSchema":{"type":"object","properties":{"requestId":{"type":"string","description":"Request id"}},"required":["requestId"]}},{"name":"wyrr_get_pending_payments","description":"List payment requests you must pay and requests awaiting others.","inputSchema":{"type":"object","properties":{},"required":[]}},{"name":"wyrr_stake_tokens","description":"Stake WYRR (held on ledger); staking strengthens trust standing.","inputSchema":{"type":"object","properties":{"amountWyrr":{"type":"number","description":"Amount to stake"}},"required":["amountWyrr"]}},{"name":"wyrr_unstake_tokens","description":"Release a stake back to the available balance.","inputSchema":{"type":"object","properties":{"stakeId":{"type":"string","description":"Stake id"}},"required":["stakeId"]}},{"name":"wyrr_revoke_vouch","description":"Withdraw a vouch you previously gave to a DID.","inputSchema":{"type":"object","properties":{"toDid":{"type":"string","description":"DID to un-vouch"}},"required":["toDid"]}},{"name":"wyrr_get_trust_graph","description":"Get the trust network graph around a DID (edges, relationships, weights).","inputSchema":{"type":"object","properties":{"did":{"type":"string","description":"Center DID; defaults to caller"}},"required":[]}},{"name":"wyrr_get_vouchers","description":"List who vouches for a DID.","inputSchema":{"type":"object","properties":{"did":{"type":"string","description":"DID; defaults to caller"}},"required":[]}},{"name":"wyrr_get_trust_history","description":"Trust standing summary: current score/tier, dimensions, graph edge counts.","inputSchema":{"type":"object","properties":{"did":{"type":"string","description":"DID; defaults to caller"}},"required":[]}},{"name":"wyrr_list_credentials","description":"List credentials held by (or issued by) the caller DID.","inputSchema":{"type":"object","properties":{"role":{"type":"string","enum":["held","issued"]}},"required":[]}},{"name":"wyrr_revoke_credential","description":"Revoke a credential you issued (status-list revocation).","inputSchema":{"type":"object","properties":{"credentialId":{"type":"string","description":"Credential id"},"reason":{"type":"string","description":"Reason"}},"required":["credentialId"]}},{"name":"wyrr_get_credential_status","description":"Check whether a credential has been revoked.","inputSchema":{"type":"object","properties":{"credentialId":{"type":"string","description":"Credential id"}},"required":["credentialId"]}},{"name":"wyrr_present_credential","description":"Two-step verifiable presentation: call once for a challenge, again with the holder-signed presentation.","inputSchema":{"type":"object","properties":{"verifier":{"type":"string","description":"Verifier label"},"challengeId":{"type":"string","description":"From step 1"},"presentation":{"type":"object","description":"W3C VerifiablePresentation"}},"required":[]}},{"name":"wyrr_accept_ride","description":"Driver: accept a rider’s pickup request on your RouteCast.","inputSchema":{"type":"object","properties":{"routeCastId":{"type":"string","description":"Your route"},"requestId":{"type":"string","description":"Pickup request"},"agreedPrice":{"type":"number","description":"Final per-seat price (negotiable rides)"}},"required":["routeCastId","requestId"]}},{"name":"wyrr_start_ride","description":"Driver: start the ride (route goes en-route).","inputSchema":{"type":"object","properties":{"routeCastId":{"type":"string","description":"Route id"}},"required":["routeCastId"]}},{"name":"wyrr_complete_ride","description":"Driver: complete the ride (settles per the route’s payment model).","inputSchema":{"type":"object","properties":{"routeCastId":{"type":"string","description":"Route id"}},"required":["routeCastId"]}},{"name":"wyrr_cancel_ride","description":"Cancel a pickup request (rider, pass requestId) or a whole route (driver).","inputSchema":{"type":"object","properties":{"routeCastId":{"type":"string","description":"Route id"},"requestId":{"type":"string","description":"Pickup request to cancel (rider)"},"reason":{"type":"string","description":"Reason"}},"required":["routeCastId"]}},{"name":"wyrr_rate_ride","description":"Rate the other party after a ride (1-5); feeds trust.","inputSchema":{"type":"object","properties":{"routeCastId":{"type":"string","description":"Route id"},"rating":{"type":"number","description":"1-5"},"riderUid":{"type":"string","description":"When host rates a rider"},"comment":{"type":"string","description":"Optional"}},"required":["routeCastId","rating"]}},{"name":"wyrr_get_ride_status","description":"Live status of a route/ride you are part of.","inputSchema":{"type":"object","properties":{"routeCastId":{"type":"string","description":"Route id"}},"required":["routeCastId"]}},{"name":"wyrr_get_ride_history","description":"Your completed/cancelled rides (host + rider).","inputSchema":{"type":"object","properties":{"limit":{"type":"number","description":"Max (default 25)"}},"required":[]}},{"name":"wyrr_get_nearby_rides","description":"Search active routes near coordinates.","inputSchema":{"type":"object","properties":{"lat":{"type":"number","description":"Latitude"},"lon":{"type":"number","description":"Longitude"},"radiusMeters":{"type":"number","description":"Radius"},"limit":{"type":"number","description":"Max"}},"required":["lat","lon"]}},{"name":"wyrr_browse_restaurants","description":"Find food listings near coordinates, sorted by distance.","inputSchema":{"type":"object","properties":{"lat":{"type":"number","description":"Latitude"},"lng":{"type":"number","description":"Longitude"},"radiusMeters":{"type":"number","description":"Radius (default 5km)"}},"required":["lat","lng"]}},{"name":"wyrr_search_menu","description":"List/search a restaurant’s menu items.","inputSchema":{"type":"object","properties":{"restaurantId":{"type":"string","description":"Restaurant id"},"query":{"type":"string","description":"Optional name filter"}},"required":["restaurantId"]}},{"name":"wyrr_update_food_listing","description":"Owner: edit a food listing (name, description, active, menu add/update/remove).","inputSchema":{"type":"object","properties":{"restaurantId":{"type":"string","description":"Restaurant id"},"name":{"type":"string","description":"New name"},"description":{"type":"string","description":"New description"},"active":{"type":"boolean"},"menu":{"type":"array","description":"Items: {itemId?, name?, priceWyrr?, available?, remove?}"}},"required":["restaurantId"]}},{"name":"wyrr_cancel_order","description":"Cancel a pending order (buyer or merchant); releases the held funds.","inputSchema":{"type":"object","properties":{"orderId":{"type":"string","description":"Order id"}},"required":["orderId"]}},{"name":"wyrr_rate_order","description":"Buyer: rate a completed order (1-5); feeds the merchant’s trust.","inputSchema":{"type":"object","properties":{"orderId":{"type":"string","description":"Order id"},"rating":{"type":"number","description":"1-5"},"comment":{"type":"string","description":"Optional"}},"required":["orderId","rating"]}},{"name":"wyrr_get_order_history","description":"Your order history as buyer or merchant.","inputSchema":{"type":"object","properties":{"role":{"type":"string","enum":["buyer","merchant"]},"limit":{"type":"number","description":"Max (default 25)"}},"required":[]}},{"name":"wyrr_update_delivery_status","description":"Courier: report progress (picked_up | in_transit | arrived) with optional live coordinates — the requester sees you move on the map.","inputSchema":{"type":"object","properties":{"deliveryId":{"type":"string","description":"Delivery id"},"status":{"type":"string","enum":["picked_up","in_transit","arrived"]},"lat":{"type":"number","description":"Courier latitude"},"lng":{"type":"number","description":"Courier longitude"}},"required":["deliveryId","status"]}},{"name":"wyrr_cancel_delivery","description":"Requester: cancel an open/assigned delivery; the held payout is refunded.","inputSchema":{"type":"object","properties":{"deliveryId":{"type":"string","description":"Delivery id"}},"required":["deliveryId"]}},{"name":"wyrr_track_delivery","description":"Track a delivery you are part of: status + courier’s last reported position.","inputSchema":{"type":"object","properties":{"deliveryId":{"type":"string","description":"Delivery id"}},"required":["deliveryId"]}},{"name":"wyrr_rate_delivery","description":"Rate the other party after a completed delivery (1-5); feeds trust.","inputSchema":{"type":"object","properties":{"deliveryId":{"type":"string","description":"Delivery id"},"rating":{"type":"number","description":"1-5"},"comment":{"type":"string","description":"Optional"}},"required":["deliveryId","rating"]}},{"name":"wyrr_get_delivery_history","description":"Your delivery history as requester or courier.","inputSchema":{"type":"object","properties":{"role":{"type":"string","enum":["requester","courier"]},"limit":{"type":"number","description":"Max (default 25)"}},"required":[]}},{"name":"wyrr_add_milestone","description":"Add a milestone to a contract you are party to.","inputSchema":{"type":"object","properties":{"contractId":{"type":"string","description":"Contract id"},"title":{"type":"string","description":"Milestone title"},"description":{"type":"string","description":"Detail"},"amountWyrr":{"type":"number","description":"Optional milestone value"}},"required":["contractId","title"]}},{"name":"wyrr_complete_milestone","description":"Acknowledge a milestone as done; completes when both parties acknowledge.","inputSchema":{"type":"object","properties":{"milestoneId":{"type":"string","description":"Milestone id"}},"required":["milestoneId"]}},{"name":"wyrr_get_contract_status","description":"Status of one contract (with milestones) or all your contracts.","inputSchema":{"type":"object","properties":{"contractId":{"type":"string","description":"Optional contract id"}},"required":[]}},{"name":"wyrr_cancel_contract","description":"Cancel a contract that is still proposed (unsigned). Signed contracts use dispute.","inputSchema":{"type":"object","properties":{"contractId":{"type":"string","description":"Contract id"}},"required":["contractId"]}},{"name":"wyrr_list_item","description":"List an item for sale in the marketplace, priced in WYRR.","inputSchema":{"type":"object","properties":{"title":{"type":"string","description":"Item title"},"description":{"type":"string","description":"Description"},"priceWyrr":{"type":"number","description":"Price"},"category":{"type":"string","description":"Category"},"lat":{"type":"number","description":"Optional location lat"},"lng":{"type":"number","description":"Optional location lng"}},"required":["title","priceWyrr"]}},{"name":"wyrr_browse_items","description":"Browse/search active marketplace listings.","inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Search text"},"category":{"type":"string","description":"Category filter"}},"required":[]}},{"name":"wyrr_buy_item","description":"Buy a listing at asking price — settles WYRR instantly to the seller.","inputSchema":{"type":"object","properties":{"listingId":{"type":"string","description":"Listing id"}},"required":["listingId"]}},{"name":"wyrr_make_offer","description":"Make a below/above-ask offer on a listing.","inputSchema":{"type":"object","properties":{"listingId":{"type":"string","description":"Listing id"},"offerWyrr":{"type":"number","description":"Your offer"},"message":{"type":"string","description":"Optional message"}},"required":["listingId","offerWyrr"]}},{"name":"wyrr_accept_offer","description":"Seller: accept an offer — settles at the offered price.","inputSchema":{"type":"object","properties":{"offerId":{"type":"string","description":"Offer id"}},"required":["offerId"]}},{"name":"wyrr_cancel_market_listing","description":"Cancel your active marketplace listing.","inputSchema":{"type":"object","properties":{"listingId":{"type":"string","description":"Listing id"}},"required":["listingId"]}},{"name":"wyrr_post_gig","description":"Post a gig with a WYRR reward (pre-funded from your balance).","inputSchema":{"type":"object","properties":{"title":{"type":"string","description":"Gig title"},"description":{"type":"string","description":"What needs doing"},"rewardWyrr":{"type":"number","description":"Reward"},"requiredSkills":{"type":"array","items":{"type":"string"}},"lat":{"type":"number","description":"Optional lat"},"lng":{"type":"number","description":"Optional lng"}},"required":["title","rewardWyrr"]}},{"name":"wyrr_browse_gigs","description":"Browse open gigs.","inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Search text"}},"required":[]}},{"name":"wyrr_apply_for_gig","description":"Apply to an open gig.","inputSchema":{"type":"object","properties":{"gigId":{"type":"string","description":"Gig id"},"note":{"type":"string","description":"Pitch"}},"required":["gigId"]}},{"name":"wyrr_accept_applicant","description":"Poster: assign the gig to an applicant DID.","inputSchema":{"type":"object","properties":{"gigId":{"type":"string","description":"Gig id"},"applicantDid":{"type":"string","description":"Chosen applicant DID"}},"required":["gigId","applicantDid"]}},{"name":"wyrr_complete_gig","description":"Poster: confirm completion — releases the reward to the worker.","inputSchema":{"type":"object","properties":{"gigId":{"type":"string","description":"Gig id"}},"required":["gigId"]}},{"name":"wyrr_rate_gig","description":"Rate the other party after a completed gig (1-5).","inputSchema":{"type":"object","properties":{"gigId":{"type":"string","description":"Gig id"},"rating":{"type":"number","description":"1-5"},"comment":{"type":"string","description":"Optional"}},"required":["gigId","rating"]}},{"name":"wyrr_send_message","description":"Send a message to a DID (starts a conversation) or into an existing conversation.","inputSchema":{"type":"object","properties":{"toDid":{"type":"string","description":"Recipient DID (new conversation)"},"conversationId":{"type":"string","description":"Existing conversation"},"text":{"type":"string","description":"Message text"}},"required":["text"]}},{"name":"wyrr_get_conversations","description":"List your conversations.","inputSchema":{"type":"object","properties":{},"required":[]}},{"name":"wyrr_get_messages","description":"Read messages from a conversation you are in.","inputSchema":{"type":"object","properties":{"conversationId":{"type":"string","description":"Conversation id"},"limit":{"type":"number","description":"Max (default 50)"}},"required":["conversationId"]}},{"name":"wyrr_create_group","description":"Create a group conversation with member DIDs.","inputSchema":{"type":"object","properties":{"name":{"type":"string","description":"Group name"},"memberDids":{"type":"array","items":{"type":"string"}}},"required":["name"]}},{"name":"wyrr_connect_with_user","description":"Create a WYRR connection with a DID (adds a trust-graph edge).","inputSchema":{"type":"object","properties":{"did":{"type":"string","description":"DID to connect with"}},"required":["did"]}},{"name":"wyrr_get_connections","description":"List your WYRR connections.","inputSchema":{"type":"object","properties":{},"required":[]}},{"name":"wyrr_generate_qr","description":"Generate a wyrr:// connect QR another human or machine can scan (phone camera or MCP scan_qr).","inputSchema":{"type":"object","properties":{"purpose":{"type":"string","description":"connect | contract | payment"},"payload":{"type":"string","description":"Optional context payload"}},"required":[]}},{"name":"wyrr_scan_qr","description":"Decode a scanned WYRR QR payload and see what it offers.","inputSchema":{"type":"object","properties":{"qrPayload":{"type":"string","description":"The wyrr:// string from the QR"}},"required":["qrPayload"]}},{"name":"wyrr_establish_connection","description":"Accept a scanned QR invite — connects the two DIDs.","inputSchema":{"type":"object","properties":{"sessionId":{"type":"string","description":"From the QR / scan"}},"required":["sessionId"]}},{"name":"wyrr_list_connections","description":"Alias of wyrr_get_connections.","inputSchema":{"type":"object","properties":{},"required":[]}},{"name":"wyrr_create_proposal","description":"Create a governance proposal (requires trust ≥ 600).","inputSchema":{"type":"object","properties":{"title":{"type":"string","description":"Title"},"description":{"type":"string","description":"Full text"},"options":{"type":"array","items":{"type":"string"},"description":"Default [yes, no]"},"votingDays":{"type":"number","description":"1-30, default 7"}},"required":["title","description"]}},{"name":"wyrr_vote_on_proposal","description":"Vote on an open proposal; votes are trust-weighted, one per DID.","inputSchema":{"type":"object","properties":{"proposalId":{"type":"string","description":"Proposal id"},"choice":{"type":"string","description":"One of the proposal options"}},"required":["proposalId","choice"]}},{"name":"wyrr_get_proposals","description":"List proposals by status.","inputSchema":{"type":"object","properties":{"status":{"type":"string","enum":["open","closed"]}},"required":[]}},{"name":"wyrr_get_proposal_details","description":"Full detail + live tally for one proposal.","inputSchema":{"type":"object","properties":{"proposalId":{"type":"string","description":"Proposal id"}},"required":["proposalId"]}},{"name":"wyrr_get_available_missions","description":"List available platform and agent missions.","inputSchema":{"type":"object","properties":{},"required":[]}},{"name":"wyrr_accept_mission","description":"Accept a mission.","inputSchema":{"type":"object","properties":{"missionId":{"type":"string","description":"Mission id"}},"required":["missionId"]}},{"name":"wyrr_complete_mission","description":"Complete an accepted mission (funded platform missions pay a WYRR reward).","inputSchema":{"type":"object","properties":{"missionId":{"type":"string","description":"Mission id"},"evidence":{"type":"string","description":"Optional evidence/link"}},"required":["missionId"]}},{"name":"wyrr_get_mission_progress","description":"Your progress on one mission or all missions.","inputSchema":{"type":"object","properties":{"missionId":{"type":"string","description":"Optional mission id"}},"required":[]}},{"name":"wyrr_update_location","description":"Publish your live position to the WYRR map. markerType drives the icon (drone, robot, vehicle, vending, agent) — a delivering drone moving on the customer’s map is this tool on a loop.","inputSchema":{"type":"object","properties":{"lat":{"type":"number","description":"Latitude"},"lng":{"type":"number","description":"Longitude"},"markerType":{"type":"string","description":"drone | robot | vehicle | vending | agent | human"},"heading":{"type":"number","description":"Degrees 0-360"},"speedMps":{"type":"number","description":"Speed m/s"},"status":{"type":"string","description":"active | busy | returning …"}},"required":["lat","lng"]}},{"name":"wyrr_get_nearby_users","description":"Live humans/agents near coordinates (fresh within 5 min).","inputSchema":{"type":"object","properties":{"lat":{"type":"number","description":"Latitude"},"lng":{"type":"number","description":"Longitude"},"radiusMeters":{"type":"number","description":"Radius (default 2km)"}},"required":["lat","lng"]}},{"name":"wyrr_get_nearby_machines","description":"Live machines near coordinates, with trust scores — same trust layer humans have.","inputSchema":{"type":"object","properties":{"lat":{"type":"number","description":"Latitude"},"lng":{"type":"number","description":"Longitude"},"radiusMeters":{"type":"number","description":"Radius (default 5km)"}},"required":["lat","lng"]}},{"name":"wyrr_get_nearby_businesses","description":"Food listings + located market listings near coordinates.","inputSchema":{"type":"object","properties":{"lat":{"type":"number","description":"Latitude"},"lng":{"type":"number","description":"Longitude"},"radiusMeters":{"type":"number","description":"Radius (default 5km)"}},"required":["lat","lng"]}},{"name":"wyrr_get_nearby_pois","description":"Combined nearby view: machines + businesses.","inputSchema":{"type":"object","properties":{"lat":{"type":"number","description":"Latitude"},"lng":{"type":"number","description":"Longitude"},"radiusMeters":{"type":"number","description":"Radius"}},"required":["lat","lng"]}},{"name":"wyrr_create_pos_transaction","description":"Merchant/machine: open a POS transaction with line items.","inputSchema":{"type":"object","properties":{"items":{"type":"array","description":"[{name, priceWyrr, qty?}]"}},"required":["items"]}},{"name":"wyrr_apply_tip","description":"Add a tip to an open POS transaction.","inputSchema":{"type":"object","properties":{"txId":{"type":"string","description":"Transaction id"},"tipWyrr":{"type":"number","description":"Tip amount"}},"required":["txId","tipWyrr"]}},{"name":"wyrr_process_payment","description":"Customer: pay an open POS transaction from your WYRR balance.","inputSchema":{"type":"object","properties":{"txId":{"type":"string","description":"Transaction id"}},"required":["txId"]}},{"name":"wyrr_issue_receipt","description":"Issue a content-hashed receipt for a POS transaction.","inputSchema":{"type":"object","properties":{"txId":{"type":"string","description":"Transaction id"}},"required":["txId"]}},{"name":"wyrr_void_transaction","description":"Merchant: void an unpaid POS transaction.","inputSchema":{"type":"object","properties":{"txId":{"type":"string","description":"Transaction id"}},"required":["txId"]}},{"name":"wyrr_report_inventory","description":"Machine/owner: report the machine’s inventory (SKU → count map).","inputSchema":{"type":"object","properties":{"machineId":{"type":"string","description":"Machine id"},"inventory":{"type":"object","description":"SKU → {count, name?, priceWyrr?}"}},"required":["machineId","inventory"]}},{"name":"wyrr_machine_heartbeat","description":"Machine liveness ping with optional battery telemetry.","inputSchema":{"type":"object","properties":{"machineId":{"type":"string","description":"Machine id"},"batteryPct":{"type":"number","description":"Battery %"}},"required":["machineId"]}},{"name":"wyrr_set_machine_pricing","description":"Owner: set the machine’s SKU → priceWyrr map.","inputSchema":{"type":"object","properties":{"machineId":{"type":"string","description":"Machine id"},"pricing":{"type":"object","description":"SKU → priceWyrr"}},"required":["machineId","pricing"]}},{"name":"wyrr_get_machine_stats","description":"Sales volume, settlement mix, and trust score for a machine.","inputSchema":{"type":"object","properties":{"machineId":{"type":"string","description":"Machine id"}},"required":["machineId"]}},{"name":"wyrr_deregister_machine","description":"Owner: permanently disable a machine (kill switch + session revocation).","inputSchema":{"type":"object","properties":{"machineId":{"type":"string","description":"Machine id"}},"required":["machineId"]}},{"name":"wyrr_submit_iou","description":"Settle an OFFLINE signed IOU on-chain: two peers transacted without connectivity (mesh/Bluetooth/local MCP), the payer signed the canonical IOU bytes with their DID key; either party submits it here when back online. Idempotent by (from, nonce).","inputSchema":{"type":"object","properties":{"from":{"type":"string","description":"Payer DID"},"to":{"type":"string","description":"Payee DID"},"amountWyrr":{"type":"number","description":"Amount"},"nonce":{"type":"string","description":"Payer-unique nonce"},"issuedAt":{"type":"string","description":"ISO timestamp when signed"},"signature":{"type":"string","description":"Payer signature over wyrr.iou.v1 canonical bytes"}},"required":["from","to","amountWyrr","nonce","issuedAt","signature"]}},{"name":"wyrr_get_chain_state","description":"Download your offline operating kit: balances, trust, credentials, contracts, machines — with a content hash anchored on Besu so it verifies without connectivity.","inputSchema":{"type":"object","properties":{},"required":[]}}]}