A2A Grocery — the agentic hub for retail grocery procurement
A2A + MCP hub for retail grocery procurement — 20 markets on the SCHEMA algo record. Trade only.
使うべきか
品質と安全性
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"a2a-grocery": {
"url": "https://mcp.a2a-grocery.ai/mcp"
}
}
}リモートエンドポイント
https://mcp.a2a-grocery.ai/mcpstreamable-httpできること
ツール一覧
ツール(19)
🟢resolve_jurisdiction(ship_to)
Where is this going? Resolve a ship-to (e.g. 'DE', 'US-CA', 'UK', 'FR', 'EU-NL', 'JP') to one of the 20 markets and its rule set (14 rule sets; the seven EU markets share one food-law set with national riders). UK is the label; machine fields carry the ISO code GB.
入力スキーマ
{
"type": "object",
"properties": {
"ship_to": {
"type": "string"
}
},
"required": [
"ship_to"
]
}出力スキーマ
{
"type": "object"
}🟢resolve_actor(actor_class, credential)
Who is asking? Maker, brand owner, private label, distributor, importer, broker or retail buyer (trade only); auditor (read-only); agent (inherits the class of the credential it presents — none returns DENY_UNLICENSED_AGENT). The consumer is never the counterparty. Returns communication_class: trade_information or public.
入力スキーマ
{
"type": "object",
"properties": {
"actor_class": {
"type": "string"
},
"credential": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
}
},
"required": [
"actor_class"
]
}出力スキーマ
{
"type": "object"
}🟢gate_transaction(ship_to, actor_class, product, product_type, ingredients, ...)
Allow or deny, with the reason and the rule. Takes an item (GTIN or catalogue id; optional), the ship-to market, the actor class and, when no record exists yet, the product type, ingredients and claims. Returns one of twelve reason codes (ALLOW · REQUIRE_NOTIFICATION · REQUIRE_RESPONSIBLE_PERSON · DENY_NOT_PERMITTED_HERE · DENY_INGREDIENT_BANNED · DENY_INGREDIENT_LIMIT · DENY_CLAIM · DENY_MARKET · DENY_ACTOR_CLASS · DENY_UNLICENSED_AGENT · DENY_NO_GTIN · DENY_NOT_VERIFIED), the rule-set version, the source page and a decision_id for the downstream tools.
入力スキーマ
{
"type": "object",
"properties": {
"ship_to": {
"type": "string"
},
"actor_class": {
"type": "string"
},
"product": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
},
"product_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
},
"ingredients": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null
},
"claims": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null
},
"channel": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
},
"credential": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
}
},
"required": [
"ship_to",
"actor_class"
]
}出力スキーマ
{
"type": "object"
}🟢search_cleared_items(market, query, temperature, lane, department, ...)
Find items cleared for this market: validated SKU records in a market (query by product name, brand, maker or category; filters: temperature ambient · chilled · frozen · fresh, attribute lane organic · free-from · plant-based · artisan · origin · premium, department). Only validated rows are served; each item carries its claim status, market status and source class.
入力スキーマ
{
"type": "object",
"properties": {
"market": {
"type": "string"
},
"query": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
},
"temperature": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
},
"lane": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
},
"department": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
},
"product_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
},
"limit": {
"default": 25,
"type": "integer"
},
"decision_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
}
},
"required": [
"market"
]
}出力スキーマ
{
"type": "object"
}🟢get_item(gtin, market, decision_id)
One item by GTIN (EAN in European copy), fully resolved: temperature, department → super category → category, attribute lanes, pack, brand and maker, market, claim status, market status, availability; after the gate also ingredients, allergens, claims, origin, certificates, variants and offers.
入力スキーマ
{
"type": "object",
"properties": {
"gtin": {
"type": "string"
},
"market": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
},
"decision_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
}
},
"required": [
"gtin"
]
}出力スキーマ
{
"type": "object"
}🟢verify_gtin(gtin)
Is this GTIN real, and whose is it? Check-digit validation, the GS1 prefix, and the validated record(s) that carry it on this hub with their brand, maker and claim status.
入力スキーマ
{
"type": "object",
"properties": {
"gtin": {
"type": "string"
}
},
"required": [
"gtin"
]
}出力スキーマ
{
"type": "object"
}🟢get_label_and_claims(market, claims, product_type)
What the label must say, and which claims are allowed: the labelling requirements of the market (food information, allergens, origin, nutrition) and the claims rules of record (nutrition and health claims, organic, free-from), each with its source page. Optional claims are checked against the rules.
入力スキーマ
{
"type": "object",
"properties": {
"market": {
"type": "string"
},
"claims": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null
},
"product_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
}
},
"required": [
"market"
]
}出力スキーマ
{
"type": "object"
}🟢compare_items(gtins, market, decision_id)
Compare items, variants and pack sizes side by side (two to eight GTINs or catalogue ids).
入力スキーマ
{
"type": "object",
"properties": {
"gtins": {
"items": {
"type": "string"
},
"type": "array"
},
"market": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
},
"decision_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
}
},
"required": [
"gtins"
]
}出力スキーマ
{
"type": "object"
}🟢find_verified_buyer(market, decision_id, channel, department, query, ...)
Retail buyer desks for this market: banner records (banner, parent group, channel discounter · e-commerce · local · in-store · traditional, local format, cited POS count or NULL, buyer desk by department) with their claim status — verified first, then claimed, then listed. Filters: channel, department. Takes the decision_id of an allow decision.
入力スキーマ
{
"type": "object",
"properties": {
"market": {
"type": "string"
},
"decision_id": {
"type": "string"
},
"channel": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
},
"department": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
},
"query": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
},
"limit": {
"default": 25,
"type": "integer"
}
},
"required": [
"market",
"decision_id"
]
}出力スキーマ
{
"type": "object"
}🟢find_verified_supplier(market, decision_id, gtin, query, lane, ...)
Verified makers, brand owners, private-label owners, distributors and importers for this item or category in a market: maker records with their claim status — verified first, then claimed, then listed. Takes the decision_id of an allow decision.
入力スキーマ
{
"type": "object",
"properties": {
"market": {
"type": "string"
},
"decision_id": {
"type": "string"
},
"gtin": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
},
"query": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
},
"lane": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
},
"limit": {
"default": 25,
"type": "integer"
}
},
"required": [
"market",
"decision_id"
]
}出力スキーマ
{
"type": "object"
}🟢get_product_documents(gtin, decision_id, market)
Certificates and paper: the documents on an item record (organic certificate, PDO/PGI, halal, kosher, specification, allergen statement, origin declaration, lot where it applies), each a URL with its read date and source class; decision_id required.
入力スキーマ
{
"type": "object",
"properties": {
"gtin": {
"type": "string"
},
"decision_id": {
"type": "string"
},
"market": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
}
},
"required": [
"gtin",
"decision_id"
]
}出力スキーマ
{
"type": "object"
}🟡log_audit(kind, reference_id, note)
Write a line to the audit record for a gate decision, an order intent or a handoff (returns the line id).
入力スキーマ
{
"type": "object",
"properties": {
"kind": {
"type": "string"
},
"reference_id": {
"type": "string"
},
"note": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
}
},
"required": [
"kind",
"reference_id"
]
}出力スキーマ
{
"type": "object"
}🟢get_price(gtin, decision_id, market)
The price for this buyer: the price basis (list · contract · promotion window) from the maker's offers on the record, once gate_transaction has answered allow (decision_id). Plain $ on human surfaces. Tiers buy services, never rank.
入力スキーマ
{
"type": "object",
"properties": {
"gtin": {
"type": "string"
},
"decision_id": {
"type": "string"
},
"market": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
}
},
"required": [
"gtin",
"decision_id"
]
}出力スキーマ
{
"type": "object"
}🟢get_availability(gtin, decision_id, market)
In stock, and where: the availability block of an item (banners on the shelf of record, product URLs read live at load, POS counts where the banner record carries a cited one) once gate_transaction has answered allow (decision_id).
入力スキーマ
{
"type": "object",
"properties": {
"gtin": {
"type": "string"
},
"decision_id": {
"type": "string"
},
"market": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
}
},
"required": [
"gtin",
"decision_id"
]
}出力スキーマ
{
"type": "object"
}🟡create_order_intent(gtin, quantity, decision_id, market, ship_to)
Open an order between two agents: an order intent for a cleared item after the gate; the intent carries reason_code + rule_set_version and settles by x402 on a2a-x402.ai.
入力スキーマ
{
"type": "object",
"properties": {
"gtin": {
"type": "string"
},
"quantity": {
"type": "integer"
},
"decision_id": {
"type": "string"
},
"market": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
},
"ship_to": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
}
},
"required": [
"gtin",
"quantity",
"decision_id"
]
}出力スキーマ
{
"type": "object"
}⚪a2a_handoff(intent_id, decision_id, counterparty_card_url)
Hand the buyer to the right agent over Agent-to-Agent (A2A): with an allow decision the order intent goes to the counterparty's agent (envelope + card URL); with a deny, the market agent of the ship-to — a referral, never a sale to a consumer.
入力スキーマ
{
"type": "object",
"properties": {
"intent_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
},
"decision_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
},
"counterparty_card_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
}
}
}出力スキーマ
{
"type": "object"
}🟢get_market_status(product_type, market)
Is this product type a food here, and under which regime? Product type by market: food, special class (novel food, food supplement, infant formula, fortified, organic-certified, alcohol excise) or not permitted — with the rule-set version and the regulator's page.
入力スキーマ
{
"type": "object",
"properties": {
"product_type": {
"type": "string"
},
"market": {
"type": "string"
}
},
"required": [
"product_type",
"market"
]
}出力スキーマ
{
"type": "object"
}🟢get_notification_requirements(market, product_type)
What must be filed before sale in a market: the food business registration or import notification scheme, the food business operator of record, and, for a product type in a special class, the extra step (novel-food authorisation, organic certification, supplement notification) — each with its source page.
入力スキーマ
{
"type": "object",
"properties": {
"market": {
"type": "string"
},
"product_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
}
},
"required": [
"market"
]
}出力スキーマ
{
"type": "object"
}🟢get_enforcement_watch(market, query, since)
Recalls, withdrawals and food-safety alerts, dated: enforcement events by market, category, brand or since a date, each with its source page.
入力スキーマ
{
"type": "object",
"properties": {
"market": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
},
"query": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
},
"since": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
}
}
}出力スキーマ
{
"type": "object"
}コミュニティ
エビデンス