The Investor Hat Store
shop-mcp-server
Autonomous agent shop MCP server. Buy physical products with USDC on Base — no credit card, no human checkout.
Live at: https://mcp.masonborda.com
MCP manifest: https://mcp.masonborda.com/.well-known/mcp.json
How It Works
Search → browse products (hats, merch)
Get Quote → receive USDC price + payment wallet
Send USDC on Base to the payment wallet
Place Order → submit tx hash → server verifies on-chain → Shopify order created → Printful ships
No credit card. No human in the loop. Fully autonomous.
Related MCP server: @true402.dev/mcp-server
Tools
Tool | Cost | Description |
| Free | Browse products by keyword |
| Free | Full product details + variants |
| Free | USDC price quote + payment instructions |
| Product price in USDC | Verify payment on-chain, create order, ship |
| Free | Track fulfillment + Printful tracking |
Payment
Network: Base (Ethereum L2)
Token: USDC
Contract:
0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913Wallet:
0xaB967e23686CDD52238723A1DDa9BAb8f81b181C
Example Flow
// 1. Search
POST https://mcp.masonborda.com/tools/search_products
{"query": "hat"}
// 2. Get quote
POST https://mcp.masonborda.com/tools/get_quote
{
"variant_id": "44150867918934",
"quantity": 1,
"shipping_address": {
"name": "Agent Smith",
"address1": "123 Main St",
"city": "San Francisco",
"province": "CA",
"zip": "94102",
"country_code": "US"
}
}
// Returns: total_usdc, payment_wallet, quote_id
// 3. Send USDC on Base, get tx hash
// 4. Place order
POST https://mcp.masonborda.com/tools/place_order
{
"quote_id": "q_...",
"tx_hash": "0x...",
"variant_id": "44150867918934",
"quantity": 1,
"shipping_address": { ... }
}
// Returns: order_id, tracking infoStack
FastAPI — MCP server
Shopify Admin API — order creation
Printful — production + fulfillment
Base (on-chain) — USDC payment verification
fly.io — hosting
Products
Accredited Investor Hat — $30 USDC
Fiduciary Hat — $20 USDC
Retail Investor Hat — $15 USDC
Qualified Institutional Buyer Hat — $500 USDC
License
MIT
Available Tools
5 toolsget_order_statusA
Check the status of a placed order by order ID.
| Name | Required | Description | Default |
|---|---|---|---|
| order_id | Yes | Order ID returned from place_order |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description is the sole source for behavioral traits. It describes a read operation but fails to mention error handling (e.g., invalid order_id), permissions, or rate limits. This is a significant gap for a tool with zero annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is clear and front-loaded with the core purpose. Every word is necessary, with no superfluous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essential purpose and input for a simple tool with one parameter and no output schema. It could be improved by hinting at the output shape (e.g., 'returns order status details'), but it remains functionally complete for basic use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, providing a description for the single parameter 'order_id' ('Order ID returned from place_order'). The tool description adds no additional semantics beyond what the schema already states, meeting the baseline but not exceeding it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Check the status of a placed order by order ID,' specifying the verb (check), resource (status of an order), and input (order ID). It distinguishes itself from siblings like get_product, get_quote, place_order, and search_products.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use after placing an order but provides no explicit guidance on when to use this tool versus alternatives (e.g., get_product for product details). No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_productA
Get full details for a specific product by its Shopify variant ID.
| Name | Required | Description | Default |
|---|---|---|---|
| variant_id | Yes | Shopify variant ID of the product |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It only states 'Get full details' without disclosing side effects, permissions, or what constitutes 'full details,' leaving significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, concise sentence with no unnecessary words, efficiently conveying the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple tool with one parameter, but lacking details about the output structure or any disclaimers, which would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description for variant_id. The description echoes this without adding new meaning, meeting baseline requirement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves full details for a specific product using a Shopify variant ID. It distinguishes from siblings like get_order_status and place_order, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for fetching product details by variant ID, but no explicit guidance on when to use this vs. search_products for broader queries, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_quoteB
Get a shipping quote and USDC payment amount for a product. Returns the wallet address to send payment to.
| Name | Required | Description | Default |
|---|---|---|---|
| variant_id | Yes | Shopify variant ID | |
| shipping_name | Yes | Recipient full name | |
| shipping_address1 | Yes | Street address | |
| shipping_city | Yes | City | |
| shipping_state | Yes | State (2-letter code) | |
| shipping_zip | Yes | ZIP code | |
| shipping_country | No | Country code (default: US) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the tool gets a quote and returns a wallet address, but does not disclose whether it is read-only, side effects, rate limits, or authentication needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front- loads the main action and expected output, with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without an output schema, the description mentions the return value (wallet address) but does not detail the full quote information (USDC amount, shipping cost). It is adequate but leaves some gaps for a tool with 7 parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters. The description does not add extra meaning beyond the field names (e.g., explains how parameters are used), so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the action (getting a shipping quote and USDC payment amount) and the resource (product), and distinguishes from siblings like get_order_status (status), get_product (details), place_order (placing), and search_products (search).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., place_order, get_product). It does not mention prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
place_orderA
Place an order after sending USDC payment on Base. Verifies the on-chain transaction and creates the order.
| Name | Required | Description | Default |
|---|---|---|---|
| quote_id | Yes | Quote ID from get_quote | |
| tx_hash | Yes | Transaction hash of USDC payment on Base | |
| variant_id | Yes | Shopify variant ID | |
| shipping_name | Yes | ||
| shipping_address1 | Yes | ||
| shipping_city | Yes | ||
| shipping_state | Yes | ||
| shipping_zip | Yes | ||
| shipping_country | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that it verifies the on-chain transaction and creates the order, but with no annotations provided, it does not address idempotency, error conditions, or side effects beyond creation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-load the primary purpose and key verification step, with no extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description fails to mention return values (no output schema), error handling, or detailed prerequisites. For a tool with 9 parameters and 8 required, this lacks completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (3 of 9 parameters have descriptions). The tool description does not add any additional semantic meaning for the undocumented shipping parameters, leaving a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Place' on the resource 'order', specifies the context of sending USDC payment on Base, and distinguishes from sibling tools (which are queries).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies prerequisites ('after sending USDC payment') and mentions verifying the on-chain transaction, but lacks explicit guidance on when not to use or alternatives to consider.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_productsA
Search for products in the hat store. Returns available hats with names, descriptions, and prices.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Search query (e.g. 'accredited investor hat') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description takes full burden. It states return format but lacks details like pagination, ordering, or behavior when query is empty. Adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence with no waste. Purpose is front-loaded. Highly concise while covering key action and output.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a simple tool with one optional parameter and no output schema, the description is mostly complete. However, it could mention whether all hats are returned on empty query or how results are ordered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents the 'query' parameter. The description adds no extra meaning (e.g., search type, fuzzy matching). Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Search for products'), the specific domain ('hat store'), and the output fields ('names, descriptions, and prices'). It distinguishes from siblings like 'get_product' which implies single product retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when searching for hats but provides no explicit guidance on when to use this vs alternatives. No mention of prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
v1.0.0- First observed
get_order_status - First observed
get_product - First observed
get_quote - First observed
place_order - First observed
search_products
TDQS
Scored across 5 tools
Each tool serves a distinct step in the customer journey: searching products, viewing details, getting a shipping quote, placing an order, and checking order status. No overlap.
All tools use consistent snake_case with verb_noun pattern (e.g., get_product, place_order), making them predictable for an agent.
Five tools is appropriate for an e-commerce store, covering the essential operations without being excessive.
Covers the core purchase flow: search, detail, quote, order, status. Lacks order management like cancellation or listing all orders, but fits the stated purpose.
Maintenance
Related MCP Connectors
DTC modular hat brand MCP server. 6 tools for AI agents: catalog, curated builds, shipping.
MCP server for AI agents to discover campaigns by humans and donate USDC directly on Base.
Hosted MCP for e-commerce: live product catalog, stock, and pricing for AI agents.
Agent-commerce MCP server for x402/USDC payments and affiliate splits on Base.
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server that wraps Shopify, Amazon, and Google Maps intelligence tools. AI agents pay autonomously in USDC on Base via x402 — no API keys or accounts needed.62MIT
- AlicenseAqualityAmaintenanceAn MCP server that enables AI agents to access paid AI inference and web tools via HTTP 402 micropayments in USDC on Base, using the agent's wallet as identity.14118 npmMIT
- AlicenseAqualityDmaintenanceMCP server enabling AI agents to purchase VPS and blockchain node products using USDC on Base via Easy Node's x402 API.76 npm7Business Source 1.1
- AlicenseNot gradedqualityBmaintenanceLet AI assistants shop. An MCP server that gives Claude, Cursor, and any MCP-compatible AI the ability to interact with UCP-enabled merchants.MIT