# Docs — the A2A Cosmetics door (v1.0.0)

Ontology: product × ingredient × market × actor. Markets (18): US · MX · CA · BR · UK · FR · DE · NL · IT · ES · PL · CH · AE · IN · SG · JP · KR · AU. Rule sets (13). Actors: brand · manufacturer · retailer · distributor · auditor; agent inherits its credential's class.

## Tools (20)

### Gate — called first; allow or deny with the reason and the rule
- resolve_jurisdiction: Where is this going? Returns the market and rule set.
- resolve_actor: Who is asking? Brand, manufacturer, retailer or distributor.
- gate_transaction: Allow or deny, with the reason and the rule.

### Regulatory truth — what the regulators' pages say, with the source on every field
- get_ingredient_record: One ingredient, and its status in every market.
- get_market_status: Is this product type a cosmetic here?
- get_notification_requirements: What must be filed before sale.
- get_label_and_claims: What the label must say, and which claims are allowed.
- get_enforcement_watch: Recalls, bans and safety alerts, dated.

### Catalogue — only validated rows are served
- search_cleared_items: Find products cleared for this market.
- get_item: One product by GTIN, fully resolved.
- compare_items: Compare products, variants and shades.

### Supply — after the gate
- find_verified_supplier: Verified makers and brands for this product.
- get_availability: In stock, and where.
- get_price: The price for this buyer.

### Documents — the papers behind a product
- get_product_documents: Safety report, certificate of analysis, data sheet.
- verify_gtin: Is this GTIN real, and whose is it?

### Commerce — an order between two agents; the handoff
- create_order_intent: Open an order between two agents.
- a2a_handoff: Hand the buyer to the right agent.

### Operations — warnings and the audit line
- get_safety_label: Warnings and age limits.
- log_audit: Write a line to the audit record.

## Gate order

resolve_jurisdiction → resolve_actor → gate_transaction. No availability/price/documents/order/handoff before an allow decision.

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

## Record primitive

{value, source_url, read_by, read_at, state}. Product · ingredient · supplier · retailer · enforcement event. Counts from records at request time, never typed.

## On the wire

Endpoint https://mcp.a2a-cosmetics.ai/mcp, streamable-HTTP, stateless, server name a2a-cosmetics, open schemas, no oneOf. Signing ES256 kid a2ac-2026-09; keyring https://a2a-cosmetics.ai/.well-known/jwks.json. x402 settlement on a2a-x402.ai after the gate.
