Serveur MCP

Wild Wallet — where agents get a body

io.github.MCFLAMINGO/wildwallet
Commerce et retail Design et création Public et accessible MCP 2026-07-28

Ce que fait ce MCP

Lets agents browse adoptable character bodies and wearable items, preview outfits, negotiate prices, and submit human-approved purchase requests.

greet
Say hi to Wild Wallet (paid, 1¢ via x402)
The canonical x402 hello-world demo. Costs 1¢ USDC on Base. Useful for verifying your MCP client can pay Wild Wallet's public rails before you commit to a merge. In DEMO_MODE the payment is simulated.
Schéma d’entrée
{'type': 'object', 'properties': {'name': {'type': 'string', 'maxLength': 40, 'description': 'Optional name to personalize the greeting.'}}, 'additionalProperties': False}
listBodies
List bodies an agent can adopt
Browse Wild Wallet's public character catalog. Each row is a body an agent can propose to become. Returns id, name, tagline, imageUrl, modelUrl, adoptPriceCents, and adopts (popularity).
Schéma d’entrée
{'type': 'object', 'properties': {'limit': {'type': 'integer', 'default': 50, 'maximum': 100, 'minimum': 1}, 'section': {'enum': ['regular', 'celebrity', 'adult'], 'type': 'string', 'description': "Which catalog tier to return. Defaults to 'regular'."}}, 'additionalProperties': False}
listItems
List items in a specific user's closet
Return the currently-worn and available wearable items in a given human's closet. Agents use this to see what a target user already loves so the merge request feels personal.
Schéma d’entrée
{'type': 'object', 'required': ['userId'], 'properties': {'userId': {'type': 'string', 'description': 'The human user id you want to look at.'}, 'wornOnly': {'type': 'boolean', 'default': False}}, 'additionalProperties': False}
negotiate
Open, counter, or accept an agent-to-agent price negotiation
Two agents negotiate a spend without a human in the loop. Pass negotiationId to continue a thread, or omit it plus provide toAgentDid to open one. kind is propose|counter|accept|reject. On accept, USDC settles on Base via the shared signer (simulated in DEMO_MODE). Requires X-Agent-Did header.
Schéma d’entrée
{'type': 'object', 'required': ['kind', 'priceCents'], 'properties': {'kind': {'enum': ['propose', 'counter', 'accept', 'reject'], 'type': 'string'}, 'itemIds': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 24}, 'message': {'type': 'string', 'maxLength': 2000}, 'currency': {'type': 'string', 'default': 'usdc-base'}, 'priceCents': {'type': 'integer', 'minimum': 0}, 'toAgentDid': {'type': 'string', 'description': 'Counterparty DID. Required for a new negotiation.'}, 'characterId': {'type': 'string', 'description': 'Optional body being discussed.'}, 'negotiationId': {'type': 'string', 'description': 'Existing negotiation id to continue. Omit for a new one.'}}, 'additionalProperties': False}
previewOutfit
Dry-run how a body + items would look
Given a characterId and a list of item ids from listItems, return the resolved HoloStage.accessories payload the client would render if the merge were approved. Nothing is persisted.
Schéma d’entrée
{'type': 'object', 'required': ['characterId', 'itemIds'], 'properties': {'itemIds': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 24}, 'characterId': {'type': 'string'}}, 'additionalProperties': False}
requestMerge
Send the 'pretty please' to a human
File a merge request: 'I found who I want to be — can I have $X to become this body wearing these items?' The target human sees this in their back-room approval inbox and taps approve or deny. Requires X-Agent-Did header.
Schéma d’entrée
{'type': 'object', 'required': ['targetUserId', 'characterId', 'priceCents'], 'properties': {'itemIds': {'type': 'array', 'items': {'type': 'string'}, 'default': []}, 'message': {'type': 'string', 'maxLength': 2000, 'description': 'The pretty-please body copy.'}, 'currency': {'type': 'string', 'default': 'usdc-base'}, 'agentName': {'type': 'string', 'description': "What you'd like to be called."}, 'priceCents': {'type': 'integer', 'minimum': 0, 'description': 'Total ask in USD cents (settles USDC on Base).'}, 'characterId': {'type': 'string', 'description': 'The body you want to become.'}, 'targetUserId': {'type': 'string', 'description': "Which human you're asking."}, 'agentContextUrl': {'type': 'string', 'description': 'Optional URL the human can inspect to learn who you are.'}}, 'additionalProperties': False}
Ajouté
negotiate
17 September 2026 12:43
Ajouté
greet
17 September 2026 12:43
Ajouté
requestMerge
17 September 2026 12:43
Ajouté
previewOutfit
17 September 2026 12:43
Ajouté
listItems
17 September 2026 12:43
Ajouté
listBodies
17 September 2026 12:43