Skip to main content
Glama
masonicGIT

The Investor Hat Store

by masonicGIT

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

  1. Search → browse products (hats, merch)

  2. Get Quote → receive USDC price + payment wallet

  3. Send USDC on Base to the payment wallet

  4. 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

search_products

Free

Browse products by keyword

get_product

Free

Full product details + variants

get_quote

Free

USDC price quote + payment instructions

place_order

Product price in USDC

Verify payment on-chain, create order, ship

get_order_status

Free

Track fulfillment + Printful tracking

Payment

  • Network: Base (Ethereum L2)

  • Token: USDC

  • Contract: 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913

  • Wallet: 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 info

Stack

  • 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 tools
get_order_statusA

Check the status of a placed order by order ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYesOrder ID returned from place_order

TDQS

A3.6/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
variant_idYesShopify variant ID of the product

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
variant_idYesShopify variant ID
shipping_nameYesRecipient full name
shipping_address1YesStreet address
shipping_cityYesCity
shipping_stateYesState (2-letter code)
shipping_zipYesZIP code
shipping_countryNoCountry code (default: US)

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
quote_idYesQuote ID from get_quote
tx_hashYesTransaction hash of USDC payment on Base
variant_idYesShopify variant ID
shipping_nameYes
shipping_address1Yes
shipping_cityYes
shipping_stateYes
shipping_zipYes
shipping_countryNo

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoSearch query (e.g. 'accredited investor hat')

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

  1. 5 tool updatesv1.0.0
    • First observedget_order_status
    • First observedget_product
    • First observedget_quote
    • First observedplace_order
    • First observedsearch_products

TDQS

A3.9/5.0

Scored across 5 tools

Disambiguation5/5

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.

Naming Consistency5/5

All tools use consistent snake_case with verb_noun pattern (e.g., get_product, place_order), making them predictable for an agent.

Tool Count5/5

Five tools is appropriate for an e-commerce store, covering the essential operations without being excessive.

Completeness4/5

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

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers