protogrid

Search / io.github.greencore-solutions/a2a-grocery

A2A Grocery — the agentic hub for retail grocery procurement

R0· no sign-in

A2A + MCP hub for retail grocery procurement — 20 markets on the SCHEMA algo record. Trade only.

v1.0.3 · active · repository · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality96strong
Trust97of 100
Uptime, 30 days100%
Latency p50483 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "a2a-grocery": {
      "type": "http",
      "url": "https://mcp.a2a-grocery.ai/mcp"
    }
  }
}
claude mcp add --transport http a2a-grocery https://mcp.a2a-grocery.ai/mcp
[mcp_servers.a2a-grocery]
url = "https://mcp.a2a-grocery.ai/mcp"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "a2a-grocery": {
      "type": "remote",
      "url": "https://mcp.a2a-grocery.ai/mcp",
      "enabled": true
    }
  }
}
{
  "mcpServers": {
    "a2a-grocery": {
      "type": "http",
      "url": "https://mcp.a2a-grocery.ai/mcp"
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=a2a-grocery&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vbWNwLmEyYS1ncm9jZXJ5LmFpL21jcCJ9"
}
{
  "servers": {
    "a2a-grocery": {
      "type": "http",
      "url": "https://mcp.a2a-grocery.ai/mcp"
    }
  }
}
{
  "mcpServers": {
    "a2a-grocery": {
      "httpUrl": "https://mcp.a2a-grocery.ai/mcp"
    }
  }
}
extensions:
  "a2a-grocery":
    enabled: true
    name: "a2a-grocery"
    type: streamable_http
    uri: "https://mcp.a2a-grocery.ai/mcp"
    timeout: 300

Quality 96 / 100strong

protocol88 · weight 25
  • pass
    protocol.modernsupports 2026-07-28 (server/discover)
  • pass
    protocol.statelessanswers without a session
  • pass
    protocol.transportstreamable HTTP
  • warn
    protocol.list_ttltools/list declares ttlMs 0, so clients re-fetch it on every use
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene100 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations19 of 19 tools declare readOnlyHint or destructiveHint
  • pass
    tools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
  • pass
    tools.token_costabout 2,988 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability100 · weight 15
  • pass
    stability.changes2 tool changes in 30 days
  • pass
    stability.rug_pullno tool changed its meaning under the same name
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

19 tools, about 2,988 tokens to load them all · tool set d9c84f81c917 · tools last changed 2026-10-16 · checked 2026-10-20 12:45 UTC

Tool changes

  • verify_gtinchangeddescription
    before

    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.

    after · 72% of words in common

    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.

  • get_itemchangeddescription
    before

    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.

    after · 78% of words in common

    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.

Full history: list_changes · trend: quality JSON.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 97 / 100

provenance90
liveness100
freshness100
hygiene100

+repository +namespace-matches-repo +website +reachable +uptime-100% +updated-17d-ago

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://mcp.a2a-grocery.ai/mcp streamable-httpnoneyes100%483 ms2026-07-282026-10-20

Tools (19)

a2a_handoffHand 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.
compare_itemsread-onlyCompare items, variants and pack sizes side by side (two to eight GTINs or catalogue ids).
create_order_intentOpen 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.
find_verified_buyerread-onlyRetail 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.
find_verified_supplierread-onlyVerified 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.
gate_transactionread-onlyAllow 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.
get_availabilityread-onlyIn 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).
get_enforcement_watchread-onlyRecalls, withdrawals and food-safety alerts, dated: enforcement events by market, category, brand or since a date, each with its source page.
get_itemread-onlyProduct 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.
get_label_and_claimsread-onlyWhat 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.
get_market_statusread-onlyIs 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.
get_notification_requirementsread-onlyWhat 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.
get_priceread-onlyThe 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.
get_product_documentsread-onlyCertificates 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.
log_auditWrite a line to the audit record for a gate decision, an order intent or a handoff (returns the line id).
resolve_actorread-onlyWho 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.
resolve_jurisdictionread-onlyWhere 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.
search_cleared_itemsread-onlyFind 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.
verify_gtinread-onlyProduct 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.

Schemas: list_tools.

Also listed as

1 other active names share this repository: io.github.greencore-solutions/cpg-knowledge-graph

Similar MCP servers

More from io.github.greencore-solutions

And 3 more from this publisher.

Official server.json
{
  "name": "io.github.greencore-solutions/a2a-grocery",
  "_meta": {
    "io.modelcontextprotocol.registry/publisher-provided": {
      "setup": "https://a2a-grocery.ai/setup",
      "terms": "https://a2a-grocery.ai/terms",
      "title": "A2A Grocery — the agentic hub for retail grocery procurement",
      "tools": 19,
      "health": "https://mcp.a2a-grocery.ai/health.json",
      "notice": "Artificial intelligence makes mistakes. A2A Grocery is an agentic information source, not a recommendation. No ads, ever. No rank for sale. Trade only.",
      "schema": "https://a2a-grocery.ai/schema-algo.json",
      "contact": "[email protected]",
      "privacy": "https://a2a-grocery.ai/privacy",
      "support": "https://a2a-grocery.ai/support",
      "line_two": "Powered by SCHEMA algo for grocery agentic commerce",
      "security": "https://a2a-grocery.ai/security",
      "standard": "https://a2a-schema.org/",
      "publisher": "GreenCore Solutions Corp.",
      "transport": "streamable-http",
      "agent_card": "https://a2a-grocery.ai/.well-known/agent-card.json",
      "description": "Agent-to-Agent (A2A) + Model Context Protocol (MCP) hub for retail grocery. Business to business: makers, brand owners, private label, distributors, importers, retailers and their AI agents. Twenty markets on the SCHEMA algo grocery record; ambient, chilled, frozen and fresh; organic, free-from, plant-based, artisan, origin and premium lanes. Call resolve_jurisdiction, then resolve_actor, then gate_transaction before any availability, price, documents, order or handoff tool; those tools refuse without an allow decision. Every record field carries its source page; every response carries notice; every record carries claim_status (listed · claimed · verified). Artificial intelligence makes mistakes. A2A Grocery is an agentic information source, not a recommendation. No ads, ever. No rank for sale. Trade only.",
      "documentation": "https://a2a-grocery.ai/docs",
      "publisher_url": "https://a2a-grocery.ai/legal"
    }
  },
  "icons": [
    {
      "src": "https://a2a-grocery.ai/icon.svg",
      "sizes": [
        "any"
      ],
      "theme": "light",
      "mimeType": "image/svg+xml"
    },
    {
      "src": "https://a2a-grocery.ai/icon-512.png",
      "sizes": [
        "512x512"
      ],
      "theme": "light",
      "mimeType": "image/png"
    },
    {
      "src": "https://a2a-grocery.ai/icon-512-dark.png",
      "sizes": [
        "512x512"
      ],
      "theme": "dark",
      "mimeType": "image/png"
    }
  ],
  "title": "A2A Grocery — the agentic hub for retail grocery procurement",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://mcp.a2a-grocery.ai/mcp",
      "type": "streamable-http"
    }
  ],
  "version": "1.0.3",
  "repository": {
    "url": "https://github.com/greencore-solutions/a2a-grocery",
    "source": "github"
  },
  "websiteUrl": "https://a2a-grocery.ai",
  "description": "A2A + MCP hub for retail grocery procurement — 20 markets on the SCHEMA algo record. Trade only."
}