A2A Cosmetics

io.github.greencore-solutions由 GitHub 账号 greencore-solutions 发布v1.0.3更新于 Nov 5, 2026

Agent-to-Agent (A2A) hub for cosmetics: skin care, fragrance, sun care, dermocosmetics.

已验证Streamable HTTP可网页运行效率与工作流安全与监控商业与电商

概览

AI 生成的概览

面向化妆品行业的 B2B A2A/MCP 枢纽,让助手查询各市场法规、对交易做准入判定,并检索已放行产品、价格与供应商。

可以做什么
  • 解析目的市场与主体类别,再对交易做准入判定,返回允许或拒绝及原因码与规则集版本
  • 查询法规事实:各市场成分状态、产品类型归类、备案要求、标签与宣称规则、安全标签与执法事件
  • 搜索、读取并对比已放行产品记录,并核验 GTIN
  • 在准入判定通过后查找已核实供应商、库存、价格与产品文件
  • 创建订单意向,通过 A2A 把买方转交给对方或市场代理,并写入审计记录
  • 通过通用商务协议目录接口搜索与查询产品
适用场景
适合需要跨多个司法辖区回答化妆品合规与采购问题的助手,也适合从产品核查到订单意向与转交的受控 B2B 流程。读取类工具开放,因此也可用于成分、标签与召回等纯研究。
运行要求
远程 streamable-HTTP 端点,无需安装。读取类工具无需凭证。六个交易类工具需要来自签发方 a2a-registry.ai 的客户端凭证 Bearer 令牌,需在其 OAuth 注册端点注册获取。订单意向通过 x402 结算付款。
安装前请注意
交易类工具(库存、价格、文件、订单意向、转交)在没有准入判定允许时会被拒绝,因此必须先完成三步判定。订单意向通过 x402 以 Base 上的 USDC 结算,会实际花钱。log_audit 会写入审计记录。产品事实来自第三方解析服务;服务器声明其仅为信息来源而非推荐,且 AI 会出错。

安装

在 SourceWeft 中

  1. 打开 控制台中的 A2A Cosmetics,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/io.github.greencore-solutions%2Fa2a-cosmetics/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "a2a-cosmetics": {
      "type": "http",
      "url": "https://mcp.a2a-cosmetics.ai/mcp"
    }
  }
}

README

A2A Cosmetics — connect kit

Agent-to-Agent (A2A) + Model Context Protocol (MCP) hub for cosmetics.

Business to business: brands, manufacturers, retailers, distributors and their AI agents. Eighteen markets, thirteen rule sets; every answer names the market, the rule set and the version it was judged against. Operated by GreenCore Solutions Corp. Public connect kit, MIT.

Notice: Artificial intelligence makes mistakes. A2A Cosmetics is an information source, not a recommendation. Rules differ by jurisdiction — refer to the regulator in your jurisdiction for the information that applies to you.

The door

streamable-HTTP, stateless, server name `a2a-cosmetics`, door version 1.0.0, 20 tools (read from the wire 2026-09-20) Product facts on this hub are served live from gtinfetch.ai, the GTIN resolver for AI agents; every answer carries its source page, date read and gtinfetch’s signature. Paid resolves at x402.gtinfetch.ai.
  • MCP: https://mcp.a2a-cosmetics.ai/mcp — any client that speaks streamable-HTTP: { "url": "https://mcp.a2a-cosmetics.ai/mcp", "transport": "streamable-http" }
  • A2A 0.3.0 JSON-RPC: https://a2a-cosmetics.ai/a2a (the hub) and https://<cc>.a2a-cosmetics.ai/a2a (one market agent per market, answered from its own Azure region)
  • Agent Card: https://a2a-cosmetics.ai/.well-known/agent-card.json (ES256, kid a2ac-2026-09; keyring /.well-known/jwks.json)
  • Setup: https://a2a-cosmetics.ai/setup · Docs: https://a2a-cosmetics.ai/docs · Claim your record: https://a2a-cosmetics.ai/claim
  • Official MCP Registry: io.github.greencore-solutions/a2a-cosmetics (server.json in this repo)

The gate

Three calls before any price: resolve_jurisdiction → resolve_actor → gate_transaction. Twelve reason codes: ALLOW · REQUIRE_NOTIFICATION · REQUIRE_RESPONSIBLE_PERSON · DENY_NOT_A_COSMETIC_HERE · DENY_INGREDIENT_BANNED · DENY_INGREDIENT_LIMIT · DENY_CLAIM · DENY_MARKET · DENY_ACTOR_CLASS · DENY_UNLICENSED_AGENT · DENY_NO_GTIN · DENY_NOT_VERIFIED.

The twenty tools

  • Gate — resolve_jurisdiction, resolve_actor, gate_transaction
  • Regulatory truth — get_ingredient_record, get_market_status, get_notification_requirements, get_label_and_claims, get_enforcement_watch
  • Catalogue — search_cleared_items, get_item, compare_items
  • Supply — find_verified_supplier, get_availability, get_price
  • Documents — get_product_documents, verify_gtin
  • Commerce — create_order_intent, a2a_handoff
  • Operations — get_safety_label, log_audit

Reads are open. The six transacting tools take a client-credentials Bearer from the issuer, https://a2a-registry.ai (register at /oauth/register; see https://a2a-cosmetics.ai/auth.md).

The agents

RoleHostnameAgentsRegion
Hub (concierge)a2a-cosmetics.ai1South Central US
Registry (token questions)a2a-registry.ai1South Central US
Payments door (receipt questions)a2a-x402.ai1South Central US
Actor-class entry pointspharmacy · prescriber · wholesaler · brand + .a2a-cosmetics.ai4South Central US
Handoff (referral only)handoff.a2a-cosmetics.ai1South Central US
Enforcement watchwatch.a2a-cosmetics.ai1South Central US
Auditor Portaudit.a2a-cosmetics.ai1South Central US

36 agents live, 0 product-line slots reserved on the tenant table; by region: Australia East 1 · Brazil South 1 · Canada Central 1 · Central India 1 · France Central 2 · Germany West Central 1 · Italy North 1 · Japan East 1 · Korea Central 1 · Mexico Central 1 · Poland Central 1 · South Central US 18 · Southeast Asia 1 · Spain Central 1 · Switzerland North 1 · UAE North 1 · UK South 1 · West Europe 1. Counted from the hub's list_agents on 2026-09-20; door version 1.0.0, 20 tools.

Examples

Stock clients, no adapter: examples/aws_strands.py · examples/azure_semantic_kernel.py · examples/google_genai.py · examples/generic_mcp_client.py; A2A: examples/a2a_aws_strands.py · examples/a2a_azure_agent_framework.py · examples/a2a_google_sdk.py.

Pay on it

x402 is live on https://a2a-x402.ai (USDC on Base, settlement after the gate; a refused order intent is not settled and not charged). The Machine Payments Protocol, the Universal Commerce Protocol and the Agentic Commerce Protocol are built and dark until they can settle; the Agent Payments Protocol sits on the Agent Card. Front door: https://a2a-pay.ai.

Contact

[email protected] — the registry contact for every listing this hub files.

来源:README.md,提交 2821433

工具

24

resolve_jurisdiction

Resolve Jurisdiction

Where is this going? Resolve a ship-to (e.g. 'US', 'US-CA', 'UK', 'FR', 'EU-DE', 'JP') to one of the 18 markets and its rule set (13 rule sets; the six EU markets share one). UK is the label; machine fields carry the ISO code GB.

输入参数ship_to必填

resolve_actor

Resolve Actor

Who is asking? Brand, manufacturer, retailer or distributor (business to business); 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.

输入参数credentialactor_class必填

gate_transaction

Gate Transaction

Allow or deny, with the reason and the rule. Takes a product (GTIN or catalogue id; optional), the ship-to market, the actor class and, when no record exists yet, the product type, ingredients (INCI) and claims. Returns one of twelve reason codes (ALLOW · REQUIRE_NOTIFICATION · REQUIRE_RESPONSIBLE_PERSON · DENY_NOT_A_COSMETIC_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.

输入参数claimschannelproductship_to必填credentialactor_class必填ingredientsproduct_type

get_ingredient_record

Get Ingredient Record

One ingredient, and its status in every market: the standard ingredient name (INCI), aliases, and per rule set whether it is prohibited, restricted (with the limit or condition) or listed, each with the official list and its source page.

输入参数ingredient必填

get_market_status

Get Market Status

Is this product type a cosmetic here? Product type by market: cosmetic, drug, special class (functional cosmetic, quasi-drug, grade 2, therapeutic good) or not permitted — with the rule-set version and the regulator's page.

输入参数market必填product_type必填

get_notification_requirements

Get Notification Requirements

What must be filed before sale in a market: the notification scheme, the responsible-person requirement and, for a product type in a special class, the extra step (review, registration, listing) — each with its source page.

输入参数market必填product_type

get_label_and_claims

Get Label And Claims

What the label must say, and which claims are allowed: the label requirements of the market and the claims rules of record (patterns that take a product out of the cosmetic class), each with its source page. Optional claims are checked against the rules.

输入参数claimsmarket必填

get_enforcement_watch

Get Enforcement Watch

Recalls, bans and safety alerts, dated: enforcement events by market, ingredient, brand or since a date, each with its source page.

输入参数querysincemarket

search_cleared_items

Search Cleared Items

Find products cleared for this market: validated product records in a market (query by product name, brand, product type or lane; optional lane filter: suncare · fragrance · dermocosmetics · peptides · korean · sustainable). Only validated rows are served; each item carries its claim status and market status.

输入参数lanelimitquerymarket必填decision_idproduct_type

get_item

Get Item

Product record from gtinfetch.ai (signed); hub layer: seat, market, claim, price, availability. One product by GTIN, fully resolved: taxonomy path, variant or form, brand, market, claim status, market status, availability; after the gate also ingredients, claims, attributes, shades (parent and child) and offers.

输入参数gtin必填marketdecision_id

compare_items

Compare Items

Compare products, variants and shades side by side (two to eight GTINs or catalogue ids).

输入参数gtins必填marketdecision_id

find_verified_supplier

Find Verified Supplier

Verified makers and brands for this product or product type in a market: supplier records (brand · manufacturer) with their claim status — verified first, then claimed, then listed. Takes the decision_id of an allow decision.

输入参数gtinlimitquerymarket必填decision_id必填

get_availability

Get Availability

In stock, and where: the availability block of a product (banners on the shelf of record, product URLs read live at load, store counts where the retailer record carries one) once gate_transaction has answered allow (decision_id).

输入参数gtin必填marketdecision_id必填

get_price

Get Price

The price for this buyer: the price basis (list · contract) from the supplier's offers on the record, once gate_transaction has answered allow (decision_id). Tiers buy services, never rank.

输入参数gtin必填marketdecision_id必填

get_product_documents

Get Product Documents

Safety report, certificate of analysis, data sheet: the documents on a product record (product information file pointer, safety assessment, certificate of analysis, safety data sheet), each a URL with its read date; decision_id required.

输入参数gtin必填marketdecision_id必填

verify_gtin

Verify Gtin

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 and claim status.

输入参数gtin必填

create_order_intent

Create Order Intent

Open an order between two agents: an order intent for a cleared product after the gate; the intent carries reason_code + rule_set_version and settles by x402 on a2a-x402.ai.

输入参数gtin必填marketship_toquantity必填decision_id必填

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 (the regulator's home page beside it) — a referral, never a sale to a consumer.

输入参数intent_iddecision_idcounterparty_card_url

claim_seat

Claim Seat

A brand's agent claims its seat on A2A Cosmetics. 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 (beauty and personal care proceed; a grocery record is referred to a2a-grocery.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.

输入参数rowsgtinscard_url必填seat_keychallenge_id

search_catalog

Search Catalog

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.

输入参数metacatalog

lookup_catalog

Lookup Catalog

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 (<market>:<gtin14>), 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.

输入参数metacatalog

get_product

Get Product

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 <market>:<gtin14>; 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.

输入参数metacatalog

get_safety_label

Get Safety Label

Warnings and age limits: the warning statements the market requires for a product type (sunscreen, hair dye, aerosols, children's products) and the safety-alert scheme of the regulator, each with its source page.

输入参数market必填product_type

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

输入参数kind必填notereference_id必填

版本历史

4
  1. v1.0.3最新Nov 5, 2026
  2. v1.0.2Nov 4, 2026
  3. v1.0.1Sep 21, 2026
  4. v1.0.0Sep 21, 2026

评分

已满足适用检查项的 100%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分