A2A Retailmedia — the agentic retail-media hub for grocery

Connecting grocery retail to 350k makers for media buys.

使うべきか

品質と安全性

A
説明の品質
96%
スキーマの完全性
75%
命名の品質
91%
ポイズニングのリスク
100%
権限の一致
100%
プロトコルへの準拠
100%

検出事項(2)

  • LOWTool 'get_banner_card' description lacks action verbget_banner_card 内
  • LOWTool 'a2a_handoff' description lacks action verba2a_handoff 内

ツール定義とプロトコルへの準拠に関する自動分析に基づいています。

コンテキストコスト

~2,705トークン数(ツール定義)
~800 B一般的なレスポンスサイズ
注意への影響は大きい(128k コンテキストの 2.11%)

これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。

インストール

ワンクリックインストール

これを `claude_desktop_config.json` ファイルに追加してください:

{
  "mcpServers": {
    "a2a-retailmedia": {
      "url": "https://mcp.a2a-retailmedia.ai/mcp"
    }
  }
}

リモートエンドポイント

https://mcp.a2a-retailmedia.ai/mcpstreamable-http

できること

ツール一覧

ツール(19)

🟢 読み取り専用🟡 書き込み🔴 削除⚪ 不明
🟢resolve_jurisdiction(market)

Where 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.

入力スキーマ

{
  "type": "object",
  "properties": {
    "market": {
      "type": "string"
    }
  },
  "required": [
    "market"
  ],
  "additionalProperties": false
}

出力スキーマ

{
  "type": "object",
  "additionalProperties": true
}
🟢resolve_actor(actor_class)

Who is asking? maker, brand_owner, agency, distributor or retailer_media_team (trade); auditor (read only). The consumer is never the counterparty.

入力スキーマ

{
  "type": "object",
  "properties": {
    "actor_class": {
      "type": "string"
    }
  },
  "required": [
    "actor_class"
  ],
  "additionalProperties": false
}

出力スキーマ

{
  "type": "object",
  "additionalProperties": true
}
⚪gate_transaction(market, actor_class)

The 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.

入力スキーマ

{
  "type": "object",
  "properties": {
    "market": {
      "type": "string"
    },
    "actor_class": {
      "type": "string"
    }
  },
  "required": [
    "market",
    "actor_class"
  ],
  "additionalProperties": false
}

出力スキーマ

{
  "type": "object",
  "additionalProperties": true
}
🟢find_makers(segment, region, node, limit)

Find 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.

入力スキーマ

{
  "type": "object",
  "properties": {
    "segment": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "region": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "node": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "limit": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "additionalProperties": false
}

出力スキーマ

{
  "type": "object",
  "additionalProperties": true
}
🟢resolve_gtin(gtin)

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.

入力スキーマ

{
  "type": "object",
  "properties": {
    "gtin": {
      "type": "string"
    }
  },
  "required": [
    "gtin"
  ],
  "additionalProperties": false
}

出力スキーマ

{
  "type": "object",
  "additionalProperties": true
}
🟢check_eligibility(gtin, banner, country_iso)

Confirm 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.

入力スキーマ

{
  "type": "object",
  "properties": {
    "gtin": {
      "type": "string"
    },
    "banner": {
      "type": "string"
    },
    "country_iso": {
      "type": "string"
    }
  },
  "required": [
    "gtin",
    "banner",
    "country_iso"
  ],
  "additionalProperties": false
}

出力スキーマ

{
  "type": "object",
  "additionalProperties": true
}
🟢list_banners(market, with_program, search, limit, offset)

Pick 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.

入力スキーマ

{
  "type": "object",
  "properties": {
    "market": {
      "type": "string"
    },
    "with_program": {
      "default": false,
      "type": "boolean"
    },
    "search": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "limit": {
      "default": 100,
      "type": "integer"
    },
    "offset": {
      "default": 0,
      "type": "integer"
    }
  },
  "required": [
    "market"
  ],
  "additionalProperties": false
}

出力スキーマ

{
  "type": "object",
  "additionalProperties": true
}
🟢get_banner_card(market, banner)

The signed card of one banner and its status (unclaimed, claimed or registered). banner = the banner's slug, id or name.

入力スキーマ

{
  "type": "object",
  "properties": {
    "market": {
      "type": "string"
    },
    "banner": {
      "type": "string"
    }
  },
  "required": [
    "market",
    "banner"
  ],
  "additionalProperties": false
}

出力スキーマ

{
  "type": "object",
  "additionalProperties": true
}
🟢list_banner_cards(market, status, limit, offset)

The cards of one market, optionally by status (unclaimed, claimed, registered): banner, media program, status and the card's address.

入力スキーマ

{
  "type": "object",
  "properties": {
    "market": {
      "type": "string"
    },
    "status": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "limit": {
      "default": 200,
      "type": "integer"
    },
    "offset": {
      "default": 0,
      "type": "integer"
    }
  },
  "required": [
    "market"
  ],
  "additionalProperties": false
}

出力スキーマ

{
  "type": "object",
  "additionalProperties": true
}
🟢list_packages(market, banner, decision_id)

Match 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.

入力スキーマ

{
  "type": "object",
  "properties": {
    "market": {
      "type": "string"
    },
    "banner": {
      "type": "string"
    },
    "decision_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "required": [
    "market",
    "banner"
  ],
  "additionalProperties": false
}

出力スキーマ

{
  "type": "object",
  "additionalProperties": true
}
🟢quote_package(market, banner, decision_id)

Price 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.

入力スキーマ

{
  "type": "object",
  "properties": {
    "market": {
      "type": "string"
    },
    "banner": {
      "type": "string"
    },
    "decision_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "required": [
    "market",
    "banner"
  ],
  "additionalProperties": false
}

出力スキーマ

{
  "type": "object",
  "additionalProperties": true
}
🟢find_buyer(maker, market, decision_id)

Qualify the buyer: find a maker on the grocery record by name, with its own website where the record has one.

入力スキーマ

{
  "type": "object",
  "properties": {
    "maker": {
      "type": "string"
    },
    "market": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "decision_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "required": [
    "maker"
  ],
  "additionalProperties": false
}

出力スキーマ

{
  "type": "object",
  "additionalProperties": true
}
🟡submit_demand(maker, budget, budget_approved_by, gtins, market, ...)

Hand 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.

入力スキーマ

{
  "type": "object",
  "properties": {
    "maker": {
      "type": "string"
    },
    "budget": {
      "type": "number"
    },
    "budget_approved_by": {
      "type": "string"
    },
    "gtins": {
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "market": {
      "type": "string"
    },
    "banners": {
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "contact": {
      "type": "string"
    },
    "decision_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "note": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "required": [
    "maker",
    "budget",
    "budget_approved_by",
    "gtins",
    "market",
    "banners",
    "contact"
  ],
  "additionalProperties": false
}

出力スキーマ

{
  "type": "object",
  "additionalProperties": true
}
⚪receive_demand(market, banner, handoff_id, decision_id)

Retailer 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.

入力スキーマ

{
  "type": "object",
  "properties": {
    "market": {
      "type": "string"
    },
    "banner": {
      "type": "string"
    },
    "handoff_id": {
      "type": "string"
    },
    "decision_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "required": [
    "market",
    "banner",
    "handoff_id"
  ],
  "additionalProperties": false
}

出力スキーマ

{
  "type": "object",
  "additionalProperties": true
}
🟢a2a_handoff(handoff_id)

Hand to a person: the state of a handoff and its Navigator desk ticket, where the media program has no agent.

入力スキーマ

{
  "type": "object",
  "properties": {
    "handoff_id": {
      "type": "string"
    }
  },
  "required": [
    "handoff_id"
  ],
  "additionalProperties": false
}

出力スキーマ

{
  "type": "object",
  "additionalProperties": true
}
🟢pull_measurement(handoff_id)

Read the till: results of a campaign, returned by the retailer's program. Available only after the program returns a campaign id for a handoff.

入力スキーマ

{
  "type": "object",
  "properties": {
    "handoff_id": {
      "type": "string"
    }
  },
  "required": [
    "handoff_id"
  ],
  "additionalProperties": false
}

出力スキーマ

{
  "type": "object",
  "additionalProperties": true
}
⚪renew_package(prior_quote_id, budget, budget_approved_by, decision_id)

Renew: 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.

入力スキーマ

{
  "type": "object",
  "properties": {
    "prior_quote_id": {
      "type": "string"
    },
    "budget": {
      "type": "number"
    },
    "budget_approved_by": {
      "type": "string"
    },
    "decision_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "required": [
    "prior_quote_id",
    "budget",
    "budget_approved_by"
  ],
  "additionalProperties": false
}

出力スキーマ

{
  "type": "object",
  "additionalProperties": true
}
🟡log_audit(event, detail)

Write one audit line for a step of the chain; returns its id.

入力スキーマ

{
  "type": "object",
  "properties": {
    "event": {
      "type": "string"
    },
    "detail": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "required": [
    "event"
  ],
  "additionalProperties": false
}

出力スキーマ

{
  "type": "object",
  "additionalProperties": true
}
⚪enrol_maker(maker, markets, media_exposure, contact)

Makers: 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.

入力スキーマ

{
  "type": "object",
  "properties": {
    "maker": {
      "type": "string"
    },
    "markets": {
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "media_exposure": {
      "type": "boolean"
    },
    "contact": {
      "type": "string"
    }
  },
  "required": [
    "maker",
    "markets",
    "media_exposure",
    "contact"
  ],
  "additionalProperties": false
}

出力スキーマ

{
  "type": "object",
  "additionalProperties": true
}

コミュニティ

このサーバーを評価する

エビデンス

最近の観測

検証済みバージョンは記録されていませんツール 19 件