A2A Grocery — the agentic hub for retail grocery procurement
Server Details
A2A + MCP hub for retail grocery procurement — 20 markets on the SCHEMA algo record. Trade only.
- Status
- Healthy
- Uptime
- 100.0% over the last 24 hours
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- greencore-solutions/a2a-grocery
- GitHub Stars
- 0
- Server Listing
- a2a-grocery
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 23 tools
A cluster of product-retrieval tools overlaps heavily: get_item, verify_gtin, get_product, lookup_catalog, search_catalog and search_cleared_items all return GTIN-keyed product records, distinguished mainly by provenance (gtinfetch signed record vs UCP priced subset vs validated cleared rows) rather than by action. The descriptions do explain the partition (e.g. 'every other row stays on search_cleared_items'), so a careful agent can recover, but misselection is likely without reading closely. The gate/verification/actor tools are otherwise cleanly separable.
Almost every tool follows a snake_case verb_noun pattern (get_item, search_catalog, resolve_jurisdiction, create_order_intent), which is predictable and readable. The only deviation is a2a_handoff, which is noun-first with a protocol prefix, plus the get_product/get_item near-duplicate stems.
At 23 tools this is on the heavy side for a single hub, and the weight comes largely from offering three parallel catalogue interfaces (hub-native, UCP single/batch/search) plus a separate compare tool. Each tool has a defensible role in a regulated procurement workflow, but the surface would benefit from consolidating the catalog-lookup family.
Coverage is broad: identity/actor and jurisdiction resolution, GTIN validation, market status, notifications, labelling, gating, price, availability, documents, enforcement watch, order intents, A2A handoff and audit logging form a coherent end-to-end procurement flow. Gaps remain around the post-intent lifecycle (no order status, settlement or cancellation), seat management beyond initial claim (no revocation or re-listing tool), and no way to enumerate markets, departments or categories.
Available Tools
23 toolsa2a_handoffA2A HandoffCInspect
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.
Inputs: intent_id, decision_id, counterparty_card_url. Returns: object
claim_seatClaim SeatAInspect
A brand's agent claims its seat on A2A Grocery. Give the agent's card URL and the GTINs the brand claims: every GTIN must resolve on gtinfetch.ai to the maker the card names, and the category comes first (grocery proceeds; a beauty record is referred to a2a-cosmetics.ai; peptides to a2a-peptides.ai; beer, wine and spirits are refused; an unresolved GTIN is refused). An accepted claim answers a challenge for the card's domain (a DNS TXT record or a well-known file); call again with the challenge_id once it is published: a pass moves the brand's rows from listed to claimed and answers the seat key. With the seat key, rows sets the seat's own price, availability, markets and claims, its own GTINs only. Every claim, accepted or refused, is logged. Verified is a person's step, never a tool's.
Inputs: card_url (required), rows, gtins, seat_key, +1 more. Returns: object
compare_itemsCompare ItemsBRead-onlyIdempotentInspect
Compare items, variants and pack sizes side by side (two to eight GTINs or catalogue ids).
Inputs: gtins (required), market, decision_id. Returns: object
create_order_intentCreate Order IntentBInspect
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.
Inputs: gtin (required), quantity (required), decision_id (required), market, +1 more. Returns: object
find_verified_buyerFind Verified BuyerARead-onlyIdempotentInspect
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.
Inputs: market (required), decision_id (required), limit, query, +2 more. Returns: object
find_verified_supplierFind Verified SupplierARead-onlyIdempotentInspect
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.
Inputs: market (required), decision_id (required), gtin, lane, +2 more. Returns: object
gate_transactionGate TransactionARead-onlyIdempotentInspect
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.
Inputs: ship_to (required), actor_class (required), claims, channel, +4 more. Returns: object
get_availabilityGet AvailabilityBRead-onlyIdempotentInspect
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).
Inputs: gtin (required), decision_id (required), market. Returns: object
get_enforcement_watchGet Enforcement WatchBRead-onlyIdempotentInspect
Recalls, withdrawals and food-safety alerts, dated: enforcement events by market, category, brand or since a date, each with its source page.
Inputs: query, since, market. Returns: object
get_itemGet ItemBRead-onlyIdempotentInspect
Product record from gtinfetch.ai (signed); hub layer: seat, market, claim, price, availability. 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.
Inputs: gtin (required), market, decision_id. Returns: object
get_label_and_claimsGet Label And ClaimsBRead-onlyIdempotentInspect
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.
Inputs: market (required), claims, product_type. Returns: object
get_market_statusGet Market StatusBRead-onlyIdempotentInspect
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.
Inputs: market (required), product_type (required). Returns: object
get_notification_requirementsGet Notification RequirementsARead-onlyIdempotentInspect
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.
Inputs: market (required), product_type. Returns: object
get_priceGet PriceARead-onlyIdempotentInspect
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.
Inputs: gtin (required), decision_id (required), market. Returns: object
get_productGet ProductBRead-onlyIdempotentInspect
Universal Commerce Protocol (UCP) product detail, version 2026-08-25 (dev.ucp.shopping.catalog.lookup). arguments: meta {'ucp-agent': {profile}} (required) and catalog {id: a GTIN or a variant id :; context; filters}. One product of the priced subset with its variants per market, list price and claim_status; outside the subset, ucp.status error and not_found.
Inputs: meta, catalog. Returns: object
get_product_documentsGet Product DocumentsBRead-onlyIdempotentInspect
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.
Inputs: gtin (required), decision_id (required), market. Returns: object
log_auditLog AuditBInspect
Write a line to the audit record for a gate decision, an order intent or a handoff (returns the line id).
Inputs: kind (required), reference_id (required), note. Returns: object
lookup_catalogLookup CatalogARead-onlyIdempotentInspect
Universal Commerce Protocol (UCP) catalogue lookup, version 2026-08-25 (dev.ucp.shopping.catalog.lookup). arguments: meta {'ucp-agent': {profile}} (required) and catalog {ids: product ids (GTIN) or variant ids (:), up to 50; context; filters}. Found rows come back as products with their claim_status; an id outside the priced subset answers an info not_found message.
Inputs: meta, catalog. Returns: object
resolve_actorResolve ActorARead-onlyIdempotentInspect
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.
Inputs: actor_class (required), credential. Returns: object
resolve_jurisdictionResolve JurisdictionARead-onlyIdempotentInspect
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.
Inputs: ship_to (required). Returns: object
search_catalogSearch CatalogARead-onlyIdempotentInspect
Universal Commerce Protocol (UCP) catalogue search, version 2026-08-25 (dev.ucp.shopping.catalog.search). arguments: meta {'ucp-agent': {profile}} (required) and catalog {query, context {address_country}, filters {categories, price {min, max} in minor units}, pagination {limit, cursor}}. Serves the priced subset: rows whose maker's list price is on the record (claimed seats with a listed price), keyed by GTIN, each with its claim_status. Every other row stays on search_cleared_items.
Inputs: meta, catalog. Returns: object
search_cleared_itemsSearch Cleared ItemsARead-onlyIdempotentInspect
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.
Inputs: market (required), lane, limit, query, +4 more. Returns: object
verify_gtinVerify GtinARead-onlyIdempotentInspect
Product record from gtinfetch.ai (signed); hub layer: seat, market, claim, price, availability. 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.
Inputs: gtin (required). Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
Related MCP Connectors
A2A Grocery — the agentic commerce hub for retail grocery, at its original address
OracleNet Deal Discovery Protocol — permissioned commercial matching for MCP/A2A agents.
A2A MCP & CPG Rails: HBPC (Hygiene + Beauty Personal Care) procurement and ESG.
The commercial record your coding agent works from — deterministic pricing with full provenance
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceAn MCP server that automates B2B deal matching: publish supply/demand, AI-driven cruise matching, and agent-based negotiation, with real-time notifications and reputation tracking.MIT
- AlicenseNot gradedqualityBmaintenanceEnables informal market traders and buyers to share live inventory and demand, find compatible matches for surplus or time-sensitive stock, and draft offers or purchase requests for human approval, with payment and pickup handled offline.MIT
- AlicenseNot gradedqualityBmaintenanceEnables autonomous agricultural market arbitrage analysis by combining live mandi prices, weather covariates, routing, spoilage physics, policy retrieval, and statutory warehouse-credit execution through a multi-agent pipeline with human approval.MIT
- AlicenseNot gradedqualityNot gradedmaintenanceEnables AI agents to resolve multi-merchant Universal Commerce Protocol catalogs with Pareto-optimal pricing and SLA routing, while supporting tokenized payment delegation and automated bargaining through MCP tools.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.