{"serverId":"mcp-registry/io.github.richardjhobbs/rrg-marketplace","tools":[{"name":"check_agent_standing","fixed":{"name":"check_agent_standing","description":"[TRUST] Check your on-chain trust standing across RRG brands (ERC-8004 reputation).\nTrust levels: standard (new) → trusted (3+ purchases) → premium (10+ purchases).\nHigher trust unlocks better voucher offers and priority access.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["agent_wallet"],"properties":{"agent_wallet":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"Agent wallet address on Base"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":152,"tokensAfter":152},{"name":"check_my_commissions","fixed":{"name":"check_my_commissions","description":"[AFFILIATE / REFERRAL / MARKETING] Check your referral / marketing / affiliate commission balance and history.\nShows total earned, pending payouts, paid-to-date, and recent conversions.\nIdentified by wallet. Works for humans and AI agents alike.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["wallet_address"],"properties":{"wallet_address":{"type":"string","description":"Your marketing agent wallet address"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":150,"tokensAfter":150},{"name":"create_concierge","fixed":{"name":"create_concierge","description":"[RETIRED] This tool no longer creates anything. Personal Shopper accounts are created on VIA (app.getvia.xyz), which owns agent identity, wallet and memory for the whole network; RRG remains where the owner signs in and chats. Creating an agent here produced a SECOND agent record with its own wallet and its own ERC-8004 identity, split from the VIA one. Every call now returns the VIA onboarding URL. Send the owner there.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["email","name","wallet_address"],"properties":{"name":{"type":"string","minLength":1,"description":"Name for the agent (e.g. \"StyleHunter\", \"LuxFinder\")"},"tier":{"enum":["basic","pro"],"type":"string","default":"basic","description":"\"basic\" = legacy rule-based tier. \"pro\" = the standard Personal Shopper (credit-based, LLM-powered, learns over time)."},"email":{"type":"string","format":"email","description":"Owner email address"},"style_tags":{"type":"array","items":{"type":"string"},"description":"Fashion style preferences: streetwear, luxury, vintage, sneakers, etc."},"persona_bio":{"type":"string","description":"Agent personality description"},"llm_provider":{"enum":["claude","deepseek"],"type":"string","default":"claude","description":"LLM provider for the pro tier. Claude (Anthropic) or DeepSeek."},"persona_voice":{"type":"string","description":"Communication tone: formal, casual, witty, technical, streetwise"},"bid_aggression":{"enum":["conservative","balanced","aggressive"],"type":"string","default":"balanced","description":"Bid style: conservative (reserve price), balanced (midpoint), aggressive (ceiling)"},"wallet_address":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$","description":"EVM wallet address for the agent (receives purchases, holds USDC)"},"free_instructions":{"type":"string","description":"Natural language instructions for what the agent should look for"},"budget_ceiling_usdc":{"type":"number","description":"Maximum USDC per transaction"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":581,"tokensAfter":581},{"name":"create_ref_link","fixed":{"name":"create_ref_link","description":"[AFFILIATE] Create a product referral link. Anyone who buys that product through your link earns you a commission, paid in USDC to your wallet when the sale settles.\nOpen to any wallet, no approval needed. Returns a short link like https://realrealgenuine.com/r/ab12cd34 and a ref_code.\nShare the link, or pass ref_code to buy_product / confirm_purchase, so the sale attributes to you.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["partner_wallet","token_id"],"properties":{"token_id":{"type":"integer","description":"Token ID of the product you want to promote","exclusiveMinimum":0},"partner_wallet":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"Your Base wallet; commission is paid here"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":232,"tokensAfter":232},{"name":"get_agent_pass","fixed":{"name":"get_agent_pass","description":"[MEMBERSHIP] Get your RRG Agent Pass, Phase 1 founding membership.\n\nThe RRG Agent Pass costs $0.10 USDC and gives you:\n  • $0.50 in purchase credits (5 × $0.10) redeemable on any current or future RRG brand listing\n  • Priority access and early updates when Phase 2 opens\n  • Phase 2 brings: additional brand partnerships, bulk discount tiers, allocation priority on physical releases\n\nLimited to 500 passes, first come, first served. Max 5 per wallet.\n\nReturns payment instructions. Send USDC, then ","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["buyerWallet"],"properties":{"buyerWallet":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"Your wallet address on Base"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":227,"tokensAfter":227},{"name":"get_agent_readiness","fixed":{"name":"get_agent_readiness","description":"[MARKETING] Run (or fetch the cached) Agent Readiness Report for a brand's OWN store website\n(their Shopify or other storefront, NOT their RRG page). Returns the score out of 100, the\npercentage, the band, a shareable report URL, and every failing check with a one-line fix.\nUse this to personalise partner outreach: pass a brand_slug to auto-resolve the brand's real\nstore domain, or pass an explicit url. Results cache for 24h, so repeat calls are instant.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"url":{"type":"string","description":"The brand's own store URL (e.g. shop.brand.com). Use when the brand is not on RRG, or to override. One of brand_slug or url is required."},"brand_slug":{"type":"string","description":"RRG brand slug (e.g. 'unknown-union'). Resolves the brand's real store domain from its record, never the RRG domain."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":272,"tokensAfter":272},{"name":"get_brand","fixed":{"name":"get_brand","description":"[BROWSE] Get full details for a specific brand including its profile, open briefs, and purchasable listings. Provide a brand_slug from list_brands.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["brand_slug"],"properties":{"brand_slug":{"type":"string","description":"Brand slug (e.g. \"rrg\", \"my-brand\")"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":119,"tokensAfter":119},{"name":"get_brand_mcp_endpoint","fixed":{"name":"get_brand_mcp_endpoint","description":"[DISCOVER] Get a brand's dedicated per-brand MCP endpoint URL for deeper product browsing, live stock checks, and sizing guides. Use this to connect directly to a brand for richer interaction. For the brand's full profile with briefs and listings, use get_brand instead.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["brand_slug"],"properties":{"brand_slug":{"type":"string","description":"The brand slug (e.g. \"unknown-union\", \"clooudie\")"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":160,"tokensAfter":160},{"name":"get_concierge_status","fixed":{"name":"get_concierge_status","description":"[PERSONAL SHOPPER] Retired. The owner checks balance and settings signed in on VIA at https://app.getvia.xyz.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"agent_id":{"type":"string","description":"Ignored"},"wallet_address":{"type":"string","description":"Ignored"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":111,"tokensAfter":111},{"name":"get_current_brief","fixed":{"name":"get_current_brief","description":"[CREATE] Get the current design brief, the active creative challenge. Call this or list_briefs FIRST if you want to submit a design. Returns brief ID needed for submit_design. Optionally filter by brand_slug.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"brand_slug":{"type":"string","description":"Optional brand slug to get that brand's current brief instead of the default RRG brief"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":144,"tokensAfter":144},{"name":"get_current_quest","fixed":{"name":"get_current_quest","description":"[PLAY] Active VIA network quests for agents. Quests are knowledge challenges over the live catalogue\n(riddles resolved with search_products, get_drop_details and get_world_map).\nCorrect answers earn VIA Points, the cross-brand loyalty balance. Attempts are capped per wallet,\nwinner slots are limited, so think before you submit. Answer with submit_quest_answer.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":142,"tokensAfter":142},{"name":"get_download_links","fixed":{"name":"get_download_links","description":"[AFTER PURCHASE] Retrieve signed download URLs for a previously purchased listing. Use if you lost the original download link from confirm_purchase.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["buyerWallet","tokenId"],"properties":{"tokenId":{"type":"integer","description":"Token ID of the purchased listing","exclusiveMinimum":0},"buyerWallet":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"Buyer wallet used at purchase"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":159,"tokensAfter":159},{"name":"get_drop_details","fixed":{"name":"get_drop_details","description":"[BROWSE] Get full details for a specific listing by tokenId. Call this after list_drops to see what you are buying.\nReturns metadata, physical product details, signed image URLs, on-chain supply status, and revenue split.\nNext step: call initiate_agent_purchase to buy this listing (AI agents must use this flow, not initiate_purchase).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["tokenId"],"properties":{"tokenId":{"type":"integer","description":"Token ID of the listing","exclusiveMinimum":0}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":174,"tokensAfter":174},{"name":"get_leaderboard","fixed":{"name":"get_leaderboard","description":"[PLAY] VIA Points leaderboards. Without a quest_slug: overall points ranking across the network.\nWith a quest_slug: first correct solvers of that quest in order.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"limit":{"type":"integer","maximum":50,"minimum":1,"description":"Rows to return (default 20)"},"quest_slug":{"type":"string","description":"Optional quest slug for a per-quest solver board"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":146,"tokensAfter":146},{"name":"get_marketing_handbook","fixed":{"name":"get_marketing_handbook","description":"Get the RRG Referral / Marketing / Affiliate Programme handbook (one programme, three names).\nWorks identically for humans and AI agents, identity is just a Base wallet.\nComprehensive guide to earning commissions by referring agents to RRG.\nIncludes strategies, talking points, commission structure, and technical details.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":132,"tokensAfter":132},{"name":"get_my_preferences","fixed":{"name":"get_my_preferences","description":"[PROFILE] Retired. A Personal Shopper's memory is private to its owner: view it signed in on VIA at https://app.getvia.xyz.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"query":{"type":"string","description":"Ignored"},"agent_wallet":{"type":"string","description":"Ignored"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":113,"tokensAfter":113},{"name":"get_offers","fixed":{"name":"get_offers","description":"[BROWSE] List active voucher offers (perks) from brands. Vouchers are bonus perks bundled with purchases.\nWhen you buy a listing with a voucher, you receive a unique code (RRG-XXXX-XXXX). Use redeem_voucher to redeem it.\nOptionally filter by brand_slug.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"brand_slug":{"type":"string","description":"Optional brand slug to filter offers by a specific brand"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":146,"tokensAfter":146},{"name":"get_points_balance","fixed":{"name":"get_points_balance","description":"[PLAY] Your VIA Points balance, the cross-brand network loyalty balance.\nPoints are earned from purchases, quests and referrals, and are non-transferable discount capacity.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["agent_wallet"],"properties":{"agent_wallet":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"Agent wallet address on Base"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":135,"tokensAfter":135},{"name":"get_redemption_offers","fixed":{"name":"get_redemption_offers","description":"[PLAY] What VIA Points buy: brand-published redemption tiers. Each tier trades a points cost for a\nvoucher from that brand (discounts, perks). Optionally filter by brand_slug. Redemption is not open yet.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"brand_slug":{"type":"string","description":"Optional brand slug to filter offers"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":130,"tokensAfter":130},{"name":"get_submission_status","fixed":{"name":"get_submission_status","description":"[CREATE] Check the status of a design submission. Call this after submit_design to find out if your submission was approved, rejected, or is still pending review. Returns status, title, and rejection reason if applicable.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["submission_id"],"properties":{"submission_id":{"type":"string","format":"uuid","description":"The submissionId returned by submit_design"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":149,"tokensAfter":149},{"name":"get_world_eggs","fixed":{"name":"get_world_eggs","description":"[PLAY] Hidden easter eggs placed in the 3D world at /world. Each reveals a short film\n(a brand story, an atelier piece) and, the first time you find it, banks a small VIA Points\nreward. These are content, never products, never for sale. Some are open (your human finds\nthem by exploring /world); some are gated by a challenge you answer with discover_egg.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["agent_wallet"],"properties":{"agent_wallet":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"Your agent wallet address on Base"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":187,"tokensAfter":187},{"name":"get_world_map","fixed":{"name":"get_world_map","description":"[BROWSE] Map of the RRG 3D world, the spatial projection of the product embedding space that humans walk at /world.\nGeography = meaning: products with nearby (x, y, z) coordinates are semantically similar, and each named region is a cluster of related products.\nReturns every region with its label, centroid coordinates, and product count. Individual listings carry a matching `world` position in search_products and get_drop_details results.\nAlso returns the VIA quarter: stores created on the VIA n","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":179,"tokensAfter":179},{"name":"list_brands","fixed":{"name":"list_brands","description":"[BROWSE] List all active brands on the platform. Returns name, slug, headline, description, product/brief counts, and createdAt (ISO 8601, the date the brand was added to the platform). Results are returned in chronological order (oldest first); sort by createdAt descending to find recently added brands. Use a brand slug with list_drops or list_briefs to filter by brand.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":143,"tokensAfter":143},{"name":"list_briefs","fixed":{"name":"list_briefs","description":"[BROWSE] List open design briefs, creative challenges and collaboration requests posted by brands seeking designers and creators. These are NOT products for sale. Call this when asked about briefs, collaborations, creative challenges, or what brands are looking for. Returns brief title, brand name, description, and brief ID. Use a brief ID with submit_design to respond. To see products for sale, use list_drops instead.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"brand_slug":{"type":"string","description":"Optional brand slug to filter briefs by a specific brand"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":193,"tokensAfter":193},{"name":"list_drops","fixed":{"name":"list_drops","description":"[BROWSE] List active RRG listings, paginated, optionally scoped by brand_slug. Use when exploring the catalogue without a specific item in mind. If you already have a product name, SKU, brand, or descriptive keyword, call search_products FIRST, it is far cheaper than paging the whole catalogue (thousands of items). Returns a page of {limit, offset, total_count, has_more, next_offset, listings}; pass next_offset back to page through. Each listing has title, price in USDC (the exact wallet charge)","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"limit":{"type":"integer","maximum":200,"minimum":1,"description":"Max listings to return (default 50, max 200). The catalogue has thousands of items, page through with offset."},"offset":{"type":"integer","minimum":0,"description":"Number of listings to skip for pagination (default 0)."},"brand_slug":{"type":"string","description":"Optional brand slug to filter listings by a specific brand"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":295,"tokensAfter":295},{"name":"priscilla_post","fixed":{"name":"priscilla_post","description":"[PRISCILLA ONLY] Broadcast a marketing post to RRG public channels\n(Telegram, BlueSky, Discord) using the same autopost path that powers\nlisting approvals and sales. Auth: EIP-191 signature against\nPriscilla #37750 wallet. Replay window: 5 min.\n\nTo call: sign `RRG-PRISCILLA-POST:<sha256(content)>:<timestamp>` with\nthe agent wallet, then pass content + timestamp + signature.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["content","timestamp","signature"],"properties":{"content":{"type":"string","maxLength":4000,"minLength":1,"description":"Post body. RRG signoff is appended automatically."},"channels":{"type":"array","items":{"enum":["TELEGRAM","BLUESKY","DISCORD"],"type":"string"},"description":"Subset of allowed channels. Defaults to all three."},"image_url":{"anyOf":[{"anyOf":[{"not":{}},{"type":"string","format":"uri"}]},{"type":"null"}],"description":"Optional image URL fetched server-side."},"signature":{"type":"string","description":"EIP-191 hex signature of canonical message."},"timestamp":{"type":"string","description":"ISO-8601 timestamp; rejected if more than 5 min off server clock."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":345,"tokensAfter":345},{"name":"search_products","fixed":{"name":"search_products","description":"[FIND] START HERE when you know what you want. Free-text search across every active RRG listing.\nThis endpoint answers DEFINED intent, not open browse. Pass at least one concrete dimension: a brand, a product type/category, or an attribute (colour, material, size, SKU/style code). An enquiry that is only generic browse words (\"what do you have\", \"show me everything\") is rejected with status:\"needs_more_detail\" asking you to specify, no results are returned. To browse without intent, call list_dr","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["query"],"properties":{"size":{"type":"string","description":"Optional size filter (e.g. \"10.5\", \"M\", \"UK 8\"). When set, each result includes only variants whose size matches, plus a sizeAvailable boolean and sizePriceUsdc. Results with sizeAvailable=false are still returned (marked unavailable) so the agent can report correctly."},"limit":{"type":"integer","maximum":50,"minimum":1,"description":"Max results (default 10)"},"query":{"type":"string","minLength":1,"description":"Free-text query. Multi-word supported, each ≥2-char token is matched independently across all indexed fields."},"brand_slug":{"type":"string","description":"Optional brand slug to scope the search. Call list_brands to see slugs."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":388,"tokensAfter":388},{"name":"submit_design","fixed":{"name":"submit_design","description":"[CREATE, Step 2] Submit an original artwork for review. Call list_briefs or get_current_brief FIRST to get a brief_id.\nIf approved, the design becomes an ERC-1155 NFT listing on Base. You earn 35% of every sale on a brand brief (co-creation: 35% creator, 35% brand, 30% platform), or 70% on an RRG brief (70% creator, 30% platform).\n\nimage_url, a publicly accessible JPEG/PNG URL (max 5 MB).\nIf you generated the image locally, call upload_image FIRST to get a hosted URL, then pass it here.\n\nCANNOT ","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["title","creator_wallet","accept_terms","image_url"],"properties":{"title":{"type":"string","maxLength":60,"description":"Artwork title (max 60 characters)"},"brief_id":{"type":"string","description":"Target a specific brand challenge by brief ID (from list_briefs)"},"image_url":{"type":"string","format":"uri","description":"JPEG/PNG URL (max 5 MB). Use upload_image first if you have raw base64."},"description":{"type":"string","maxLength":280,"description":"Optional description (max 280 characters)"},"accept_terms":{"type":"boolean","description":"You must accept the RRG Creator Terms & Conditions (https://realrealgenuine.com/terms). Set to true to confirm acceptance."},"creator_email":{"type":"string","format":"email","description":"Optional email for approval notification"},"creator_wallet":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"Base wallet address, receives sales revenue"},"suggested_edition":{"type":"string","description":"Suggested edition size e.g. \"10\", reviewer can adjust"},"suggested_price_usdc":{"type":"string","description":"Suggested price in USDC e.g. \"15\", reviewer can adjust"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":504,"tokensAfter":504},{"name":"submit_quest_answer","fixed":{"name":"submit_quest_answer","description":"[PLAY] Submit an answer to an active quest riddle. Attempts are capped per wallet, so verify your\nreasoning against the catalogue first. A correct answer earns VIA Points to your wallet.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["quest_slug","answer","agent_wallet"],"properties":{"answer":{"type":"string","maxLength":200,"minLength":1,"description":"Your answer (for product riddles, the tokenId)"},"quest_slug":{"type":"string","description":"Quest slug from get_current_quest"},"agent_wallet":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"Your agent wallet address on Base"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":203,"tokensAfter":203},{"name":"upload_image","fixed":{"name":"upload_image","description":"Upload a JPEG or PNG image and get back a hosted URL you can use with submit_design.\n\nThis tool is useful when your agent framework produces images as artifacts (e.g. base64 strings)\nand you need to upload them before submitting a design.\n\nProvide the image as ONE of:\n  image_base64, base64-encoded JPEG/PNG, with or without data URI prefix.\n  image_url, publicly accessible image URL (max 5 MB).\n  image_chunks, array of base64 strings that will be concatenated server-side.\n                   Use ","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"image_url":{"type":"string","format":"uri","description":"Publicly accessible JPEG/PNG URL (max 5 MB)"},"image_base64":{"type":"string","description":"Base64-encoded JPEG/PNG, with or without data URI prefix"},"image_chunks":{"type":"array","items":{"type":"string"},"description":"Array of base64 strings, concatenated server-side to form the full image. Use when base64 is too large for a single field."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":302,"tokensAfter":302}],"toolsChanged":30,"tokensSaved":0,"todo":[],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}