A2A Retailmedia — the agentic retail-media hub for grocery
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Connecting grocery retail to 350k makers for media buys.
| Author | io.github.greencore-solutions |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 3386 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"A2A Retailmedia — the agentic retail-media hub for grocery": {
"url": "https://mcp.a2a-retailmedia.ai/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (19)
resolve_jurisdictionread-onlyWhere is the media bought? Resolve a market (e.g. FR, UK, US, Japan) to one of the 20 markets on the record. UK is the label; GB is accepted.
Parameters:
market(required) — string
Hints: read-only yes · destructive no · idempotent yes · open-world no
resolve_actorread-onlyWho is asking? maker, brand_owner, agency, distributor or retailer_media_team (trade); auditor (read only). The consumer is never the counterparty.
Parameters:
actor_class(required) — string
Hints: read-only yes · destructive no · idempotent yes · open-world no
gate_transactionThe gate before a handshake: allow or deny for one market and one actor class. Returns a decision_id the handshake tools ask for. A deny is not charged.
Parameters:
market(required) — stringactor_class(required) — string
Hints: read-only no · destructive no · idempotent no · open-world yes
find_makersread-onlyFind the brand: makers on the grocery record of one market (node = one of the 20 markets). segment is taken as a lane where it names one (organic, free-from, plant-based, artisan, origin, premium). Read live from the A2A Grocery door.
Parameters:
nodelimitregionsegment
Hints: read-only yes · destructive no · idempotent yes · open-world no
resolve_gtinread-onlyProduct record from gtinfetch.ai (signed); hub layer: seat, market, claim, price, availability. Confirm the product is real: is this Global Trade Item Number (GTIN) well-formed, and is it on the grocery record, with its brand and maker. Read live from the A2A Grocery door.
Parameters:
gtin(required) — string
Hints: read-only yes · destructive no · idempotent yes · open-world no
check_eligibilityread-onlyConfirm it is on the shelf: does the grocery record list this GTIN at this banner in this market? No listing, no media pitch. Read live from the A2A Grocery door.
Parameters:
gtin(required) — stringbanner(required) — stringcountry_iso(required) — string
Hints: read-only yes · destructive no · idempotent yes · open-world no
list_bannersread-onlyPick the banners: the grocery banners of one market with each one's media program (or "none listed") and card status. with_program=true returns only banners with a program listed.
Parameters:
market(required) — stringlimit— integeroffset— integersearchwith_program— boolean
Hints: read-only yes · destructive no · idempotent yes · open-world no
get_banner_cardread-onlyThe signed card of one banner and its status (listed · claimed · verified). banner = the banner's slug, id or name.
Parameters:
market(required) — stringbanner(required) — string
Hints: read-only yes · destructive no · idempotent yes · open-world no
list_banner_cardsread-onlyThe cards of one market, optionally by status (unclaimed, claimed, registered): banner, media program, status and the card's address.
Parameters:
market(required) — stringlimit— integeroffset— integerstatus
Hints: read-only yes · destructive no · idempotent yes · open-world no
list_packagesread-onlyMatch a package: what one banner's media program says it sells, in the program's own words, each tagged onsite, offsite or in-store. Offsite is tagged so it is never taken for a shelf slot. Empty where no program is listed — the agent stops.
Parameters:
market(required) — stringbanner(required) — stringdecision_id
Hints: read-only yes · destructive no · idempotent yes · open-world no
quote_packageread-onlyPrice it: returns where the banner's own media program publishes its rates or takes an enquiry. GSC never prices; a quote comes from the retailer's program.
Parameters:
market(required) — stringbanner(required) — stringdecision_id
Hints: read-only yes · destructive no · idempotent yes · open-world no
find_buyerread-onlyQualify the buyer: find a maker on the grocery record by name, with its own website where the record has one.
Parameters:
maker(required) — stringmarketdecision_id
Hints: read-only yes · destructive no · idempotent yes · open-world no
submit_demandHand off: the packet — the maker, a budget a person has approved, one or more GTINs, a market and a list of banners — or a gap naming what is missing. Routes each banner by its card status: unclaimed is a referral, claimed goes to the retailer's media team, registered goes agent to agent. Settles at the door.
Parameters:
maker(required) — stringbudget(required) — numberbudget_approved_by(required) — stringgtins(required) — arraymarket(required) — stringbanners(required) — arraycontact(required) — stringnotedecision_id
Hints: read-only no · destructive no · idempotent no · open-world yes
receive_demandRetailer side: a registered program agent takes a qualified packet. Only a card in the registered state can receive; any other card is refused and nothing is charged.
Parameters:
market(required) — stringbanner(required) — stringhandoff_id(required) — stringdecision_id
Hints: read-only no · destructive no · idempotent no · open-world yes
a2a_handoffread-onlyHand to a person: the state of a handoff and its Navigator desk ticket, where the media program has no agent.
Parameters:
handoff_id(required) — string
Hints: read-only yes · destructive no · idempotent yes · open-world no
pull_measurementread-onlyRead the till: results of a campaign, returned by the retailer's program. Available only after the program returns a campaign id for a handoff.
Parameters:
handoff_id(required) — string
Hints: read-only yes · destructive no · idempotent yes · open-world no
renew_packageRenew: a prior quote id from the retailer's program and a new approved budget. Without a quote id from the program there is nothing to renew.
Parameters:
prior_quote_id(required) — stringbudget(required) — numberbudget_approved_by(required) — stringdecision_id
Hints: read-only no · destructive no · idempotent no · open-world yes
log_auditWrite one audit line for a step of the chain; returns its id.
Parameters:
event(required) — stringdetail
Hints: read-only no · destructive no · idempotent no · open-world yes
enrol_makerMakers: be seen. Enrol a maker for media exposure in grocery: its name, its markets (one or more of the 20), the tick, and a contact a person can answer. Enrolment only — a handoff waits for a budget a person has approved.
Parameters:
maker(required) — stringmarkets(required) — arraymedia_exposure(required) — booleancontact(required) — string
Hints: read-only no · destructive no · idempotent no · open-world yes
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.