Zinc

Shop Amazon, Walmart, Target and Best Buy from chat: search, pay by card, track orders.

使うべきか

品質と安全性

A
説明の品質
100%
スキーマの完全性
89%
命名の品質
69%
ポイズニングのリスク
100%
権限の一致
100%
プロトコルへの準拠
100%

検出事項(8)

  • LOWTool 'list-orders' doesn't follow camelCase/snake_caselist-orders 内
  • LOWTool 'get-order' doesn't follow camelCase/snake_caseget-order 内
  • LOWTool 'get-order-tracking' doesn't follow camelCase/snake_caseget-order-tracking 内
  • LOWTool 'list-addresses' doesn't follow camelCase/snake_caselist-addresses 内
  • LOWTool 'prepare-order' doesn't follow camelCase/snake_caseprepare-order 内
  • LOWTool 'place-order' doesn't follow camelCase/snake_caseplace-order 内
  • LOWTool 'get-payment-status' doesn't follow camelCase/snake_caseget-payment-status 内
  • LOWTool 'search-products' doesn't follow camelCase/snake_casesearch-products 内

ツール定義とプロトコルへの準拠に関する自動分析に基づいています。

コンテキストコスト

~7,187トークン数(ツール定義)
~8.3 KB一般的なレスポンスサイズ
注意への影響は大きい(128k コンテキストの 5.61%)

これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。

インストール

ワンクリックインストール

これを `claude_desktop_config.json` ファイルに追加してください:

{
  "mcpServers": {
    "mcp": {
      "url": "https://mcp.zinc.com/mcp"
    }
  }
}

リモートエンドポイント

https://mcp.zinc.com/mcpstreamable-http

できること

ツール一覧

ツール(9)

🟢 読み取り専用🟡 書き込み🔴 削除⚪ 不明
🟢list-orders(search, status, has_tracking, limit)

List or search the Zinc orders on the configured account, newest first. Renders an interactive order list. Use `search` for a partial order ID or tracking number, `status` to filter by order status, and `has_tracking` to show only shipped orders.

入力スキーマ

{
  "type": "object",
  "properties": {
    "search": {
      "description": "Partial Zinc order ID or tracking number to match",
      "type": "string"
    },
    "status": {
      "description": "Filter to one Zinc order status",
      "type": "string",
      "enum": [
        "pending",
        "in_progress",
        "order_placed",
        "order_failed",
        "cancelled",
        "cancelled_by_retailer"
      ]
    },
    "has_tracking": {
      "description": "True to return only orders that already have tracking numbers",
      "type": "boolean"
    },
    "limit": {
      "default": 10,
      "description": "How many orders to return (1-50, default 10)",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "orders": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Zinc order UUID"
          },
          "status": {
            "type": "string",
            "description": "Zinc order status"
          },
          "retailer": {
            "type": "string",
            "description": "Merchant inferred from the item URLs — Zinc stores no retailer field"
          },
          "item_count": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991,
            "description": "Total units across all line items"
          },
          "item_urls": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Retailer URL per line item. Zinc stores no product name, so this is the only identification of what was ordered — a title derived from the URL path was a guess and often wrong."
          },
          "retailer_logo": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The retailer's mark, for rows with no product picture."
          },
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "type": "string"
                },
                "title": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "image": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "url",
                "title",
                "image"
              ],
              "additionalProperties": false
            },
            "description": "One per line item. title/image are what the shopper saw in the review card when the order was placed through this connector; null when the order came from elsewhere."
          },
          "total_cents": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              },
              {
                "type": "null"
              }
            ],
            "description": "What the retailer charged, in cents. Null when the order was never placed AND null on every list-orders row — the Zinc list endpoint omits it. Call get-order for the real total."
          },
          "total_display": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Preformatted total, e.g. $41.98"
          },
          "max_price_cents": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              },
              {
                "type": "null"
              }
            ],
            "description": "Customer's price ceiling, in cents. Null means withheld, not zero: the public tracking view a guest reads does not carry it. A zero ceiling means something specific (see is_trial) that null does not."
          },
          "merchant_order_ids": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Retailer's own order numbers"
          },
          "shipment_summary": {
            "type": "string",
            "description": "One-line shipment state rolled up from the tracking rows"
          },
          "tracking": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "carrier": {
                  "type": "string",
                  "description": "Carrier code, e.g. ups, usps, fedex"
                },
                "tracking_number": {
                  "type": "string"
                },
                "status": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "pending, in_transit, or delivered; null before first scan"
                },
                "estimated_delivery_date": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "Carrier ETA as a destination-local YYYY-MM-DD date"
                },
                "tracking_url": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "carrier",
                "tracking_number",
                "status",
                "estimated_delivery_date",
                "tracking_url"
              ],
              "additionalProperties": false
            }
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Failure reason when status is order_failed"
          },
          "error_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Worker's classification of the failure, e.g. max_price_exceeded"
          },
          "is_trial": {
            "type": "boolean",
            "description": "max_price of 0 marks a trial run: the retailer validates the order and deliberately does not place it, charging nothing. That outcome is recorded as order_failed with error_type max_price_exceeded, and nothing went wrong — do not report it as a failure. A trial carrying any other error_type did fail, before the price ceiling was ever reached, and the error explains how. This flag is the one to read: a null max_price_cents is an unknown ceiling, never a trial."
          },
          "created_at": {
            "type": "string"
          },
          "updated_at": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "status",
          "retailer",
          "item_count",
          "item_urls",
          "retailer_logo",
          "items",
          "total_cents",
          "total_display",
          "max_price_cents",
          "merchant_order_ids",
          "shipment_summary",
          "tracking",
          "error",
          "error_type",
          "is_trial",
          "created_at",
          "updated_at"
        ],
        "additionalProperties": false
      }
    },
    "total": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Total matching orders on the account"
    },
    "returned": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "environment": {
      "type": "string",
      "enum": [
        "sandbox",
        "live"
      ],
      "description": "Which Zinc dataset the configured API key reads"
    }
  },
  "required": [
    "orders",
    "total",
    "returned",
    "environment"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢get-order(order_id)

Fetch one Zinc order by its UUID and render a detail card: line items, retailer price breakdown, shipping destination, and shipment timeline.

入力スキーマ

{
  "type": "object",
  "properties": {
    "order_id": {
      "type": "string",
      "description": "The Zinc order UUID"
    }
  },
  "required": [
    "order_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "order": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Zinc order UUID"
        },
        "status": {
          "type": "string",
          "description": "Zinc order status"
        },
        "retailer": {
          "type": "string",
          "description": "Merchant inferred from the item URLs — Zinc stores no retailer field"
        },
        "item_count": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991,
          "description": "Total units across all line items"
        },
        "item_urls": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Retailer URL per line item. Zinc stores no product name, so this is the only identification of what was ordered — a title derived from the URL path was a guess and often wrong."
        },
        "retailer_logo": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The retailer's mark, for rows with no product picture."
        },
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "url": {
                "type": "string"
              },
              "title": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "image": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "url",
              "title",
              "image"
            ],
            "additionalProperties": false
          },
          "description": "One per line item. title/image are what the shopper saw in the review card when the order was placed through this connector; null when the order came from elsewhere."
        },
        "total_cents": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            {
              "type": "null"
            }
          ],
          "description": "What the retailer charged, in cents. Null when the order was never placed AND null on every list-orders row — the Zinc list endpoint omits it. Call get-order for the real total."
        },
        "total_display": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "Preformatted total, e.g. $41.98"
        },
        "max_price_cents": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            {
              "type": "null"
            }
          ],
          "description": "Customer's price ceiling, in cents. Null means withheld, not zero: the public tracking view a guest reads does not carry it. A zero ceiling means something specific (see is_trial) that null does not."
        },
        "merchant_order_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Retailer's own order numbers"
        },
        "shipment_summary": {
          "type": "string",
          "description": "One-line shipment state rolled up from the tracking rows"
        },
        "tracking": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "carrier": {
                "type": "string",
                "description": "Carrier code, e.g. ups, usps, fedex"
              },
              "tracking_number": {
                "type": "string"
              },
              "status": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "pending, in_transit, or delivered; null before first scan"
              },
              "estimated_delivery_date": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Carrier ETA as a destination-local YYYY-MM-DD date"
              },
              "tracking_url": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "carrier",
              "tracking_number",
              "status",
              "estimated_delivery_date",
              "tracking_url"
            ],
            "additionalProperties": false
          }
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "Failure reason when status is order_failed"
        },
        "error_type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "Worker's classification of the failure, e.g. max_price_exceeded"
        },
        "is_trial": {
          "type": "boolean",
          "description": "max_price of 0 marks a trial run: the retailer validates the order and deliberately does not place it, charging nothing. That outcome is recorded as order_failed with error_type max_price_exceeded, and nothing went wrong — do not report it as a failure. A trial carrying any other error_type did fail, before the price ceiling was ever reached, and the error explains how. This flag is the one to read: a null max_price_cents is an unknown ceiling, never a trial."
        },
        "created_at": {
          "type": "string"
        },
        "updated_at": {
          "type": "string"
        }
      },
      "required": [
        "id",
        "status",
        "retailer",
        "item_count",
        "item_urls",
        "retailer_logo",
        "items",
        "total_cents",
        "total_display",
        "max_price_cents",
        "merchant_order_ids",
        "shipment_summary",
        "tracking",
        "error",
        "error_type",
        "is_trial",
        "created_at",
        "updated_at"
      ],
      "additionalProperties": false
    },
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "What the shopper saw when buying through this connector; null otherwise."
          },
          "image": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "retailer_logo": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "quantity": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          },
          "status": {
            "type": "string"
          },
          "variant": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "cancellation_reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "url",
          "title",
          "image",
          "retailer_logo",
          "quantity",
          "status",
          "variant",
          "cancellation_reason"
        ],
        "additionalProperties": false
      }
    },
    "price_breakdown": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "subtotal_cents": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": -9007199254740991,
                  "maximum": 9007199254740991
                },
                {
                  "type": "null"
                }
              ]
            },
            "tax_cents": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": -9007199254740991,
                  "maximum": 9007199254740991
                },
                {
                  "type": "null"
                }
              ]
            },
            "shipping_cents": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": -9007199254740991,
                  "maximum": 9007199254740991
                },
                {
                  "type": "null"
                }
              ]
            },
            "discount_cents": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": -9007199254740991,
                  "maximum": 9007199254740991
                },
                {
                  "type": "null"
                }
              ]
            },
            "fees_cents": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": -9007199254740991,
                  "maximum": 9007199254740991
                },
                {
                  "type": "null"
                }
              ]
            },
            "total_cents": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": -9007199254740991,
                  "maximum": 9007199254740991
                },
                {
                  "type": "null"
                }
              ]
            },
            "currency": {
              "type": "string"
            }
          },
          "required": [
            "subtotal_cents",
            "tax_cents",
            "shipping_cents",
            "discount_cents",
            "fees_cents",
            "total_cents",
            "currency"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ],
      "description": "Null until the retailer order is placed — unless prices_withheld is true, which means the amounts exist and this read cannot see them. All amounts in cents."
    },
    "prices_withheld": {
      "type": "boolean",
      "description": "True when the order was read without an account, from the public tracking view, which carries no money at all. The order may well have been charged in full: never report it as uncharged. False on a signed-in read, where a null breakdown does mean not charged yet."
    },
    "ship_to": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "name": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "city": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "state": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "postal_code": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "country": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "required": [
            "name",
            "city",
            "state",
            "postal_code",
            "country"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "environment": {
      "type": "string",
      "enum": [
        "sandbox",
        "live"
      ]
    }
  },
  "required": [
    "order",
    "items",
    "price_breakdown",
    "prices_withheld",
    "ship_to",
    "environment"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢get-order-tracking(order_id)

Return the carrier tracking timeline (scan checkpoints) for one Zinc order. Use this when the question is only about where a package is, not about pricing or line items.

入力スキーマ

{
  "type": "object",
  "properties": {
    "order_id": {
      "type": "string",
      "description": "The Zinc order UUID"
    }
  },
  "required": [
    "order_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "order_id": {
      "type": "string"
    },
    "order_status": {
      "type": "string"
    },
    "shipment_summary": {
      "type": "string"
    },
    "shipments": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "carrier": {
            "type": "string"
          },
          "tracking_number": {
            "type": "string"
          },
          "status": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "estimated_delivery_date": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "tracking_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "checkpoints": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "checkpoint_time": {
                  "type": "string"
                },
                "status": {
                  "type": "string"
                },
                "message": {
                  "type": "string"
                },
                "location": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "checkpoint_time",
                "status",
                "message",
                "location"
              ],
              "additionalProperties": false
            },
            "description": "Newest scan first"
          }
        },
        "required": [
          "carrier",
          "tracking_number",
          "status",
          "estimated_delivery_date",
          "tracking_url",
          "checkpoints"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "order_id",
    "order_status",
    "shipment_summary",
    "shipments"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢list-addresses

Destinations from the signed-in user's recent orders, each with an id you can pass to prepare-order as address_id. Only useful once the user has signed in (list-orders has worked, or they asked for their history); for anyone else it has nothing, and the shopper enters the address on the payment page instead. It never prompts for sign-in. Labels are deliberately partial — a name, a city, a truncated postal code. You are not shown the street, and you do not need it: the full address is resolved server-side and shown to the user in the review card before anything is placed. Never reconstruct or guess an address from a label; if none of these is the right destination, ask the user.

入力スキーマ

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "addresses": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Pass as prepare-order's address_id"
          },
          "label": {
            "type": "string",
            "description": "Partial by design — not the full address"
          },
          "last_used": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "order_count": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          }
        },
        "required": [
          "id",
          "label",
          "last_used",
          "order_count"
        ],
        "additionalProperties": false
      }
    },
    "orders_inspected": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "addresses",
    "orders_inspected"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢prepare-order(products, address_id, max_price)

Show the user an order to review: items, what it will cost and the hold on the card. This does NOT place the order or spend anything — the user places it by clicking Pay & place in the card that appears, and enters their shipping address on the payment page that opens. Use this whenever the user wants to buy something; never ask them for an address first. Pass each product's title, image and price_cents from search so the card shows the item and quotes the total; leave max_price out unless the user named a budget. address_id, from list-addresses, is only for a signed-in user shipping somewhere they have shipped before. Not sold through this connector: weapons, tobacco and nicotine, regulated drugs and paraphernalia, prescription medication, adult products, gambling, covert surveillance and counterfeit goods. An order for one of those is refused.

入力スキーマ

{
  "type": "object",
  "properties": {
    "products": {
      "minItems": 1,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Product URL on the retailer's site"
          },
          "quantity": {
            "default": 1,
            "type": "integer",
            "minimum": 1,
            "maximum": 9007199254740991
          },
          "title": {
            "description": "Product title from search, for the card.",
            "type": "string"
          },
          "image": {
            "description": "Product image URL, copied verbatim from the search result. Only an address search returned can be shown — a constructed or substituted one is dropped rather than rendered.",
            "type": "string"
          },
          "price_cents": {
            "description": "Listed unit price from search, in cents. Drives the quote and the cap.",
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          }
        },
        "required": [
          "url"
        ]
      }
    },
    "address_id": {
      "description": "An id from list-addresses, for a signed-in user shipping somewhere they have shipped before. Resolved against their own order history; the full address appears in the review card, not here. Leave it out otherwise: the shopper enters the address on the payment page. Never ask for an address in the conversation.",
      "type": "string"
    },
    "max_price": {
      "description": "Hard spending cap for this order, in cents, including tax and shipping. Pass it only when the user named a budget; otherwise leave it out and the cap is derived from the listed price, an estimated tax and shipping, with a margin. The order fails rather than exceeding it.",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "products"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "products": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Product URL on the retailer's site"
          },
          "quantity": {
            "default": 1,
            "type": "integer",
            "minimum": 1,
            "maximum": 9007199254740991
          },
          "title": {
            "description": "Product title from search, for the card.",
            "type": "string"
          },
          "image": {
            "description": "Product image URL, copied verbatim from the search result. Only an address search returned can be shown — a constructed or substituted one is dropped rather than rendered.",
            "type": "string"
          },
          "price_cents": {
            "description": "Listed unit price from search, in cents. Drives the quote and the cap.",
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "retailer_logo": {
            "type": "string"
          }
        },
        "required": [
          "url",
          "quantity"
        ],
        "additionalProperties": false
      }
    },
    "shipping_address": {
      "description": "Only when resolved from a saved address; otherwise entered at checkout.",
      "type": "object",
      "properties": {
        "first_name": {
          "type": "string"
        },
        "last_name": {
          "type": "string"
        },
        "address_line1": {
          "type": "string"
        },
        "address_line2": {
          "type": "string"
        },
        "city": {
          "type": "string"
        },
        "state": {
          "description": "Two-letter state code where applicable",
          "type": "string"
        },
        "postal_code": {
          "type": "string"
        },
        "phone_number": {
          "type": "string"
        },
        "country": {
          "default": "US",
          "type": "string"
        }
      },
      "required": [
        "first_name",
        "last_name",
        "address_line1",
        "city",
        "postal_code",
        "phone_number",
        "country"
      ],
      "additionalProperties": false
    },
    "max_price_cents": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "max_price_display": {
      "type": "string"
    },
    "quote": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "listed_price_cents": {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            "estimated_tax_cents": {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            "shipping_cents": {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            "order_fee_cents": {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            "estimated_total_cents": {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991,
              "description": "What the card will most likely be charged: goods + tax + shipping + fee."
            },
            "hold_cents": {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991,
              "description": "Authorized on the card: max_price + fee."
            },
            "tax_rate": {
              "type": "number",
              "description": "The rate the tax ESTIMATE used, as a decimal. Not a lookup: the destination is not known until checkout, so a flat 10% is assumed and the retailer charges the real tax. It only sizes the hold; only the actual total is ever captured."
            },
            "tax_basis": {
              "type": "string",
              "enum": [
                "assistant",
                "assumed",
                "floored"
              ],
              "description": "Always 'assumed' here: a flat 10% estimate, not a rate lookup."
            },
            "shipping_basis": {
              "type": "string",
              "enum": [
                "member",
                "free_over_threshold",
                "standard"
              ],
              "description": "member: ships free at any size on this connector; free_over_threshold: the basket clears the retailer's free-shipping line; standard: the retailer's ground charge applies."
            },
            "cap_basis": {
              "type": "string",
              "enum": [
                "derived",
                "budget"
              ],
              "description": "derived: the cap is the estimate plus a margin; budget: it is the max_price the user named."
            }
          },
          "required": [
            "listed_price_cents",
            "estimated_tax_cents",
            "shipping_cents",
            "order_fee_cents",
            "estimated_total_cents",
            "hold_cents",
            "tax_rate",
            "tax_basis",
            "shipping_basis",
            "cap_basis"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "ship_to_summary": {
      "type": "string",
      "description": "Empty when the shopper will enter the address on the payment page."
    },
    "environment": {
      "type": "string",
      "enum": [
        "sandbox",
        "live"
      ]
    },
    "can_place": {
      "type": "boolean",
      "description": "False when this connection lacks the orders:write scope."
    },
    "guest": {
      "type": "boolean",
      "description": "True when nobody is signed in: the order belongs to a guest account made from the checkout email rather than to a Zinc account."
    }
  },
  "required": [
    "products",
    "max_price_cents",
    "max_price_display",
    "quote",
    "ship_to_summary",
    "environment",
    "can_place",
    "guest"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🔴place-order(confirmation, order)

Internal: places an order the user already confirmed in the review card, paying by card. Requires a confirmation issued by prepare-order, which is not available to you — call prepare-order and let the user confirm instead.

入力スキーマ

{
  "type": "object",
  "properties": {
    "confirmation": {
      "type": "string",
      "description": "Issued by prepare-order to the view."
    },
    "order": {
      "type": "object",
      "properties": {
        "products": {
          "minItems": 1,
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "url": {
                "type": "string",
                "description": "Product URL on the retailer's site"
              },
              "quantity": {
                "default": 1,
                "type": "integer",
                "minimum": 1,
                "maximum": 9007199254740991
              },
              "title": {
                "type": "string"
              },
              "image": {
                "type": "string"
              }
            },
            "required": [
              "url"
            ]
          }
        },
        "shipping_address": {
          "type": "object",
          "properties": {
            "first_name": {
              "type": "string"
            },
            "last_name": {
              "type": "string"
            },
            "address_line1": {
              "type": "string"
            },
            "address_line2": {
              "type": "string"
            },
            "city": {
              "type": "string"
            },
            "state": {
              "description": "Two-letter state code where applicable",
              "type": "string"
            },
            "postal_code": {
              "type": "string"
            },
            "phone_number": {
              "type": "string"
            },
            "country": {
              "default": "US",
              "type": "string"
            }
          },
          "required": [
            "first_name",
            "last_name",
            "address_line1",
            "city",
            "postal_code",
            "phone_number"
          ]
        },
        "max_price": {
          "type": "integer",
          "minimum": 1,
          "maximum": 9007199254740991
        }
      },
      "required": [
        "products",
        "max_price"
      ]
    }
  },
  "required": [
    "confirmation",
    "order"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "description": "An order status once placed, or requires_action while the buyer pays."
    },
    "order_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "max_price_cents": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "payment": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "payment_id": {
              "type": "string"
            },
            "status": {
              "type": "string"
            },
            "order_id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "pay_url": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "expires_at": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "hold_cents": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": -9007199254740991,
                  "maximum": 9007199254740991
                },
                {
                  "type": "null"
                }
              ]
            },
            "failure": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Why the payment ended `failed`, for the shopper — e.g. the address they entered at checkout could not be used. The hold has been released."
            }
          },
          "required": [
            "payment_id",
            "status",
            "order_id",
            "pay_url",
            "expires_at",
            "hold_cents",
            "failure"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ],
      "description": "Set when the buyer has to pay on pay_url before the order exists."
    }
  },
  "required": [
    "status",
    "order_id",
    "max_price_cents",
    "payment"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢get-payment-status(payment_id)

Where a card payment stands after place-order sent the buyer to a payment page: requires_action until they pay, then placed with the order_id. The review card polls this itself; call it only if the user asks whether their payment went through.

入力スキーマ

{
  "type": "object",
  "properties": {
    "payment_id": {
      "type": "string",
      "description": "The payment id place-order returned."
    }
  },
  "required": [
    "payment_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "payment_id": {
      "type": "string"
    },
    "status": {
      "type": "string"
    },
    "order_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "pay_url": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "expires_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "hold_cents": {
      "anyOf": [
        {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        {
          "type": "null"
        }
      ]
    },
    "failure": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Why the payment ended `failed`, for the shopper — e.g. the address they entered at checkout could not be used. The hold has been released."
    }
  },
  "required": [
    "payment_id",
    "status",
    "order_id",
    "pay_url",
    "expires_at",
    "hold_cents",
    "failure"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢search-products(query, retailers)

Find products across Amazon, Walmart, Target, Best Buy and more. Each result carries an orderable URL that can be passed straight to prepare-order, along with its title, image and price_cents — pass those too, so the review card can show the item and quote the total. Use this when the user wants to buy something but has not given a product URL. Then stop and let the user choose from the card — do not go on to prepare-order in the same turn unless they already named the exact item or asked you to pick. Search once with the user's best query rather than issuing speculative variations, and do not retry a failed search without saying why. When the user names the store they want to buy from, pass it in retailers rather than in the query; otherwise leave retailers out and search everywhere. Not sold through this connector: weapons, tobacco and nicotine, regulated drugs and paraphernalia, prescription medication, adult products, gambling, covert surveillance and counterfeit goods. A search for one of those is refused and matching results are dropped; tell the user plainly rather than rephrasing the query to get around it.

入力スキーマ

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1,
      "description": "What to search for, e.g. 'airpods pro' or 'cotton bath towels'"
    },
    "retailers": {
      "description": "Only return results from these stores: any of amazon, bestbuy, bhphotovideo, chewy, costco, homedepot, kohls, lowes, macys, newegg, staples, target, walmart, wayfair, etsy, plus up to 3 Shopify stores by domain (e.g. 'yetch.studio'). A Shopify store must be in Zinc's catalog; an unknown value is rejected with the list of accepted ones. Omit to search every retailer. Shopify stores and Etsy are only searched when named here.",
      "maxItems": 18,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 100
      }
    }
  },
  "required": [
    "query"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string"
    },
    "retailers": {
      "description": "The stores the search was limited to; absent when it searched everywhere.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "results": {
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Orderable retailer URL — pass straight to prepare-order"
          },
          "retailer": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "image": {
            "type": "string"
          },
          "retailer_logo": {
            "type": "string"
          },
          "brand": {
            "type": "string"
          },
          "price_cents": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          },
          "price_display": {
            "type": "string"
          },
          "stars": {
            "type": "number"
          },
          "num_reviews": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          }
        },
        "required": [
          "url",
          "retailer",
          "title"
        ],
        "additionalProperties": false
      },
      "description": "At most 20 results, best first. The card shows them all; a narrower query finds more, not a second page."
    },
    "result_count": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "How many results are in `results`."
    },
    "environment": {
      "type": "string",
      "enum": [
        "sandbox",
        "live"
      ]
    }
  },
  "required": [
    "query",
    "results",
    "result_count",
    "environment"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟡send_feedback(content, source)

Records feedback about this MCP server, including unexpected tool failures, unhelpful responses, or missing capabilities observed by the agent or reported by the user.

入力スキーマ

{
  "type": "object",
  "properties": {
    "content": {
      "type": "string",
      "description": "The feedback content, stripped of any PII."
    },
    "source": {
      "type": "string",
      "enum": [
        "user",
        "model"
      ],
      "description": "Who initiated the feedback: \"user\" or \"model\"."
    }
  },
  "required": [
    "content",
    "source"
  ]
}

コミュニティ

このサーバーを評価する

エビデンス

最近の観測

検証済みバージョンは記録されていませんツール 9 件