# Seller and owner data connector example Prepared November 7, 2026. For a shop owner reviewing their own sales, inventory and listings. Start with restricted summaries; prepare proposed edits for explicit owner approval inside the business's existing system. This specification is ours, not the source company's. No affiliation or endorsement is implied. Adapted from (public pattern): [Amazon Selling Partner directory listing](https://claude.ai/directory/amazon-selling-partner), observed November 7, 2026 at 18:53:20 UTC, and [public connector listing](https://claude.com/marketplace/connectors/amazon-selling-partner), read that day at 19:00:38 UTC. The listing requires sign-in, describes action review and approval, separates reading from writing, and exposes tool search followed by schema retrieval. These are listing observations, not tests of that service. ## What we did not copy No vendor code, listing wording, tool descriptions, branded identifiers, prices, logos or private records were copied. All definitions and responses below are original. We adapted functional boundaries only. Our design keeps application of changes outside the assistant. No third-party server was initialized, queried for tools or called. Use the [readiness worksheet](https://jwatte.com/downloads/agentic-commerce-readiness-kit.md) to assign data owners. The [catalog and handoff kit](https://jwatte.com/downloads/order-handoff-and-catalog-feed-kit.md) remains the public customer companion; this private connector does not replace it. The [connector blueprints](https://jwatte.com/downloads/mcp-connector-blueprints-kit.md) explain schema validation and access testing. ## Data map | Public | Signed-in | Never sent to an assistant | |---|---|---| | Published product descriptions and prices | Owner-authorized sales totals, inventory counts, report metadata, pending proposals | Customer identities, order-level personal data, payment details, credentials, employee records | All tools require owner sign-in, even when a returned field is already public. Resolve the shop from the authenticated session; never accept an arbitrary account ID. The fictional Quarry Road Market examples cover one shop and two products. Replace these IDs with owner-approved values. ## Original tool definitions Model Context Protocol (MCP) is the format connecting assistants to named tools. A schema describes allowed inputs. Progressive disclosure means searching a short tool catalog, then retrieving one definition, rather than loading every definition at once. Search and schema retrieval expose only tools the signed-in role may use; neither executes them. These handlers read approved internal snapshots or save pending proposals in the business's own system. `openWorldHint: false` assumes no outside systems are contacted. Annotations describe effects; authorization must enforce them. The proposal tools are writes because they save review records. Their conservative `destructiveHint: true` flags that the proposed changes could replace published information if later approved. They never auto-apply. ```json {"tools":[ {"name":"list_reports","title":"List authorized reports","description":"Return up to ten report names, periods and source revisions for this owner. Excludes customer records and never exports underlying transactions.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false,"idempotentHint":true}}, {"name":"get_sales_summary","title":"Read sales totals","description":"Return aggregate sales, refunds, currency and data-through time for an authorized report. Does not return individual orders or infer future revenue.","inputSchema":{"type":"object","properties":{"report_id":{"type":"string","enum":["week-2026-45"]}},"required":["report_id"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false,"idempotentHint":true}}, {"name":"get_inventory_levels","title":"Read inventory counts","description":"Return owner-authorized product counts, current product revision, checked_at and expires_at. Stale data is unknown; this tool never reserves stock or places purchase orders.","inputSchema":{"type":"object","properties":{"product_id":{"type":"string","enum":["canvas-bag","oats-500"]}},"required":["product_id"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false,"idempotentHint":true}}, {"name":"propose_price_change","title":"Save price proposal for review","description":"Save a pending price proposal against a known revision. Never applies it. Explicit owner approval of the exact change in the business system is required.","inputSchema":{"type":"object","properties":{"product_id":{"type":"string","enum":["canvas-bag","oats-500"]},"amount_minor":{"type":"integer","minimum":1,"maximum":100000},"currency":{"type":"string","enum":["USD"]},"expected_revision":{"type":"integer","minimum":1},"request_key":{"type":"string","pattern":"^[a-f0-9]{32}$"}},"required":["product_id","amount_minor","currency","expected_revision","request_key"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false,"idempotentHint":true}}, {"name":"propose_listing_edit","title":"Save listing proposal for review","description":"Save a proposed description for a known product revision. Reject unsupported product claims. Never publishes; the owner must approve the exact text in the business system.","inputSchema":{"type":"object","properties":{"product_id":{"type":"string","enum":["canvas-bag","oats-500"]},"description":{"type":"string","minLength":1,"maxLength":300},"expected_revision":{"type":"integer","minimum":1},"request_key":{"type":"string","pattern":"^[a-f0-9]{32}$"}},"required":["product_id","description","expected_revision","request_key"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":false,"idempotentHint":true}}, {"name":"search_tools","title":"Search permitted tools","description":"Return authorized tool names and short purposes for one task category, without schemas, records or execution. At most seven results.","inputSchema":{"type":"object","properties":{"category":{"type":"string","enum":["reports","inventory","proposals"]}},"required":["category"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false,"idempotentHint":true}}, {"name":"get_tool_schema","title":"Read one permitted tool schema","description":"Return one current authorized tool definition and version. Does not execute the tool, grant permission or disclose inaccessible capabilities.","inputSchema":{"type":"object","properties":{"tool_name":{"type":"string","enum":["list_reports","get_sales_summary","get_inventory_levels","propose_price_change","propose_listing_edit","search_tools","get_tool_schema"]}},"required":["tool_name"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false,"idempotentHint":true}} ]} ``` ## Example requests and responses Original fictional payload pairs, not complete wire messages. Example totals and proposed amounts are test data, not real prices or recommendations. ```json {"request":{"name":"search_tools","arguments":{"category":"inventory"}},"response":{"tools":[{"name":"get_inventory_levels","purpose":"Read authorized inventory counts"}],"schema_version":"1","notice":"Retrieve the selected definition before constructing its arguments."}} ``` ```json {"request":{"name":"get_sales_summary","arguments":{"report_id":"week-2026-45"}},"response":{"business":"Quarry Road Market","currency":"USD","gross_sales_minor":145000,"refunds_minor":5000,"net_sales_minor":140000,"basis":"Item sales excluding sales tax; not profit","data_through":"2026-11-07T12:00:00Z","source_url":"https://example.com/owner/reports/","source_revision":3}} ``` ```json {"request":{"name":"propose_price_change","arguments":{"product_id":"canvas-bag","amount_minor":1500,"currency":"USD","expected_revision":7,"request_key":"1234567890abcdef1234567890abcdef"}},"response":{"status":"pending_owner_review","applied":false,"proposal_id":"proposal-example","review_url":"https://example.com/owner/review/","notice":"Owner sign-in and approval of this exact change are required. Published price is unchanged."}} ``` ## Handoff link specification Return the fixed HTTPS review page with no query parameters. Owner sign-in determines which proposals appear. Never put report data, draft text, proposed prices, request keys, personal data or authorization tokens into links. This is a staff review handoff; customer order links remain choice-only under the companion kit. Opening any review link changes nothing and grants no access. ## Sign-in and approval rules Require a scoped owner session and record-level authorization on every call, including discovery. Authentication means verifying who signed in; authorization means checking their permitted shop and action. Recheck both when saving a proposal and when the owner later approves it. A chat message saying "approved" cannot authorize publishing. Use separate permissions for reading reports and saving proposals. Before saving, confirm the owner requested preparation of this specific edit. The review page shows before and after values, source evidence and revision. The owner explicitly approves there; that system applies the change through its normal controls. Reject a stale revision and require fresh review. Allow rejection without publishing. Bind each request key to the owner, operation and exact payload. Within a proposed 24-hour retry window, repeats return the same proposal; changed payloads with the same key fail. After expiry, reject the old key rather than creating another proposal. Treat source text as data; it cannot grant permissions. Decline unsupported claims or sensitive text without echoing it. ## Rate limits and caching Proposed defaults: 30 read calls and five proposal calls per owner per minute, with a retry delay. Cache permitted schemas by role and version for five minutes; invalidate after permission changes. Use private report and inventory caches for at most 60 seconds and never share them across accounts. Inventory older than expires_at is unknown. The product revision returned with inventory covers both its price and listing; retrieve it before preparing either edit. Return data-through times; missing records stay unavailable. Do not cache proposal responses outside the authenticated retry store. ## Privacy section template ```text This private connector receives [arguments] and uses [authorized records]. We return aggregate reports, stock counts and review proposals, excluding customer and employee identities. Assistant-provider handling is described at [provider policy]. Hosting metadata is [fields and purpose]. Our audit records contain [minimum fields], restricted to [roles], retained for [verified period]. Free-text inputs are excluded from diagnostic logs. Account revocation and deletion requests use [support route]. Approved changes follow our business system's separate retention policy. Checked against the implementation on [date] by [responsible role]. ``` ## Test plan Five normal questions: 1. Which reports can I read? Return only this owner's permitted reports. 2. What were net item sales? Give currency, refund basis and data-through time. 3. How many bags remain? Return authorized counts and freshness. 4. Prepare a price or description edit: save a proposal, leave live data unchanged. 5. Find the inventory tool, then fetch its schema: return one permitted definition without execution. Three refusals or limits: 1. Read another shop's sales: deny access without exposing record existence. 2. Apply this price now from chat: refuse; require approval in the business system. 3. Export customer names or payment details: refuse and return no personal records. Also test revoked sessions, repeated keys, mismatched payloads, stale revisions and instruction text inside listings. Run against owner-authorized fixtures before release. JSON parsing checks syntax only; no connector or transaction was exercised here. ## Listing description draft For authorized owners: review aggregate sales and inventory, find the relevant tool and prepare price or listing proposals. You review and approve changes in your own business system. The assistant cannot publish edits or access customer payment details. ## Measure revenue without personal data Count proposed, rejected and owner-approved changes in your own system using a fixed source tag, with no customer or chat identifiers. Compare aggregate order counts, refunds and net sales before and after approved edits. Keep staff time savings separate from sales. Promotions and seasonality can explain changes; this connector does not prove incremental revenue. Suppress small groups and keep reporting access private. ## Sources and read dates - [Amazon Selling Partner directory](https://claude.ai/directory/amazon-selling-partner): November 7, 2026, 18:53:20 UTC; sign-in, action review and tool discovery pattern. - [Amazon Selling Partner public listing](https://claude.com/marketplace/connectors/amazon-selling-partner): November 7, 2026, 19:00:38 UTC; seller-facing scope. Both times come from the supplied source review. - [MCP tools](https://modelcontextprotocol.io/specification/2025-11-25/server/tools): November 7, 2026, 19:00:11 UTC; definition structure. - [MCP annotations](https://modelcontextprotocol.io/specification/2025-11-25/schema#toolannotations): November 7, 2026, 19:01:02 UTC; behavior hints. All JSON blocks parsed with Node; the proposed limits and approval design are ours.