# upsert_products

Create or update products in the catalog (Commerce API, keyed by your productId, stored under the api provider). Use this to add products that are not synced from Stripe/Shopify/WooCommerce, then attach a deliverable file with attach_product_file and build a purchase sequence for them.

Agent View of the PolicyLayer registry record for `upsert_products`. HTML page: https://policylayer.com/tools/io-github-polnikale-sequenzy-mcp/upsert-products

## Facts

- Tool: `upsert_products`
- Server: Sequenzy Mcp (`Sequenzy/mcp`) — https://policylayer.com/tools/io-github-polnikale-sequenzy-mcp.md
- Homepage: https://github.com/Sequenzy/mcp
- Risk category: Write (Medium risk)
- Registry record: grade D, identity unverified
- Server auth posture: gated
- Server CORS policy: *, *
- Server rate-limited: no
- Parameters: 0
- Recommended policy verdict: Rate-limited

## Example call (MCP tools/call, JSON-RPC 2.0)

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "upsert_products",
    "arguments": {}
  }
}
```

## Why upsert_products is rated Medium

This tool creates or updates products reversibly in a catalog system. While it modifies data, it does not irreversibly delete data (Destructive), execute arbitrary code (Execute), move money directly (Financial), or retrieve data only (Read).

From the tool's own definition: "upsert_products: 'Create or update products' — the tool explicitly creates or modifies product catalog data. The description confirms it stores products in the commerce system and enables building sequences around them."

## Use case

AI agents use upsert_products to create or update resources in Sequenzy Mcp, usually the action step of a workflow, after the agent has gathered context. Every call changes real data in your Sequenzy Mcp environment.

## Recommended policy (PolicyLayer)

Verdict: **Rate-limited**. Enforced by the PolicyLayer MCP gateway (https://policylayer.com/mcp-gateway) before a call reaches Sequenzy Mcp:

```json
{
  "version": "1",
  "default": "deny",
  "tools": {
    "upsert_products": {
      "limits": [
        {
          "counter": "upsert_products_rate",
          "window": "minute",
          "max": 30,
          "scope": "grant"
        }
      ]
    }
  }
}
```

## Other tools on Sequenzy Mcp (221)

- `cancel_campaign` — Destructive — https://policylayer.com/tools/io-github-polnikale-sequenzy-mcp/cancel-campaign.md
- `cancel_sequence_enrollments` — Destructive — https://policylayer.com/tools/io-github-polnikale-sequenzy-mcp/cancel-sequence-enrollments.md
- `cancel_team_invitation` — Destructive — https://policylayer.com/tools/io-github-polnikale-sequenzy-mcp/cancel-team-invitation.md
- `delete_ab_test` — Destructive — https://policylayer.com/tools/io-github-polnikale-sequenzy-mcp/delete-ab-test.md
- `delete_ab_test_variant` — Destructive — https://policylayer.com/tools/io-github-polnikale-sequenzy-mcp/delete-ab-test-variant.md
- `delete_api_key` — Destructive — https://policylayer.com/tools/io-github-polnikale-sequenzy-mcp/delete-api-key.md
- `delete_audience_sync` — Destructive — https://policylayer.com/tools/io-github-polnikale-sequenzy-mcp/delete-audience-sync.md
- `delete_campaign` — Destructive — https://policylayer.com/tools/io-github-polnikale-sequenzy-mcp/delete-campaign.md
- `delete_campaign_goal` — Destructive — https://policylayer.com/tools/io-github-polnikale-sequenzy-mcp/delete-campaign-goal.md
- `delete_email_component` — Destructive — https://policylayer.com/tools/io-github-polnikale-sequenzy-mcp/delete-email-component.md
- `delete_landing_page` — Destructive — https://policylayer.com/tools/io-github-polnikale-sequenzy-mcp/delete-landing-page.md
- `delete_list` — Destructive — https://policylayer.com/tools/io-github-polnikale-sequenzy-mcp/delete-list.md
- `delete_popup` — Destructive — https://policylayer.com/tools/io-github-polnikale-sequenzy-mcp/delete-popup.md
- `delete_product` — Destructive — https://policylayer.com/tools/io-github-polnikale-sequenzy-mcp/delete-product.md
- `delete_segment` — Destructive — https://policylayer.com/tools/io-github-polnikale-sequenzy-mcp/delete-segment.md
- `delete_sequence` — Destructive — https://policylayer.com/tools/io-github-polnikale-sequenzy-mcp/delete-sequence.md
- `delete_sequence_goal` — Destructive — https://policylayer.com/tools/io-github-polnikale-sequenzy-mcp/delete-sequence-goal.md
- `delete_subscriber_note` — Destructive — https://policylayer.com/tools/io-github-polnikale-sequenzy-mcp/delete-subscriber-note.md
- `delete_tag` — Destructive — https://policylayer.com/tools/io-github-polnikale-sequenzy-mcp/delete-tag.md
- `delete_template` — Destructive — https://policylayer.com/tools/io-github-polnikale-sequenzy-mcp/delete-template.md
- `delete_transactional_email` — Destructive — https://policylayer.com/tools/io-github-polnikale-sequenzy-mcp/delete-transactional-email.md
- `delete_web_tracking_key` — Destructive — https://policylayer.com/tools/io-github-polnikale-sequenzy-mcp/delete-web-tracking-key.md
- `delete_webhook` — Destructive — https://policylayer.com/tools/io-github-polnikale-sequenzy-mcp/delete-webhook.md
- `remove_landing_page_domain` — Destructive — https://policylayer.com/tools/io-github-polnikale-sequenzy-mcp/remove-landing-page-domain.md
- `remove_product_file` — Destructive — https://policylayer.com/tools/io-github-polnikale-sequenzy-mcp/remove-product-file.md
- `remove_subscriber` — Destructive — https://policylayer.com/tools/io-github-polnikale-sequenzy-mcp/remove-subscriber.md
- `remove_subscribers_from_list` — Destructive — https://policylayer.com/tools/io-github-polnikale-sequenzy-mcp/remove-subscribers-from-list.md
- `revoke_api_key` — Destructive — https://policylayer.com/tools/io-github-polnikale-sequenzy-mcp/revoke-api-key.md
- `realign_sequence_enrollments` — Execute — https://policylayer.com/tools/io-github-polnikale-sequenzy-mcp/realign-sequence-enrollments.md
- `replay_webhook_delivery` — Execute — https://policylayer.com/tools/io-github-polnikale-sequenzy-mcp/replay-webhook-delivery.md
- …and 191 more: https://policylayer.com/tools/io-github-polnikale-sequenzy-mcp.md

## For agents

This record is a snapshot. Live verdicts and the full registry:

- Check every server in your MCP config at once: `npx -y policylayer stack`
- Vet a server before you add it: install the mcp-precheck skill — `npx skills add https://policylayer.com` (skill text: https://policylayer.com/skill.md)
- Query the registry over MCP: endpoint `https://api.policylayer.com/mcp` — tools `check_mcp_server`, `check_mcp_stack`, `check_tool`, `search_registry`, `get_change_events`

---

Source: the PolicyLayer MCP registry — one continuously verified record per MCP server. Full record: https://policylayer.com/registry?q=io-github-polnikale-sequenzy-mcp · API: https://policylayer.com/registry/api · Policy library: https://policylayer.com/policies/io-github-polnikale-sequenzy-mcp
