MCP Server

A2A Grocery — the agentic hub for retail grocery procurement

io.github.greencore-solutions/a2a-grocery

What this MCP does

Supports trade-only grocery procurement with product and GTIN validation, market and food-law checks, labeling requirements, availability, pricing, suppliers, buyers, order intents, and audit logging.

a2a_handoff
A2A Handoff
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.
Input schema
{'type': 'object', 'properties': {'intent_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'decision_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'counterparty_card_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}}}
Output schema
{'type': 'object'}
compare_items
Compare Items
Compare items, variants and pack sizes side by side (two to eight GTINs or catalogue ids).
Read only Idempotent
Input schema
{'type': 'object', 'required': ['gtins'], 'properties': {'gtins': {'type': 'array', 'items': {'type': 'string'}}, 'market': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'decision_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}}}
Output schema
{'type': 'object'}
create_order_intent
Create Order Intent
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.
Input schema
{'type': 'object', 'required': ['gtin', 'quantity', 'decision_id'], 'properties': {'gtin': {'type': 'string'}, 'market': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'ship_to': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'quantity': {'type': 'integer'}, 'decision_id': {'type': 'string'}}}
Output schema
{'type': 'object'}
find_verified_buyer
Find Verified Buyer
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.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['market', 'decision_id'], 'properties': {'limit': {'type': 'integer', 'default': 25}, 'query': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'market': {'type': 'string'}, 'channel': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'department': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'decision_id': {'type': 'string'}}}
Output schema
{'type': 'object'}
find_verified_supplier
Find Verified Supplier
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.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['market', 'decision_id'], 'properties': {'gtin': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'lane': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'limit': {'type': 'integer', 'default': 25}, 'query': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'market': {'type': 'string'}, 'decision_id': {'type': 'string'}}}
Output schema
{'type': 'object'}
gate_transaction
Gate Transaction
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.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['ship_to', 'actor_class'], 'properties': {'claims': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'default': None}, 'channel': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'product': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'ship_to': {'type': 'string'}, 'credential': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'actor_class': {'type': 'string'}, 'ingredients': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'default': None}, 'product_type': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}}}
Output schema
{'type': 'object'}
get_availability
Get Availability
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).
Read only Idempotent
Input schema
{'type': 'object', 'required': ['gtin', 'decision_id'], 'properties': {'gtin': {'type': 'string'}, 'market': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'decision_id': {'type': 'string'}}}
Output schema
{'type': 'object'}
get_enforcement_watch
Get Enforcement Watch
Recalls, withdrawals and food-safety alerts, dated: enforcement events by market, category, brand or since a date, each with its source page.
Read only Idempotent
Input schema
{'type': 'object', 'properties': {'query': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'since': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'market': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}}}
Output schema
{'type': 'object'}
get_item
Get Item
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.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['gtin'], 'properties': {'gtin': {'type': 'string'}, 'market': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'decision_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}}}
Output schema
{'type': 'object'}
get_label_and_claims
Get Label And Claims
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.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['market'], 'properties': {'claims': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'default': None}, 'market': {'type': 'string'}, 'product_type': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}}}
Output schema
{'type': 'object'}
get_market_status
Get Market Status
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.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['product_type', 'market'], 'properties': {'market': {'type': 'string'}, 'product_type': {'type': 'string'}}}
Output schema
{'type': 'object'}
get_notification_requirements
Get Notification Requirements
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.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['market'], 'properties': {'market': {'type': 'string'}, 'product_type': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}}}
Output schema
{'type': 'object'}
get_price
Get Price
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.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['gtin', 'decision_id'], 'properties': {'gtin': {'type': 'string'}, 'market': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'decision_id': {'type': 'string'}}}
Output schema
{'type': 'object'}
get_product_documents
Get Product Documents
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.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['gtin', 'decision_id'], 'properties': {'gtin': {'type': 'string'}, 'market': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'decision_id': {'type': 'string'}}}
Output schema
{'type': 'object'}
log_audit
Log Audit
Write a line to the audit record for a gate decision, an order intent or a handoff (returns the line id).
Input schema
{'type': 'object', 'required': ['kind', 'reference_id'], 'properties': {'kind': {'type': 'string'}, 'note': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'reference_id': {'type': 'string'}}}
Output schema
{'type': 'object'}
resolve_actor
Resolve Actor
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.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['actor_class'], 'properties': {'credential': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'actor_class': {'type': 'string'}}}
Output schema
{'type': 'object'}
resolve_jurisdiction
Resolve Jurisdiction
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.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['ship_to'], 'properties': {'ship_to': {'type': 'string'}}}
Output schema
{'type': 'object'}
search_cleared_items
Search Cleared Items
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.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['market'], 'properties': {'lane': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'limit': {'type': 'integer', 'default': 25}, 'query': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'market': {'type': 'string'}, 'department': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'decision_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'temperature': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}, 'product_type': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None}}}
Output schema
{'type': 'object'}
verify_gtin
Verify 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.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['gtin'], 'properties': {'gtin': {'type': 'string'}}}
Output schema
{'type': 'object'}
Added
get_enforcement_watch
Oct. 3, 2026, 2:40 a.m.
Added
get_notification_requirements
Oct. 3, 2026, 2:40 a.m.
Added
get_market_status
Oct. 3, 2026, 2:40 a.m.
Added
a2a_handoff
Oct. 3, 2026, 2:40 a.m.
Added
create_order_intent
Oct. 3, 2026, 2:40 a.m.
Added
get_availability
Oct. 3, 2026, 2:40 a.m.
Added
get_price
Oct. 3, 2026, 2:40 a.m.
Added
log_audit
Oct. 3, 2026, 2:40 a.m.
Added
get_product_documents
Oct. 3, 2026, 2:40 a.m.
Added
find_verified_supplier
Oct. 3, 2026, 2:40 a.m.
Added
find_verified_buyer
Oct. 3, 2026, 2:40 a.m.
Added
compare_items
Oct. 3, 2026, 2:40 a.m.
Added
get_label_and_claims
Oct. 3, 2026, 2:40 a.m.
Added
verify_gtin
Oct. 3, 2026, 2:40 a.m.
Added
get_item
Oct. 3, 2026, 2:40 a.m.
Added
search_cleared_items
Oct. 3, 2026, 2:40 a.m.
Added
gate_transaction
Oct. 3, 2026, 2:40 a.m.
Added
resolve_actor
Oct. 3, 2026, 2:40 a.m.
Added
resolve_jurisdiction
Oct. 3, 2026, 2:40 a.m.

Gemalli B2B Trade

com.gemalli/trade

Supports wholesale product and manufacturer discovery, trade-term lookup, HS classification, sanctions and dual-use screening, an…

0523 Public — Taiwan Logistics & Customs

tw.0523/lucky-public

Calculates Taiwan freight, delivery surcharges, import taxes, CCC classifications, tariffs, and customs requirements.

Cambridge China Bridge — China sourcing

uk.co.camchinabridge/sourcing

Helps evaluate China-to-UK sourcing through duty, landed cost, freight, compliance, anti-dumping, and supplier enquiry tools.

Verify China Supplier | Supplier Check

io.github.lu7897859-tech/china-sourcing-audit

Evaluates Chinese suppliers, payment arrangements, import costs, certifications, and sourcing risks before purchase.

premium-data-mcp-server

com.thenextgennexus/premium-data-mcp-server

Searches government contracts, business registrations, FDA recalls, Amazon products, and comparative e-commerce pricing.

China Import Quote Preflight

io.github.yl124915300-dot/trade-preflight

Screens China-to-US or China-to-EU supplier quotes and shipments for costs, missing inputs, low-value rules, and compliance block…

AgentLot Marketplace

io.agentlot/marketplace

Enables agents and users to discover, bid on, purchase, deliver, and settle paid digital services and compute work.

Corply — Start and run your company

io.github.corply-dev/corply

Supports company formation and corporate administration including incorporation documents, signatures, cap tables, corporate acti…