# Seller identity declared

> Seller identity declared: On a marketplace an offer is meaningless without knowing who is selling and who is the merchant of record.

- Source: /checks/seller-identity
- Site: AgenticWebScore
- Language: English

---
On a marketplace an offer is meaningless without knowing who is selling and who is the merchant of record, because that is who the agent has a contract with.

| Property | Value |
| --- | --- |
| Check id | `seller-identity` |
| Dimension | Commerce Protocols (15%) |
| Tier | Recommended — pool 20 pts |
| Weight inside tier | 2 |
| Impact | Medium |
| Maturity | Adopted — A ratified standard with real deployment. |
| Conditional | No |
| Publishing skill | `seller-identity` |
| Standards | schema.org/Organization |

## What the scanner requests

- `/about`
- `/terms`

It also reads documents it has already fetched: `$home`.

## What is measured

Profile-scoped: reported as not scored and excluded from the denominator unless the e-commerce or marketplace profile has been positively identified, and this check never creates that identification itself. In scope, the scanner resolves the `seller` of every Offer in the JSON-LD it holds and requires an Organization carrying both a `name` and a `url`, then reads the homepage and the about and terms pages for a merchant-of-record statement naming the legal entity; a named seller plus a merchant of record is a pass, a named seller alone is a partial (0.7), and neither is a fail.

## Reproduce it yourself

You do not have to take our word for any of this. Run the same measurement against your own domain:

```bash
DOMAIN=shop.example.com
curl -sL "https://$DOMAIN/" | perl -0777 -ne 'while (m{<script[^>]*application/ld\+json[^>]*>(.*?)</script>}gsi) { print "$1\n" }' | jq -r '.. | objects | select((."@type"? | if type == "array" then .[] else . end) == "Offer") | [(.seller."@type" // "NO seller"), (.seller.name // "NO seller.name"), (.seller.url // "NO seller.url")] | @tsv'
```

## The fix

This is the artifact to ship. It is the complete change, not a description of one.

```json
{
  "@context": "https://schema.org",
  "@type": "Offer",
  "url": "https://shop.example.com/products/aurora-desk-lamp",
  "price": "1299.00",
  "priceCurrency": "USD",
  "availability": "https://schema.org/InStock",
  "seller": {
    "@type": "Organization",
    "name": "Aurora Lighting ApS",
    "url": "https://shop.example.com/about",
    "legalName": "Aurora Lighting ApS",
    "vatID": "DK12345678"
  }
}
```

> seller is declared per Offer and not per page, so on a marketplace every Offer must name its own seller, and legalName plus vatID are what disambiguate the merchant of record when the trading name differs from the invoicing entity.

## Standards referenced

- `schema.org/Organization`

## Related checks

| Check | Tier | Impact | Same skill |
| --- | --- | --- | --- |
| `product-schema` — Product/catalog schema | Essential | Critical | — |
| `payment-protocols` — Agent payment standard support (AP2/ACP/x402/UCP) | Recommended | High | — |
| `agent-purchase` — Agent purchase policy | Recommended | High | — |
| `ucp-manifest` — UCP manifest (/.well-known/ucp) | Emerging | Medium | — |
| `returns` — Return and shipping terms machine-readable | Recommended | Medium | — |
| `agent-analytics` — Agent traffic measurement | Emerging | Low | — |
| `inventory-freshness` — Inventory and price freshness | Recommended | High | — |
| `shipping-costs` — Shipping cost and delivery declared | Recommended | High | — |
