Connect an AI Agent (MCP)

Manage your product feeds from Claude Code, Codex, or Cursor — connect the Simple Product Feeds MCP server with your API key in under two minutes.

Simple Product Feeds ships a hosted MCP (Model Context Protocol) server, so any MCP-capable agent — Claude Code, Codex, Cursor, and others — can inspect, explain, and fix your feeds by talking to it in plain language.

Endpoint: https://app.simpleproductfeeds.com/v1/mcp Auth: your API key as a Bearer token (create one in the app under Settings → API keys)

The tools cover the full loop — inspect, explain, fix, publish, verify:

ToolWhat it does
spf_list_feedsList your feeds with type, product count, run status, and feed URL.
spf_feed_healthOne-call health digest: run status, included/excluded scope counts, and per-channel validation errors and warnings.
spf_feed_findingsDrill into validation problems: issue categories with affected fields, counts, and sample rows with Shopify admin links.
spf_feed_productsBrowse the transformed feed rows themselves — searchable, paginated, with exclusion verdicts.
spf_debug_rowExplain why any product row came out the way it did — transformed output and rule-attributed exclusion reasons, optionally rendered per channel.
spf_channel_statusChannel connections at a glance, with recent sync logs per channel.
spf_preview_ruleDry-run a rule before applying: field-level before/after diffs on sample products, plus a preview token.
spf_apply_ruleCreate or update a rule (requires the preview token — agents must show you the diff first), or activate/deactivate one.
spf_set_overridesOverride product values in the feed (title, brand, condition, exclusion, custom labels…) without touching Shopify.
spf_restore_overridesThe undo: restore products to their original Shopify values.
spf_run_feedPublish changes (regenerate from the existing snapshot) and poll the run to completion.
spf_update_mappingsRemap which Shopify column feeds each feed column. Overrides overlay the defaults; setting a value to null restores the default — every remap is undoable.
spf_sync_channelTrigger a channel sync — SFTP upload for Commission Junction, a fetch-now request for Google Merchant Center — and watch it via the sync logs.

Writing changes is preview-first by design. An agent cannot create or modify a rule without first previewing it — the apply call requires a signed token proving the exact rule text was previewed. Overrides and mappings are typed, validated, and undoable, and validation counts recompute automatically after writes. Every agent mutation is recorded in a per-shop audit trail: which tool, which API key, what arguments, when.

Claude Code

claude mcp add --transport http simple-product-feeds \
  https://app.simpleproductfeeds.com/v1/mcp \
  --header "Authorization: Bearer $SPF_API_KEY"

Or commit a project-scoped .mcp.json (the ${SPF_API_KEY} placeholder reads from the environment, so no secret lands in git):

{
  "mcpServers": {
    "simple-product-feeds": {
      "type": "http",
      "url": "https://app.simpleproductfeeds.com/v1/mcp",
      "headers": { "Authorization": "Bearer ${SPF_API_KEY}" }
    }
  }
}

Codex

Add to ~/.codex/config.tomlbearer_token_env_var names the environment variable holding your key:

[mcp_servers.simple-product-feeds]
url = "https://app.simpleproductfeeds.com/v1/mcp"
bearer_token_env_var = "SPF_API_KEY"

Cursor

Add to mcp.json:

{
  "mcpServers": {
    "simple-product-feeds": {
      "url": "https://app.simpleproductfeeds.com/v1/mcp",
      "headers": { "Authorization": "Bearer ${env:SPF_API_KEY}" }
    }
  }
}

Agencies: one connection per client shop

Organization keys (spf_org_sk_...) manage many client shops. Select the shop in the connection URL:

https://app.simpleproductfeeds.com/v1/mcp?shop_id=123

Add one MCP server entry per client shop (e.g. spf-clientname), each with the same org key and a different shop_id. Shop IDs come from GET /v1/org/shops.

Try it

Once connected, ask your agent:

Show me the health of my Google feed.

or

Why is product variant 46618568622245 excluded from my primary feed?

Notes

  • The server is stateless JSON-RPC over Streamable HTTP: one request per POST, plain JSON responses, no session to manage.
  • Rate limit: 120 requests/minute per key, shared with the REST API.
  • claude.ai (web) custom connectors require OAuth and aren’t supported yet — use Claude Code, Codex, or Cursor for now.