Skip the install. Get this working in under 2 minutes.
Start a free trial on cloud.anythingmcp.com, add the OTTO Sponsored Product Ads in one click, then point your AI client (Claude, ChatGPT, Copilot or Cursor) at the generated MCP endpoint. No Docker, no git clone, zero engineering experience required.
Summary
OTTO Market Sponsored Product Ads: campaigns, advertised SKUs (targets), keywords and bids, plus SPA reporting (campaign and product KPIs, CSV reports) for advertisers on otto.de. OAuth 2.0 client credentials with the advertising scope.
Try asking
Example prompts for OTTO Sponsored Product Ads
Click any prompt to copy it. Paste into Claude, ChatGPT, Cursor, Gemini, Copilot or OpenClaw to run it against this connector.
Claude is AI and can make mistakes. Please double-check responses.
💡 No install? Use cloud.anythingmcp.com directly. Sign in, click Connectors → OTTO Sponsored Product Ads, paste your credentials, mint an MCP API key and you're done. No Docker, no
git clone, no local server.
OTTO Sponsored Product Ads + ChatGPT
OTTO Market Sponsored Product Ads: campaigns, advertised SKUs (targets), keywords and bids, plus SPA reporting (campaign and product KPIs, CSV reports) for advertisers on otto.de. OAuth 2.0 client credentials with the advertising scope.
Prerequisites
See the full setup instructions baked into the connector (visible in the in-app store when you select the connector). The required environment variables for this connector are:
OTTO_ADS_CLIENT_ID, OTTO_ADS_CLIENT_SECRET
Step 1 — Get credentials
Setting up takes about 5 minutes. You need an OTTO Market partner account that books Sponsored Product Ads, and an app in OTTO Partner Connect. There is no user sign-in: the connector uses client credentials.
- In OTTO Partner Connect, create an app for your own account (or open the one you already use for the Partner API) and enable the Sponsored Product Ads interfaces.
- Copy the app's client id and client secret. The secret is shown once, when it is created; if you no longer have it, rotate it in OTTO Partner Connect.
- Paste the client id into
OTTO_ADS_CLIENT_IDand the secret intoOTTO_ADS_CLIENT_SECRET. AnythingMCP runs OTTO's client-credentials flow with the scopeadvertising-services; a token lasts 30 minutes and is fetched again when it expires. - Install the connector and run
otto_ads_list_campaigns: it lists your campaigns with status, type and budget.
Separate from the OTTO Market connector: Sponsored Product Ads uses its own OAuth scope. Orders, products, stock and returns stay in the OTTO Market connector, and keeping ads apart means an app without the advertising interface keeps working there.
What it reads: campaigns with status, type (AUTOMATIC or MANUAL), budget, budget type, pacing and dates; the advertised SKUs (targets) with their bids; the keywords of each target with match type, positive or negative, and bid; KPIs per campaign and per SKU (views, clicks, costs, attributed sales, ordered SKUs, click-through rate, cost per click and return on ad spend); and CSV reports per campaign, per keyword (including the search term the shopper actually typed) and per product.
Money is in euro cents: budgets, bids and costs arrive as {"amount": 160, "currency": "EUR"}, which is 1.60 EUR. The minimum bid and budget amount is 20 (0.20 EUR). The report columns TOTAL_COSTS and TOTAL_SALES are cents too.
Bids live in two places: AUTOMATIC campaigns bid per target (SKU), MANUAL campaigns bid per positive keyword. Negative keywords (no bid) work in both and belong to one target: to exclude a search term for a whole campaign, the AI adds it to every target.
Reporting: KPIs cover at most the last 90 days and never today; without dates OTTO uses the last 7 days. OTTO attributes sales up to 14 days after the click, including other articles of the same brand, so recent days still change. For a CSV report the AI requests it, checks otto_ads_get_report_status until it is READY and fetches it with otto_ads_download_report. A file is kept 24 hours. Requesting a report changes no campaign.
Asks before every change: otto_ads_create_campaign, otto_ads_update_campaign, otto_ads_add_targets, otto_ads_update_target_bids, otto_ads_add_keywords and otto_ads_update_keywords change your live advertising and spend money. The AI shows you the campaign, target or keyword and the amount in euros, confirms it with you and waits for your yes. Writes are asynchronous: OTTO answers with a change request, and the AI follows it with otto_ads_get_change_request until it is ACCEPTED or REJECTED (with the reason).
Switched off at install: otto_ads_delete_keywords. It deletes 1 to 50 keywords of a target and cannot be undone; lowering a bid is often the better choice. An administrator can turn it on deliberately.
Limits: OTTO allows at most 200 reports per 24 hours across all report types, even though a report changes nothing. Only one change request per campaign may be pending at a time. Lists come in pages of up to 1000 entries, which the AI follows with nextCursor. When it checks a change request it waits a little longer each time (1, 2, 4 seconds) to avoid 429.
Common errors: if the token is refused, the client id or secret is wrong or the app does not have the Sponsored Product Ads interface enabled: check the app in OTTO Partner Connect. 409 means another change to the same campaign is still pending. A rejection such as "Invalid status transition PAUSED to PAUSED" means the campaign already has that status. 404 "Data not found" on KPIs means the campaign had no impressions in the range; on a download, 404 means the report is not ready yet and 410 that it expired.
The connector does not read orders, products, stock or returns (that is the OTTO Market connector), does not show today's figures or anything older than 90 days, and does not delete campaigns or targets.
Step 2 — Install the adapter
curl -fsSL https://raw.githubusercontent.com/HelpCode-ai/anythingmcp/main/docker-compose.quickstart.yml -o docker-compose.yml
printf 'JWT_SECRET=%s\nENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
docker compose up -d
Step 3 — Add the connector in ChatGPT
Your server URL: in AnythingMCP, open MCP Servers → the server this connector is on, and copy its URL (
https://cloud.anythingmcp.com/mcp/…). Use it wherever this guide showsYOUR_SERVER_ID.
ChatGPT adds MCP servers as plugins on its Plugins page, on the web and on paid plans. Developer mode is no longer needed. In a Business workspace only admins and owners can add one; in Enterprise and Edu an admin can grant the Create plugins with MCPs permission.
- Go to chatgpt.com/plugins, click +, then Add custom MCP server.
- Enter a name, e.g. Name:
OTTO Sponsored Product Ads. - Under Connection, enter the Server URL
https://cloud.anythingmcp.com/mcp/YOUR_SERVER_IDand keep Authentication on OAuth. - Select I understand and want to continue, then Create as a plugin. When ChatGPT asks, sign in to AnythingMCP and allow access.
- Install the new plugin from your personal plugins, then type @ in a chat and pick it.
Available tools
| Tool | What it does |
|---|---|
otto_ads_list_campaigns | List Sponsored Product Ads campaigns: campaignId, name, status (PENDING, WAITING, ACTIVE, PAUSED, ENDED, CANCELED), campaignType (AUTOMATIC… |
otto_ads_get_campaign | Read one campaign: status, type, budget (euro cents), budgetType, pacing and dates |
otto_ads_list_targets | List the targets (advertised SKUs) of a campaign with targetId, sku and bid |
otto_ads_get_target | Read one target (advertised SKU) of a campaign with its bid |
otto_ads_list_keywords | List the keywords of one target: keywordId, keyword, matchType (EXACT, PHRASE, BROAD), keywordType (POSITIVE or NEGATIVE) and bid (euro… |
otto_ads_get_change_request | Status of an asynchronous write: PENDING, ACCEPTED or REJECTED |
otto_ads_get_campaign_kpis | KPIs of one campaign for a date range: views, clicks, costs, attributed sales, ordered SKUs, click-through rate, cost per click and return… |
otto_ads_get_product_kpis | KPIs of one SKU inside one campaign for a date range, the same metrics as the campaign KPIs plus totalSalesSeller (attributed sales of… |
otto_ads_request_campaign_report | Start a CSV campaign report across campaigns and days |
otto_ads_request_keyword_report | Start a CSV keyword report: performance per keyword and per actual search term, the basis for new negative keywords and bid changes |
otto_ads_request_product_report | Start a CSV product report: performance per advertised SKU |
otto_ads_get_report_status | Status of a requested report: IN_PROGRESS, READY or FAILED (request a new one after FAILED). report_type must match the tool that requested… |
otto_ads_download_report | Download a READY report as CSV text. 404 means it is not ready yet, 410 that it expired (files are kept 24 hours) |
otto_ads_create_campaign | Create a campaign |
otto_ads_update_campaign | Change a campaign: status (ACTIVE, PAUSED, WAITING), budget (euro cents), pacing, name, start or end date |
otto_ads_add_targets | Add SKUs to a campaign |
otto_ads_update_target_bids | Change target bids in an AUTOMATIC campaign |
otto_ads_add_keywords | Add keywords to one target |
otto_ads_update_keywords | Change the bid (euro cents) or matchType of existing keywords of one target |
otto_ads_delete_keywords | Delete 1 to 50 keywords of one target by keywordId |
Example prompts
- "Which of my OTTO campaigns had the best return on ad spend over the last 30 days, and what did each one cost in euros?"
- "Pause the campaign Garden furniture summer. Check its current status first and tell me when OTTO has accepted the change."
- "Raise the bid for SKU BL-4711 in my automatic campaign Bed linen to 0.80 EUR. Show me the old and the new bid before you change it."
- "Request a keyword report for the last 30 days and list the search terms that cost money but sold nothing, as candidates for negative keywords."
- "Create an automatic campaign Winter jackets with a daily budget of 25 EUR, spread evenly, starting next Monday, and add SKUs JK-100 and JK-200 with a bid of 0.50 EUR each."
FAQ
Does the free ChatGPT plan work with custom MCP servers? OpenAI documents custom MCP servers for paid plans only; the Free plan is not on its list.
Next steps
Was this guide helpful?