> ## Documentation Index
> Fetch the complete documentation index at: https://docs.closient.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Anthropic Connectors Directory — Reviewer Guide

> Step-by-step walkthrough for Anthropic reviewers vetting the Closient MCP server submission.

<Note>
  This page is written for Anthropic's Connectors Directory review
  team. It assumes you have a Claude account and \~30 minutes. The
  reviewer credentials and the OAuth client\_id referenced below are
  shared with you privately in the submission form — not on this
  page.
</Note>

## 1. What Closient is (90 seconds of context)

Closient is a GS1 Digital Link resolver and product catalog. Brands
register GTINs (the numbers behind every barcode), attach catalog
data, and Closient turns any 2D barcode scan or HTTPS resolution
request into a structured product response — name, brand, batch,
lot, expiry, recall status, nearest stores carrying it.

The Closient MCP server exposes that catalog and resolver to any
MCP-compatible agent. The intended user is anyone whose work
intersects the physical-goods supply chain: brand operators
generating QR codes, retail-tech engineers building scanner apps,
compliance analysts checking recall lists, and AI agents answering
"is this barcode legitimate / what is this product / where can I
buy it" questions.

The MCP server is hosted by Closient — there is nothing to install
locally.

## 2. Add the connector in Claude

You can validate the connector from any first-class Claude surface.
We recommend [claude.ai](https://claude.ai) because it exercises the
full OAuth round-trip via the web flow.

1. Open [claude.ai](https://claude.ai) → **Settings → Connectors →
   Custom Connectors**.

2. Click **Add custom connector**.

3. Paste the production MCP URL:

   ```
   https://www.closient.com/mcp/http
   ```

4. Click **Connect**. Claude registers a client via RFC 7591 Dynamic
   Client Registration. No manual client\_id/secret entry is needed.

The connector should appear with the full tool list — read tools plus
OAuth-gated write tools (QR generation and the C-4038 brand-owner
product-entry tools; see [MCP Tools Reference](/guides/mcp-tools) for
the complete set). Discovery (`tools/list`) is unauthenticated, so this
step succeeds without signing in. You will be prompted to sign in only
when you exercise an authenticated tool such as `generate_qr_url` in
[Section 5](#5-generate-qr-url-authenticated). This walkthrough covers
the original eight read/QR tools reviewed at submission time; the
product write tools added in C-4038 are documented separately and not
yet folded into this numbered script.

If the connector fails to register, see
[Troubleshooting](#troubleshooting) at the bottom of this page.

## 3. Reviewer credentials

The submission form contains the following privately:

* **Closient account email** — the seeded reviewer mailbox
* **Closient account password**
* **Email-confirmation status** — already confirmed; no inbox round-trip needed
* **OAuth fallback client\_id and client\_secret** — only needed if
  Dynamic Client Registration is disabled in your reviewer harness

You do not need to share or rotate these credentials — the account
is exclusively for Anthropic review and is reset between submission
cycles. The account has staff flags that disable marketing emails
and exempt it from the standard rate limits, so a 30-minute review
window comfortably exercises every tool.

## 4. Sample prompts — exercise each tool

Run these in order from a single Claude chat with the Closient
connector enabled. Approximate runtime: 15 minutes including OAuth.

The seeded sample product for this account is GTIN
`00614141123452` (a real GS1 test code, owned by the GS1 US prefix
range used for samples). Resolver rules, lot/expiry metadata, and
a pre-generated QR code are seeded against this GTIN.

### 4.1 `validate_gtin` — structural check

Prompt:

> Use the Closient MCP server to validate GTIN `00614141123452`.

Expected behaviour: Claude calls `validate_gtin`. The response
reports the GTIN is valid, normalized to its 14-digit form, and the
check digit verifies.

```json theme={null}
{
  "valid": true,
  "normalized": "00614141123452",
  "length": 14
}
```

Negative case:

> Validate `00000000000001`.

Expected: `valid: false` with a check-digit-mismatch reason.

### 4.2 `resolve_gtin` — apply resolver rules

Prompt:

> Resolve GTIN `00614141123452` using Closient. Tell me what page a
> scanner would land on and which rule scope matched.

Expected behaviour: Claude calls `resolve_gtin`. The response
contains a `destination_url`, the matched `scope` (one of `PRODUCT`,
`BRAND`, `ORGANIZATION`, `GLOBAL`), and `fallback_applied: false`.
The seeded resolver rule on this GTIN points at a sample product
page on `www.closient.com`.

### 4.3 `lookup_product` — structured catalog row

Prompt:

> Look up product details for `00614141123452` and summarize the
> brand, description, and any developer metadata.

Expected behaviour: Claude calls `lookup_product` and surfaces the
seeded record — sample brand name, three-sentence description,
ingredient list (this seed is a food-category product), and a
`developer_metadata` block with a `lot` and `expiry` set.

### 4.4 `search_products` — natural-language search

Prompt:

> Search Closient for "organic oat milk" and show me the top three
> products with brand and GTIN.

Expected behaviour: Claude calls `search_products`. The seeded
catalog contains at least one match (the sample is a food-category
product). Top results are returned with brand, GTIN, and a short
description. The reviewer account is exempt from per-IP search rate
limits, so repeated queries during the review window do not 429.

Optional geo boost:

> Same query, near `40.7128, -74.0060` within 25 km.

Closient adds proximity boosting against seeded store-location data
within a 50 km radius.

### 4.5 `get_product_detail` — rich record

Prompt:

> Get the full product detail for `00614141123452` — include
> attributes, images, ingredients, and nutrition.

Expected behaviour: Claude calls `get_product_detail` and returns
the full structured record. The seed includes one product image
(hosted on `media.closient.com`), an ingredient list, and a basic
nutrition panel.

### 4.6 `compare_products` — side-by-side

The seeded account contains two additional products related to the
primary sample (different sizes / variants). GTINs are listed on
the seeded product's detail page.

Prompt (substitute the second GTIN from the previous step's
response):

> Compare `00614141123452` to `<related GTIN>` — list the
> differences in nutrition, size, and price.

Expected behaviour: Claude calls `compare_products` and produces a
two-column comparison. Field-level differences are flagged.

### 4.7 `check_availability` — nearby stores

Prompt:

> Are there any stores within 25 km of `40.7128, -74.0060` that
> carry `00614141123452`?

Expected behaviour: Claude calls `check_availability`. The seed
includes two sample store locations within 25 km of New York for
this GTIN. The response lists store name, address, and approximate
distance.

### 4.8 `generate_qr_url` — authenticated

This is the one tool that requires OAuth. It is also the
differentiator vs. generic GS1 lookups, so please do exercise it.

Prompt:

> Use Closient to generate a canonical GS1 Digital Link URL for
> GTIN `00614141123452` with lot `LOT-2026-05` and expiry
> `2027-12-31`.

Expected behaviour:

1. Claude calls `generate_qr_url` without a token.
2. Closient returns `403 Forbidden` with a `WWW-Authenticate` header
   pointing at the Closient OAuth authorization server.
3. Claude shows you an OAuth consent screen at
   `https://www.closient.com/o/authorize/`. The reviewer account
   is already signed in from the connector setup; you only need to
   click **Approve** for the `qr:generate` scope.
4. Claude retries the call and reports the canonical Digital Link
   URL — something like:

   ```
   https://id.closient.com/01/00614141123452/10/LOT-2026-05/?17=271231
   ```

The URL is conformant with the
[GS1 Digital Link 1.4.1 grammar](https://ref.gs1.org/standards/digital-link/) —
plug it into any GS1-conformant resolver (including Closient's own
public resolver) and you'll be redirected to the same destination
that `resolve_gtin` returned in step 4.2.

A pre-generated QR code for this exact URL is attached to the
seeded product record so you can verify the output round-trips
through a barcode scanner if you have one handy.

## 5. Expected results summary

| Step | Tool                 | Expected outcome                          |
| ---- | -------------------- | ----------------------------------------- |
| 4.1  | `validate_gtin`      | `valid: true`, normalized 14-digit GTIN   |
| 4.2  | `resolve_gtin`       | `destination_url` set, `scope` populated  |
| 4.3  | `lookup_product`     | Seeded brand, description, lot, expiry    |
| 4.4  | `search_products`    | At least one organic-food result          |
| 4.5  | `get_product_detail` | Image, ingredients, nutrition panel       |
| 4.6  | `compare_products`   | Two-column diff with field-level flags    |
| 4.7  | `check_availability` | Two NYC-area sample stores                |
| 4.8  | `generate_qr_url`    | GS1 Digital Link URL after OAuth approval |

All eight prompts should complete successfully in under 15 minutes
of wall-clock time, including the OAuth round-trip.

## 6. Known limitations

These are intentional and out of scope for this submission:

* **`generate_qr_url` requires a paid Closient plan in production.**
  The reviewer account is a staff-flagged exception with the same
  capability set as a paid Pro account — you will not hit a paywall.
* **Image attachments** on `get_product_detail` return signed URLs
  with a 15-minute expiry. If you let the response sit for longer
  and then click the URL, you may need to re-call the tool.
* **`search_products` geographic boosting** only applies inside the
  US right now. International coordinates return non-geo-boosted
  results.
* **Tool annotations** (`readOnlyHint`, `destructiveHint`,
  `idempotentHint`) are populated for every registered tool — see
  [MCP Tool Annotations](/guides/mcp-tool-annotations) for the full
  per-tool table and semantics. Of the eight tools in this walkthrough,
  `generate_qr_url` is annotated as a writeable, non-destructive
  operation; the other seven are read-only. The C-4038 product write
  tools (not covered by this walkthrough) include several
  `destructiveHint=true` tools — see the annotations page.
* **Audit logging.** Reviewer-session activity is captured to a
  staff-only audit log for our own learning — there is no PII
  beyond the seeded account's own metadata.

## 7. Troubleshooting

| Symptom                            | Likely cause                                                                                                                                                                                                          |
| ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Connector won't register           | Confirm the URL is `https://www.closient.com/mcp/http` (note the `/http` suffix — the bare `/mcp` is a legacy SSE endpoint and rejects Streamable HTTP clients).                                                      |
| `tools/list` is empty              | Claude is talking to the SSE endpoint by mistake. Re-add with the URL above.                                                                                                                                          |
| OAuth consent screen never appears | Your reviewer harness may not honour `WWW-Authenticate`. Use the fallback OAuth client\_id / client\_secret from the submission form to mint a token manually — see [MCP Authentication](/guides/mcp-authentication). |
| 429 Too Many Requests              | The reviewer account should be rate-limit-exempt; if you see a 429, the staff flag may not have propagated. Email the contact below.                                                                                  |
| Anything else                      | Email the contact in [Section 8](#8-contact).                                                                                                                                                                         |

## 8. Contact

For any question that blocks the review, email
[christian@closient.com](mailto:christian@closient.com). Expected
response time during a review window: under 4 hours during US/EU
business hours, under 24 hours otherwise.

The submission packet for cross-reference:

* [Install the MCP Server](/guides/mcp-install) — the public install
  page that your users will land on if Closient is accepted.
* [MCP Quickstart](/guides/mcp-quickstart) — the public quickstart.
* [Tool Reference](/guides/mcp-tools) — input/output schemas for
  every tool.
* [MCP Authentication](/guides/mcp-authentication) — the OAuth 2.1
  step-up flow that gates `generate_qr_url`.
* [MCP Tool Annotations](/guides/mcp-tool-annotations) — how
  Closient declares read/write/idempotency hints.
* [MCP Error Contract](/guides/mcp-errors) — JSON-RPC + RFC 9457
  error semantics.
* [MCP Identity Propagation](/guides/mcp-identity) — agent vs.
  end-user actor in audit logs.

Thank you for reviewing.
