01Run it
Replace the <placeholders> with your own values, or use the builder below.
p202 mcp tools02What you get
Captured from the real binary, run against a demo store with 30 days of traffic. Switch tabs to see the same run as JSON, the shape scripts and agents parse.
$ p202 mcp tools { "schema": 1, "cli_version": "1.9.78", "max_result_chars": 60000, "instructions": "Prosper202 is a self-hosted tracker and analytics app for affiliate and paid-traffic marketing. These tools read and change this user's own Prosper202 install through its API; the user's role there, and this connection's access, decide what is allowed.\n- Find ids with the list tools (campaign_list, tracker_list, ppc_account_list, ...) before a get, update or delete.\n- Report tools take period (today, yesterday, last7, last30, thismonth, ...) or time_from and time_to, and filters such as aff_campaign_id or ppc_account_id.\n- An error comes back as JSON with a category, a message and usually a hint. Messages and hints name CLI commands and flags (`p202 campaign list`, --aff-campaign-id); the matching tool is campaign_list and the argument aff_campaign_id.\n- A delete runs without a further question once the tool call is approved; pass dry_run: true first and show the user what it would remove.", "tools": [ { "name": "report_summary", "title": "Performance totals", "description": "Get aggregate totals — clicks, conversions, revenue, cost, profit, ROI for a period. Filter with the *_id arguments (ids from the list tools) and choose the window with period, or time_from and time_to. (CLI: p202 report summary)", "inputSchema": { "type": "object", "properties": { "aff_campaign_id": { "type": "string", "description": "Filter by INTERNAL campaign id (from campaign_list), not the public id in tracking URLs", "pattern": "^[0-9]{1,20}$" }, "aff_network_id": { "type": "string", "description": "Filter by affiliate network ID", "pattern": "^[0-9]{1,20}$" }, "browser_id": { "type": "string", "description": "Filter by browser ID (the id of a `breakdown browser` row)", "pattern": "^[0-9]{1,20}$" }, "country_id": { "type": "string", "description": "Filter by country ID", "pattern": "^[0-9]{1,20}$" }, "device_type": { "type": "string", "description": "Filter by device type ID: 1 Desktop, 2 Mobile, 3 Tablet, 4 Bot (the ids of `breakdown device_type` rows)" }, "ip": { "type": "string", "description": "Only clicks from this one IP address, IPv4 or IPv6" }, "isp_id": { "type": "string", "description": "Filter by ISP/carrier ID (the id of a `breakdown isp` row)", "pattern": "^[0-9]{1,20}$" }, "keyword": { "type": "string", "description": "Only clicks whose keyword contains this text (case-insensitive)" }, "landing_page_id": { "type": "string", "description": "Filter by landing page ID", "pattern": "^[0-9]{1,20}$" }, "method_of_promotion": { "type": "string", "description": "Only direct-link clicks or only landing-page clicks: directlink, landingpage" }, "period": { "type": "string", "description": "Period: today, yesterday, last7, last14, last30, last90, thismonth, lastmonth, thisyear, lastyear, alltime" }, "platform_id": { "type": "string", "description": "Filter by platform (OS) ID (the id of a `breakdown platform` row)", "pattern": "^[0-9]{1,20}$" }, "ppc_account_id": { "type": "string", "description": "Filter by PPC account ID", "pattern": "^[0-9]{1,20}$" }, "ppc_network_id": { "type": "string", "description": "Filter by PPC network ID, or none for the clicks with no traffic source", "pattern": "^(?:[0-9]{1,20}|none)$" }, "referer": { "type": "string", "description": "Only clicks whose referring URL contains this text (case-insensitive)" }, "region_id": { "type": "string", "description": "Filter by region ID (the id of a `breakdown region` row)", "pattern": "^[0-9]{1,20}$" }, "show": { "type": "string", "description": "Which clicks count (default all): all, real, filtered, filtered_bot, leads; real = not filtered, filtered_bot = filtered as bots, leads = converted" }, "text_ad_id": { "type": "string", "description": "Filter by text ad ID", "pattern": "^[0-9]{1,20}$" }, "time_from": { "type": "string", "description": "Start: unix seconds, a date (2026-10-01, from its first second in the account's timezone) or a time with its offset (2026-10-01T09:30:00Z)" }, "time_to": { "type": "string", "description": "End, inclusive: unix seconds, a date (2026-10-01, through its last second in the account's timezone) or a time with its offset" } }, "additionalProperties": false }, "annotations": { "title": "Performance totals", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "report_breakdown", "title": "Performance by dimension", "description": "Get stats broken down by a dimension (campaign, traffic source, country, landing page, etc.). The Overview and Analyze pages: choose the dimension with breakdown (campaign, ppc_account, country, keyword, landing_page, device, ...). Filter with the *_id arguments (ids from the list tools) and choose the window with period, or time_from and time_to. (CLI: p202 report breakdown)", "inputSchema": { "type": "object", "properties": { "aff_campaign_id": { "type": "string", "description": "Filter by INTERNAL campaign id (from campaign_list), not the public id in tracking URLs", "pattern": "^[0-9]{1,20}$" }, "aff_network_id": { "type": "string", "description": "Filter by affiliate network ID", "pattern": "^[0-9]{1,20}$" }, "breakdown": { "type": "string", "description": "Dimension (rows are one per stored value; clicks without one, e.g. no referer, are in report_summary only): campaign, aff_network, ppc_account, ppc_network, landing_page, keyword, country, city, region, browser, platform, device, isp, text_ad, ip, referer, referer_url, device_type, c1, c2, c3, c4, utm_source, utm_medium, utm_campaign, utm_term, utm_content, rotator, rotator_rule (aliases: geo=country, lp=landing_page, network=aff_network, offer=campaign, referrer=referer, referrer_url=referer_url, rule=rotator_rule, source=ppc_account)" }, "browser_id": { "type": "string", "description": "Filter by browser ID (the id of a `breakdown browser` row)", "pattern": "^[0-9]{1,20}$" }, "country_id": { "type": "string", "description": "Filter by country ID", "pattern": "^[0-9]{1,20}$" }, "device_type": { "type": "string", "description": "Filter by device type ID: 1 Desktop, 2 Mobile, 3 Tablet, 4 Bot (the ids of `breakdown device_type` rows)" }, "having": { "type": "string", "description": "Post-filter rows: FIELD OP NUMBER, FIELD a metric column or its alias, OP one of >= <= != = > < (e.g. 'total_leads=0', 'roi<0')" }, "ip": { "type": "string", "description": "Only clicks from this one IP address, IPv4 or IPv6" }, "isp_id": { "type": "string", "description": "Filter by ISP/carrier ID (the id of a `breakdown isp` row)", "pattern": "^[0-9]{1,20}$" }, "keyword": { "type": "string", "description": "Only clicks whose keyword contains this text (case-insensitive)" }, "landing_page_id": { "type": "string", "description": "Filter by landing page ID", "pattern": "^[0-9]{1,20}$" }, "limit": { "type": "string", "description": "Max results" }, "method_of_promotion": { "type": "string", "description": "Only direct-link clicks or only landing-page clicks: directlink, landingpage" }, "min_clicks": { "type": "number", "description": "Only rows with at least N clicks" }, "min_cost": { "type": "number", "description": "Only rows with at least $N cost" }, "offset": { "type": "string", "description": "Pagination offset" }, "period": { "type": "string", "description": "Period: today, yesterday, last7, last14, last30, last90, thismonth, lastmonth, thisyear, lastyear, alltime" }, "platform_id": { "type": "string", "description": "Filter by platform (OS) ID (the id of a `breakdown platform` row)", "pattern": "^[0-9]{1,20}$" }, "ppc_account_id": { "type": "string", "description": "Filter by PPC account ID", "pattern": "^[0-9]{1,20}$" }, "ppc_network_id": { "type": "string", "description": "Filter by PPC network ID, or none for the clicks with no traffic source", "pattern": "^(?:[0-9]{1,20}|none)$" }, "referer": { "type": "string", "description": "Only clicks whose referring URL contains this text (case-insensitive)" }, "region_id": { "type": "string", "description": "Filter by region ID (the id of a `breakdown region` row)", "pattern": "^[0-9]{1,20}$" }, "show": { "type": "string", "description": "Which clicks count (default all): all, real, filtered, filtered_bot, leads; real = not filtered, filtered_bot = filtered as bots, leads = converted" }, "sort": { "type": "string", "description": "Sort by: total_clicks, total_click_throughs, total_leads, total_income, total_cost, total_net, epc, avg_cpc, conv_rate, roi, cpa (aliases: clicks=total_clicks, conversions=total_leads, cost=total_cost, income=total_income, leads=total_leads, net=total_net, profit=total_net, revenue=total_income)" }, "sort_dir": { "type": "string", "description": "Sort direction: ASC, DESC" }, "text_ad_id": { "type": "string", "description": "Filter by text ad ID", "pattern": "^[0-9]{1,20}$" }, "time_from": { "type": "string", "description": "Start: unix seconds, a date (2026-10-01, from its first second in the account's timezone) or a time with its offset (2026-10-01T09:30:00Z)" }, "time_to": { "type": "string", "description": "End, inclusive: unix seconds, a date (2026-10-01, through its last second in the account's timezone) or a time with its offset" }, "zero_leads": { "type": "boolean", "description": "Only rows with cost > 0 and zero conversions (pure waste)" } }, "additionalProperties": false }, "annotations": { "title": "Performance by dimension", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "report_timeseries", "title": "Performance over time", "description": "Get stats over time — daily/hourly buckets of clicks, conversions, revenue, etc. Filter with the *_id arguments (ids from the list tools) and choose the window with period, or time_from and time_to. (CLI: p202 report timeseries)", "inputSchema": { "type": "object", "properties": { "aff_campaign_id": { "type": "string", "description": "Filter by INTERNAL campaign id (from campaign_list), not the public id in tracking URLs", "pattern": "^[0-9]{1,20}$" }, "aff_network_id": { "type": "string", "description": "Filter by affiliate network ID", "pattern": "^[0-9]{1,20}$" }, "country_id": { "type": "string", "description": "Filter by country ID", "pattern": "^[0-9]{1,20}$" }, "keyword": { "type": "string", "description": "Only clicks whose keyword contains this text (case-insensitive)" }, "landing_page_id": { "type": "string", "description": "Filter by landing page ID", "pattern": "^[0-9]{1,20}$" }, "period": { "type": "string", "description": "Period: today, yesterday, last7, last14, last30, last90, thismonth, lastmonth, thisyear, lastyear, alltime" }, "ppc_account_id": { "type": "string", "description": "Filter by PPC account ID", "pattern": "^[0-9]{1,20}$" }, "ppc_network_id": { "type": "string", "description": "Filter by PPC network ID, or none for the clicks with no traffic source", "pattern": "^(?:[0-9]{1,20}|none)$" }, "show": { "type": "string", "description": "Which clicks count (default all): all, real, filtered, filtered_bot, leads; real = not filtered, filtered_bot = filtered as bots, leads = converted" }, "time_from": { "type": "string", "description": "Start: unix seconds, a date (2026-10-01, from its first second in the account's timezone) or a time with its offset (2026-10-01T09:30:00Z)" }, "time_to": { "type": "string", "description": "End, inclusive: unix seconds, a date (2026-10-01, through its last second in the account's timezone) or a time with its offset" } }, "additionalProperties": false }, "annotations": { "title": "Performance over time", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "report_daypart", "title": "Performance by hour of day", "description": "Get stats grouped by hour of day (0-23) to find best-performing hours. (CLI: p202 report daypart)", "inputSchema": { "type": "object", "properties": { "aff_campaign_id": { "type": "string", "description": "Filter by INTERNAL campaign id (from campaign_list), not the public id in tracking URLs", "pattern": "^[0-9]{1,20}$" }, "aff_network_id": { "type": "string", "description": "Filter by affiliate network ID", "pattern": "^[0-9]{1,20}$" }, "country_id": { "type": "string", "description": "Filter by country ID", "pattern": "^[0-9]{1,20}$" }, "keyword": { "type": "string", "description": "Only clicks whose keyword contains this text (case-insensitive)" }, "landing_page_id": { "type": "string", "description": "Filter by landing page ID", "pattern": "^[0-9]{1,20}$" }, "period": { "type": "string", "description": "Period: today, yesterday, last7, last14, last30, last90, thismonth, lastmonth, thisyear, lastyear, alltime" }, "ppc_account_id": { "type": "string", "description": "Filter by PPC account ID", "pattern": "^[0-9]{1,20}$" }, "ppc_network_id": { "type": "string", "description": "Filter by PPC network ID, or none for the clicks with no traffic source", "pattern": "^(?:[0-9]{1,20}|none)$" }, "show": { "type": "string", "description": "Which clicks count (default all): all, real, filtered, filtered_bot, leads; real = not filtered, filtered_bot = filtered as bots, leads = converted" }, "sort": { "type": "string", "description": "Sort by: hour_of_day, total_clicks, total_click_throughs, total_leads, total_income, total_cost, total_net, epc, avg_cpc, conv_rate, roi, cpa (aliases: clicks=total_clicks, conversions=total_leads, cost=total_cost, income=total_income, leads=total_leads, net=total_net, profit=total_net, revenue=total_income)" }, "sort_dir": { "type": "string", "description": "Sort direction (also sort_dir): ASC, DESC" }, "time_from": { "type": "string", "description": "Start: unix seconds, a date (2026-10-01, from its first second in the account's timezone) or a time with its offset (2026-10-01T09:30:00Z)" }, "time_to": { "type": "string", "description": "End, inclusive: unix seconds, a date (2026-10-01, through its last second in the account's timezone) or a time with its offset" } }, "additionalProperties": false }, "annotations": { "title": "Performance by hour of day", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "report_weekpart", "title": "Performance by day of week", "description": "Get stats grouped by day of week (Mon-Sun) to find best-performing days. (CLI: p202 report weekpart)", "inputSchema": { "type": "object", "properties": { "aff_campaign_id": { "type": "string", "description": "Filter by INTERNAL campaign id (from campaign_list), not the public id in tracking URLs", "pattern": "^[0-9]{1,20}$" }, "aff_network_id": { "type": "string", "description": "Filter by affiliate network ID", "pattern": "^[0-9]{1,20}$" }, "country_id": { "type": "string", "description": "Filter by country ID", "pattern": "^[0-9]{1,20}$" }, "keyword": { "type": "string", "description": "Only clicks whose keyword contains this text (case-insensitive)" }, "landing_page_id": { "type": "string", "description": "Filter by landing page ID", "pattern": "^[0-9]{1,20}$" }, "period": { "type": "string", "description": "Period: today, yesterday, last7, last14, last30, last90, thismonth, lastmonth, thisyear, lastyear, alltime" }, "ppc_account_id": { "type": "string", "description": "Filter by PPC account ID", "pattern": "^[0-9]{1,20}$" }, "ppc_network_id": { "type": "string", "description": "Filter by PPC network ID, or none for the clicks with no traffic source", "pattern": "^(?:[0-9]{1,20}|none)$" }, "show": { "type": "string", "description": "Which clicks count (default all): all, real, filtered, filtered_bot, leads; real = not filtered, filtered_bot = filtered as bots, leads = converted" }, "sort": { "type": "string", "description": "Sort by: day_of_week, total_clicks, total_click_throughs, total_leads, total_income, total_cost, total_net, epc, avg_cpc, conv_rate, roi, cpa (aliases: clicks=total_clicks, conversions=total_leads, cost=total_cost, income=total_income, leads=total_leads, net=total_net, profit=total_net, revenue=total_income)" }, "sort_dir": { "type": "string", "description": "Sort direction (also sort_dir): ASC, DESC" }, "time_from": { "type": "string", "description": "Start: unix seconds, a date (2026-10-01, from its first second in the account's timezone) or a time with its offset (2026-10-01T09:30:00Z)" }, "time_to": { "type": "string", "description": "End, inclusive: unix seconds, a date (2026-10-01, through its last second in the account's timezone) or a time with its offset" } }, "additionalProperties": false }, "annotations": { "title": "Performance by day of week", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "report_groups", "title": "Grouped performance", "description": "Traffic grouped by up to four dimensions, nested, each group with its totals (Group Overview). (CLI: p202 report groups)", "inputSchema": { "type": "object", "properties": { "aff_campaign_id": { "type": "string", "description": "Filter by INTERNAL campaign id (from campaign_list), not the public id in tracking URLs", "pattern": "^[0-9]{1,20}$" }, "aff_network_id": { "type": "string", "description": "Filter by affiliate network ID", "pattern": "^[0-9]{1,20}$" }, "by": { "type": "string", "description": "Up to 4 dimensions, outermost first (e.g. ppc_network,campaign,keyword): campaign, aff_network, ppc_account, ppc_network, landing_page, keyword, country, city, region, browser, platform, device, isp, text_ad, ip, referer, referer_url, device_type, c1, c2, c3, c4, utm_source, utm_medium, utm_campaign, utm_term, utm_content, rotator, rotator_rule (aliases: geo=country, lp=landing_page, network=aff_network, offer=campaign, referrer=referer, referrer_url=referer_url, rule=rotator_rule, source=ppc_account); comma-separated for several" }, "country_id": { "type": "string", "description": "Filter by country ID", "pattern": "^[0-9]{1,20}$" }, "keyword": { "type": "string", "description": "Only clicks whose keyword contains this text (case-insensitive)" }, "landing_page_id": { "type": "string", "description": "Filter by landing page ID", "pattern": "^[0-9]{1,20}$" }, "period": { "type": "string", "description": "Period: today, yesterday, last7, last14, last30, last90, thismonth, lastmonth, thisyear, lastyear, alltime" }, "ppc_account_id": { "type": "string", "description": "Filter by PPC account ID", "pattern": "^[0-9]{1,20}$" }, "ppc_network_id": { "type": "string", "description": "Filter by PPC network ID, or none for the clicks with no traffic source", "pattern": "^(?:[0-9]{1,20}|none)$" }, "show": { "type": "string", "description": "Which clicks count (default all): all, real, filtered, filtered_bot, leads; real = not filtered, filtered_bot = filtered as bots, leads = converted" }, "sort": { "type": "string", "description": "Order each group's rows by name (default) or a metric: name, total_clicks, total_click_throughs, total_leads, total_income, total_cost, total_net, epc, avg_cpc, conv_rate, roi, cpa (aliases: clicks=total_clicks, conversions=total_leads, cost=total_cost, income=total_income, leads=total_leads, net=total_net, profit=total_net, revenue=total_income)" }, "sort_dir": { "type": "string", "description": "ASC or DESC (default ASC by name, DESC by a metric): ASC, DESC" }, "time_from": { "type": "string", "description": "Start: unix seconds, a date (2026-10-01, from its first second in the account's timezone) or a time with its offset (2026-10-01T09:30:00Z)" }, "time_to": { "type": "string", "description": "End, inclusive: unix seconds, a date (2026-10-01, through its last second in the account's timezone) or a time with its offset" } }, "required": [ "by" ], "additionalProperties": false }, "annotations": { "title": "Grouped performance", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "report_crosstab", "title": "Two-dimension performance table", "description": "Two-dimension breakdown (e.g. traffic source × country) for one metric. (CLI: p202 report crosstab)", "inputSchema": { "type": "object", "properties": { "aff_campaign_id": { "type": "string", "description": "Filter by INTERNAL campaign id (from campaign_list), not the public id in tracking URLs", "pattern": "^[0-9]{1,20}$" }, "aff_network_id": { "type": "string", "description": "Filter by affiliate network ID", "pattern": "^[0-9]{1,20}$" }, "cols": { "type": "string", "description": "Column dimension: campaign, aff_network, ppc_account, ppc_network, landing_page, keyword, country, city, region, browser, platform, device, isp, text_ad, ip, referer, referer_url, device_type, c1, c2, c3, c4, utm_source, utm_medium, utm_campaign, utm_term, utm_content, rotator, rotator_rule (aliases: geo=country, lp=landing_page, network=aff_network, offer=campaign, referrer=referer, referrer_url=referer_url, rule=rotator_rule, source=ppc_account)" }, "country_id": { "type": "string", "description": "Filter by country ID", "pattern": "^[0-9]{1,20}$" }, "keyword": { "type": "string", "description": "Only clicks whose keyword contains this text (case-insensitive)" }, "landing_page_id": { "type": "string", "description": "Filter by landing page ID", "pattern": "^[0-9]{1,20}$" }, "limit_rows": { "type": "integer", "description": "Cap the number of rows fanned out" }, "metric": { "type": "string", "description": "Metric to pivot: total_clicks, total_click_throughs, total_leads, total_income, total_cost, total_net, epc, avg_cpc, conv_rate, roi, cpa (aliases: clicks=total_clicks, conversions=total_leads, cost=total_cost, income=total_income, leads=total_leads, net=total_net, profit=total_net, revenue=total_income)" }, "period": { "type": "string", "description": "Period: today, yesterday, last7, last14, last30, last90, thismonth, lastmonth, thisyear, lastyear, alltime" }, "ppc_account_id": { "type": "string", "description": "Filter by PPC account ID", "pattern": "^[0-9]{1,20}$" }, "ppc_network_id": { "type": "string", "description": "Filter by PPC network ID, or none for the clicks with no traffic source", "pattern": "^(?:[0-9]{1,20}|none)$" }, "rows": { "type": "string", "description": "Row dimension (one with an id filter): campaign, aff_network, ppc_account, ppc_network, landing_page, country, region, browser, platform, isp, text_ad, device_type (aliases: geo=country, lp=landing_page, network=aff_network, offer=campaign, source=ppc_account)" }, "show": { "type": "string", "description": "Which clicks count (default all): all, real, filtered, filtered_bot, leads; real = not filtered, filtered_bot = filtered as bots, leads = converted" }, "time_from": { "type": "string", "description": "Start: unix seconds, a date (2026-10-01, from its first second in the account's timezone) or a time with its offset (2026-10-01T09:30:00Z)" }, "time_to": { "type": "string", "description": "End, inclusive: unix seconds, a date (2026-10-01, through its last second in the account's timezone) or a time with its offset" } }, "required": [ "cols", "rows" ], "additionalProperties": false }, "annotations": { "title": "Two-dimension performance table", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "report_winners", "title": "Rows to scale", "description": "Rows to SCALE: profitable, converting keywords/geos; closers come back as CLOSER. (CLI: p202 report winners)", "inputSchema": { "type": "object", "properties": { "aff_campaign_id": { "type": "string", "description": "Filter by INTERNAL campaign id (from campaign_list), not the public id in tracking URLs", "pattern": "^[0-9]{1,20}$" }, "aff_network_id": { "type": "string", "description": "Filter by affiliate network ID", "pattern": "^[0-9]{1,20}$" }, "breakdown": { "type": "string", "description": "Dimension to triage: campaign, aff_network, ppc_account, ppc_network, landing_page, keyword, country, city, region, browser, platform, device, isp, text_ad, ip, referer, referer_url, device_type, c1, c2, c3, c4, utm_source, utm_medium, utm_campaign, utm_term, utm_content, rotator, rotator_rule (aliases: geo=country, lp=landing_page, network=aff_network, offer=campaign, referrer=referer, referrer_url=referer_url, rule=rotator_rule, source=ppc_account)" }, "country_id": { "type": "string", "description": "Filter by country ID", "pattern": "^[0-9]{1,20}$" }, "first_touch_model": { "type": "string", "description": "Attribution model id for the closer check (default: the first active First touch model)" }, "keyword": { "type": "string", "description": "Only clicks whose keyword contains this text (case-insensitive)" }, "landing_page_id": { "type": "string", "description": "Filter by landing page ID", "pattern": "^[0-9]{1,20}$" }, "max_cpc": { "type": "number", "description": "Break-even CPC target (else payout × each row's CVR, from payout or the campaign)" }, "min_clicks": { "type": "number", "description": "Ignore rows with fewer than N clicks (significance floor)" }, "no_attribution_check": { "type": "boolean", "description": "List classic last-click winners only, without the first-touch closer check" }, "payout": { "type": "number", "description": "Revenue per conversion, e.g. your average order value: each row's break-even CPC is this × its conversion rate, and its profit (total_net) and first-touch ROI value each sale at this. Unlike aff_campaign_id it doesn't filter the report, so the attribution check still runs" }, "period": { "type": "string", "description": "Period: today, yesterday, last7, last14, last30, last90, thismonth, lastmonth, thisyear, lastyear, alltime" }, "ppc_account_id": { "type": "string", "description": "Filter by PPC account ID", "pattern": "^[0-9]{1,20}$" }, "ppc_network_id": { "type": "string", "description": "Filter by PPC network ID, or none for the clicks with no traffic source", "pattern": "^(?:[0-9]{1,20}|none)$" }, "show": { "type": "string", "description": "Which clicks count (default all): all, real, filtered, filtered_bot, leads; real = not filtered, filtered_bot = filtered as bots, leads = converted" }, "time_from": { "type": "string", "description": "Start: unix seconds, a date (2026-10-01, from its first second in the account's timezone) or a time with its offset (2026-10-01T09:30:00Z)" }, "time_to": { "type": "string", "description": "End, inclusive: unix seconds, a date (2026-10-01, through its last second in the account's timezone) or a time with its offset" } }, "additionalProperties": false }, "annotations": { "title": "Rows to scale", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "report_losers", "title": "Rows to cut", "description": "Rows to CUT: over-bid keywords/geos and zero-conversion spend; rows that start sales come back as TEST. (CLI: p202 report losers)", "inputSchema": { "type": "object", "properties": { "aff_campaign_id": { "type": "string", "description": "Filter by INTERNAL campaign id (from campaign_list), not the public id in tracking URLs", "pattern": "^[0-9]{1,20}$" }, "aff_network_id": { "type": "string", "description": "Filter by affiliate network ID", "pattern": "^[0-9]{1,20}$" }, "breakdown": { "type": "string", "description": "Dimension to triage: campaign, aff_network, ppc_account, ppc_network, landing_page, keyword, country, city, region, browser, platform, device, isp, text_ad, ip, referer, referer_url, device_type, c1, c2, c3, c4, utm_source, utm_medium, utm_campaign, utm_term, utm_content, rotator, rotator_rule (aliases: geo=country, lp=landing_page, network=aff_network, offer=campaign, referrer=referer, referrer_url=referer_url, rule=rotator_rule, source=ppc_account)" }, "country_id": { "type": "string", "description": "Filter by country ID", "pattern": "^[0-9]{1,20}$" }, "first_touch_model": { "type": "string", "description": "Attribution model id for the starter check (default: the first active First touch model)" }, "keyword": { "type": "string", "description": "Only clicks whose keyword contains this text (case-insensitive)" }, "landing_page_id": { "type": "string", "description": "Filter by landing page ID", "pattern": "^[0-9]{1,20}$" }, "max_cpc": { "type": "number", "description": "Break-even CPC target (else payout × each row's CVR, from payout or the campaign)" }, "min_assists": { "type": "integer", "description": "A CUT row with at least this many assisted sales comes back as TEST (0 turns the assists rule off)" }, "min_clicks": { "type": "number", "description": "Ignore rows with fewer than N clicks (significance floor)" }, "no_attribution_check": { "type": "boolean", "description": "List classic last-click losers only, without the first-touch starter check" }, "payout": { "type": "number", "description": "Revenue per conversion, e.g. your average order value: each row's break-even CPC is this × its conversion rate, and its profit (total_net) and first-touch ROI value each sale at this. Unlike aff_campaign_id it doesn't filter the report, so the attribution check still runs" }, "period": { "type": "string", "description": "Period: today, yesterday, last7, last14, last30, last90, thismonth, lastmonth, thisyear, lastyear, alltime" }, "ppc_account_id": { "type": "string", "description": "Filter by PPC account ID", "pattern": "^[0-9]{1,20}$" }, "ppc_network_id": { "type": "string", "description": "Filter by PPC network ID, or none for the clicks with no traffic source", "pattern": "^(?:[0-9]{1,20}|none)$" }, "show": { "type": "string", "description": "Which clicks count (default all): all, real, filtered, filtered_bot, leads; real = not filtered, filtered_bot = filtered as bots, leads = converted" }, "time_from": { "type": "string", "description": "Start: unix seconds, a date (2026-10-01, from its first second in the account's timezone) or a time with its offset (2026-10-01T09:30:00Z)" }, "time_to": { "type": "string", "description": "End, inclusive: unix seconds, a date (2026-10-01, through its last second in the account's timezone) or a time with its offset" } }, "additionalProperties": false }, "annotations": { "title": "Rows to cut", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "report_breakeven", "title": "Break-even CPC", "description": "Break-even CPC per row: max biddable click price (payout × conversion rate). (CLI: p202 report breakeven)", "inputSchema": { "type": "object", "properties": { "aff_campaign_id": { "type": "string", "description": "Filter by INTERNAL campaign id (from campaign_list), not the public id in tracking URLs", "pattern": "^[0-9]{1,20}$" }, "aff_network_id": { "type": "string", "description": "Filter by affiliate network ID", "pattern": "^[0-9]{1,20}$" }, "breakdown": { "type": "string", "description": "Dimension: campaign, aff_network, ppc_account, ppc_network, landing_page, keyword, country, city, region, browser, platform, device, isp, text_ad, ip, referer, referer_url, device_type, c1, c2, c3, c4, utm_source, utm_medium, utm_campaign, utm_term, utm_content, rotator, rotator_rule (aliases: geo=country, lp=landing_page, network=aff_network, offer=campaign, referrer=referer, referrer_url=referer_url, rule=rotator_rule, source=ppc_account)" }, "country_id": { "type": "string", "description": "Filter by country ID", "pattern": "^[0-9]{1,20}$" }, "keyword": { "type": "string", "description": "Only clicks whose keyword contains this text (case-insensitive)" }, "landing_page_id": { "type": "string", "description": "Filter by landing page ID", "pattern": "^[0-9]{1,20}$" }, "max_cpc": { "type": "number", "description": "Override the payout-derived break-even CPC target" }, "period": { "type": "string", "description": "Period: today, yesterday, last7, last14, last30, last90, thismonth, lastmonth, thisyear, lastyear, alltime" }, "ppc_account_id": { "type": "string", "description": "Filter by PPC account ID", "pattern": "^[0-9]{1,20}$" }, "ppc_network_id": { "type": "string", "description": "Filter by PPC network ID, or none for the clicks with no traffic source", "pattern": "^(?:[0-9]{1,20}|none)$" }, "show": { "type": "string", "description": "Which clicks count (default all): all, real, filtered, filtered_bot, leads; real = not filtered, filtered_bot = filtered as bots, leads = converted" }, "time_from": { "type": "string", "description": "Start: unix seconds, a date (2026-10-01, from its first second in the account's timezone) or a time with its offset (2026-10-01T09:30:00Z)" }, "time_to": { "type": "string", "description": "End, inclusive: unix seconds, a date (2026-10-01, through its last second in the account's timezone) or a time with its offset" } }, "required": [ "aff_campaign_id" ], "additionalProperties": false }, "annotations": { "title": "Break-even CPC", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "forecast", "title": "Forecast performance", "description": "Forecast future performance metrics using historical data. (CLI: p202 forecast)", "inputSchema": { "type": "object", "properties": { "aff_campaign_id": { "type": "string", "description": "Filter by campaign ID", "pattern": "^[0-9]{1,20}$" }, "aff_network_id": { "type": "string", "description": "Filter by affiliate network ID", "pattern": "^[0-9]{1,20}$" }, "all_metrics": { "type": "boolean", "description": "Forecast clicks, leads, income, cost, and net together via ratio decomposition (coherent output)" }, "anomaly_cycles": { "type": "integer", "description": "Seasonal cycles on each side used as same-weekday/hour references for transient masking" }, "anomaly_sigma": { "type": "number", "description": "Transient-masking threshold in robust sigma units (lower masks more aggressively)" }, "confidence": { "type": "number", "description": "Confidence level for prediction bounds; snaps to the nearest band: 0.50 (p25-p75), 0.80 (p10-p90), or 0.90 (p05-p95, also used for 0.95/0.99)" }, "country_id": { "type": "string", "description": "Filter by country ID", "pattern": "^[0-9]{1,20}$" }, "event_tag": { "type": "string", "description": "Filter forecast events by tag (comma-separated, e.g. us-holidays,promos)" }, "events": { "type": "boolean", "description": "Enable event-aware forecasting using stored forecast events" }, "history": { "type": "string", "description": "Historical data period (aliases: period, days): today, yesterday, last7, last14, last30, last90, thismonth, lastmonth, thisyear, lastyear, alltime" }, "horizon": { "type": "integer", "description": "Number of periods to forecast forward" }, "landing_page_id": { "type": "string", "description": "Filter by landing page ID", "pattern": "^[0-9]{1,20}$" }, "method": { "type": "string", "description": "Forecasting method (auto = ensemble): linear, sma, wma, holtwinters, ensemble, auto" }, "metric": { "type": "string", "description": "Metric to forecast: total_clicks, total_click_throughs, total_leads, total_income, total_cost, total_net, epc, avg_cpc, conv_rate, roi, cpa (aliases: clicks=total_clicks, conversions=total_leads, cost=total_cost, income=total_income, leads=total_leads, net=total_net, profit=total_net, revenue=total_income)" }, "no_anomaly_mask": { "type": "boolean", "description": "Disable transient masking (fit short outlier runs such as tracking outages as data)" }, "no_level_shift": { "type": "boolean", "description": "Disable level-shift detection (fit the full history as-is)" }, "ppc_account_id": { "type": "string", "description": "Filter by PPC account ID", "pattern": "^[0-9]{1,20}$" }, "ppc_network_id": { "type": "string", "description": "Filter by PPC network ID", "pattern": "^(?:[0-9]{1,20}|none)$" }, "seasonal": { "type": "boolean", "description": "Apply a day-of-week profile learned from the fetched history (hour interval also gets an hour-of-day profile)" }, "seasonal_monthly": { "type": "boolean", "description": "Apply day-of-month seasonal adjustment learned from the fetched series (requires interval day)" }, "window": { "type": "integer", "description": "SMA/WMA window size (0 = auto-select)" } }, "required": [ "metric" ], "additionalProperties": false }, "annotations": { "title": "Forecast performance", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "attribution_breakdown", "title": "Attributed conversions by dimension", "description": "Attributed conversions, revenue, cost and ROI by a click dimension; compare_model puts two models side by side. (CLI: p202 attribution breakdown)", "inputSchema": { "type": "object", "properties": { "cohort": { "type": "string", "description": "conversion: the sales made in the range (default); click: what the range's clicks earned, as the classic reports count. Values: conversion, click" }, "compare_model": { "type": "string", "description": "A second model id, side by side" }, "group_by": { "type": "string", "description": "Dimension: campaign, traffic_source, landing_page, keyword, c1, c2, c3, c4, country, device, day" }, "keys": { "type": "string", "description": "Only these rows: up to 1000 row keys (data[].key), comma-separated" }, "limit": { "type": "string", "description": "Rows, 1-1000 (default 100)" }, "model": { "type": "string", "description": "Model id (default: each campaign's override, else the account default)" }, "offset": { "type": "string", "description": "Rows to skip, for paging past limit (meta.groups is the total; needs a server with attribution paging)" }, "period": { "type": "string", "description": "Range (default: the last 30 days): today, yesterday, last7, last14, last30, last90, thismonth, lastmonth, thisyear, lastyear, alltime" }, "time_from": { "type": "string", "description": "Range start, unix seconds" }, "time_to": { "type": "string", "description": "Range end, unix seconds" } }, "additionalProperties": false }, "annotations": { "title": "Attributed conversions by dimension", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "campaign_list", "title": "List campaigns", "description": "List campaigns (affiliate offers with URLs, payouts, and postback settings). (CLI: p202 campaign list)", "inputSchema": { "type": "object", "properties": { "aff_network_id": { "type": "string", "description": "Filter by affiliate network ID (from aff_network_list)", "pattern": "^[0-9]{1,20}$" }, "all": { "type": "boolean", "description": "Fetch all rows across pages" }, "days": { "type": "integer", "description": "Stats window for with_stats in days, ending now (ignored when period is given)" }, "limit": { "type": "string", "description": "Max results" }, "min_clicks": { "type": "integer", "description": "With with_stats: only campaigns with at least N clicks in the window (searches every page)" }, "offset": { "type": "string", "description": "Pagination offset" }, "page": { "type": "string", "description": "Page number" }, "period": { "type": "string", "description": "Stats window for with_stats (default last30): today, yesterday, last7, last14, last30, last90, thismonth, lastmonth, thisyear, lastyear, alltime" }, "resolve_names": { "type": "boolean", "description": "Resolve foreign key IDs to names" }, "url_contains": { "type": "string", "description": "Only campaigns with a URL containing this text (case-insensitive; searches every page; fields: aff_campaign_url, aff_campaign_url_2, aff_campaign_url_3, aff_campaign_url_4, aff_campaign_url_5)" }, "with_stats": { "type": "boolean", "description": "Add each campaign's traffic in the window: total_clicks, total_leads, total_income, total_cost, total_net (0 when none; needs the reports:read scope)" } }, "additionalProperties": false }, "annotations": { "title": "List campaigns", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "campaign_get", "title": "Get a campaign", "description": "Get a campaign by ID. (CLI: p202 campaign get)", "inputSchema": { "type": "object", "properties": { "id": { "type": "string", "description": "Campaign id (from campaign_list).", "pattern": "^[0-9]{1,20}$" }, "public": { "type": "boolean", "description": "Treat the id as the public aff_campaign_id_public" } }, "required": [ "id" ], "additionalProperties": false }, "annotations": { "title": "Get a campaign", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "campaign_optimize", "title": "Diagnose a campaign", "description": "Diagnose a campaign and recommend a salvage offer for its traffic. (CLI: p202 campaign optimize)", "inputSchema": { "type": "object", "properties": { "aff_network_id": { "type": "string", "description": "Filter by affiliate network ID", "pattern": "^[0-9]{1,20}$" }, "campaign_id": { "type": "string", "description": "Campaign id (from campaign_list).", "pattern": "^[0-9]{1,20}$" }, "country_id": { "type": "string", "description": "Filter by country ID", "pattern": "^[0-9]{1,20}$" }, "keyword": { "type": "string", "description": "Only clicks whose keyword contains this text (case-insensitive)" }, "landing_page_id": { "type": "string", "description": "Filter by landing page ID", "pattern": "^[0-9]{1,20}$" }, "period": { "type": "string", "description": "Period: today, yesterday, last7, last14, last30, last90, thismonth, lastmonth, thisyear, lastyear, alltime" }, "ppc_account_id": { "type": "string", "description": "Filter by PPC account ID", "pattern": "^[0-9]{1,20}$" }, "ppc_network_id": { "type": "string", "description": "Filter by PPC network ID, or none for the clicks with no traffic source", "pattern": "^(?:[0-9]{1,20}|none)$" }, "show": { "type": "string", "description": "Which clicks count (default all): all, real, filtered, filtered_bot, leads; real = not filtered, filtered_bot = filtered as bots, leads = converted" }, "time_from": { "type": "string", "description": "Start: unix seconds, a date (2026-10-01, from its first second in the account's timezone) or a time with its offset (2026-10-01T09:30:00Z)" }, "time_to": { "type": "string", "description": "End, inclusive: unix seconds, a date (2026-10-01, through its last second in the account's timezone) or a time with its offset" } }, "required": [ "campaign_id" ], "additionalProperties": false }, "annotations": { "title": "Diagnose a campaign", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "campaign_create", "title": "Create a campaign", "description": "Create a new campaign. (CLI: p202 campaign create)", "inputSchema": { "type": "object", "properties": { "aff_campaign_cloaking": { "type": "string", "description": "Enable cloaking (1) or not (0): 0, 1" }, "aff_campaign_currency": { "type": "string", "description": "Currency code (e.g. USD)" }, "aff_campaign_foreign_payout": { "type": "string", "description": "Foreign currency payout" }, "aff_campaign_name": { "type": "string", "description": "Campaign name (required)" }, "aff_campaign_payout": { "type": "string", "description": "Default payout (required)" }, "aff_campaign_rotate": { "type": "string", "description": "Enable rotation (1) or not (0): 0, 1" }, "aff_campaign_url": { "type": "string", "description": "Primary offer URL (required)" }, "aff_campaign_url_2": { "type": "string", "description": "Offer URL 2 (used with aff_campaign_rotate 1)" }, "aff_campaign_url_3": { "type": "string", "description": "Offer URL 3" }, "aff_campaign_url_4": { "type": "string", "description": "Offer URL 4" }, "aff_campaign_url_5": { "type": "string", "description": "Offer URL 5" }, "aff_network_id": { "type": "string", "description": "Category (affiliate network) id, from aff_network_list (required)", "pattern": "^[0-9]{1,20}$" }, "app_registration_id": { "type": "string", "description": "The Android app registration this campaign's store links install (`p202 app list platform android`; 0 unlinks). An install of another app on its click is foreign_click", "pattern": "^[0-9]{1,20}$" }, "attribution_model_id": { "type": "string", "description": "The attribution model this campaign's conversions are credited with, overriding the account default (`p202 attribution model list`; 0 returns it to the default)", "pattern": "^[0-9]{1,20}$" }, "identity_signals": { "type": "string", "description": "Link this campaign's clicks into multi-touch journeys (1, default) or not (0): 0, 1" }, "payout_mode": { "type": "string", "description": "How conversions set a click's value, replace (latest payout, default) or accumulate (sum): replace, accumulate" } }, "required": [ "aff_campaign_name", "aff_campaign_payout", "aff_campaign_url", "aff_network_id" ], "additionalProperties": false }, "annotations": { "title": "Create a campaign", "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } }, { "name": "campaign_clone", "title": "Clone a campaign", "description": "Clone a campaign. (CLI: p202 campaign clone)", "inputSchema": { "type": "object", "properties": { "id": { "type": "string", "description": "Id of the campaign to copy (from campaign_list).", "pattern": "^[0-9]{1,20}$" }, "name": { "type": "string", "description": "Optional name override for the cloned campaign" } }, "required": [ "id" ], "additionalProperties": false }, "annotations": { "title": "Clone a campaign", "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } }, { "name": "campaign_update", "title": "Update a campaign", "description": "Update a campaign. (CLI: p202 campaign update)", "inputSchema": { "type": "object", "properties": { "aff_campaign_cloaking": { "type": "string", "description": "Enable cloaking (1) or not (0): 0, 1" }, "aff_campaign_currency": { "type": "string", "description": "Currency code (e.g. USD)" }, "aff_campaign_foreign_payout": { "type": "string", "description": "Foreign currency payout" }, "aff_campaign_name": { "type": "string", "description": "Campaign name" }, "aff_campaign_payout": { "type": "string", "description": "Default payout" }, "aff_campaign_rotate": { "type": "string", "description": "Enable rotation (1) or not (0): 0, 1" }, "aff_campaign_url": { "type": "string", "description": "Primary offer URL" }, "aff_campaign_url_2": { "type": "string", "description": "Offer URL 2 (used with aff_campaign_rotate 1) (\"\" clears it)" }, "aff_campaign_url_3": { "type": "string", "description": "Offer URL 3 (\"\" clears it)" }, "aff_campaign_url_4": { "type": "string", "description": "Offer URL 4 (\"\" clears it)" }, "aff_campaign_url_5": { "type": "string", "description": "Offer URL 5 (\"\" clears it)" }, "aff_network_id": { "type": "string", "description": "Category (affiliate network) id, from aff_network_list", "pattern": "^[0-9]{1,20}$" }, "app_registration_id": { "type": "string", "description": "The Android app registration this campaign's store links install (`p202 app list platform android`; 0 unlinks). An install of another app on its click is foreign_click", "pattern": "^[0-9]{1,20}$" }, "attribution_model_id": { "type": "string", "description": "The attribution model this campaign's conversions are credited with, overriding the account default (`p202 attribution model list`; 0 returns it to the default)", "pattern": "^[0-9]{1,20}$" }, "id": { "type": "string", "description": "Campaign id (from campaign_list).", "pattern": "^[0-9]{1,20}$" }, "identity_signals": { "type": "string", "description": "Link this campaign's clicks into multi-touch journeys (1, default) or not (0): 0, 1" }, "payout_mode": { "type": "string", "description": "How conversions set a click's value, replace (latest payout, default) or accumulate (sum): replace, accumulate" } }, "required": [ "id" ], "additionalProperties": false }, "annotations": { "title": "Update a campaign", "readOnlyHint": false, "destructiveHint": true, "idempotentHint": false, "openWorldHint": false } }, { "name": "campaign_delete", "title": "Delete a campaign", "description": "Delete a campaign. It deletes as soon as the call is approved: call it with dry_run: true first and show the user what it would remove. (CLI: p202 campaign delete)", "inputSchema": { "type": "object", "properties": { "dry_run": { "type": "boolean", "description": "Preview what the delete would remove (record + cascade counts) without deleting" }, "id": { "type": "string", "description": "Campaign id (from campaign_list); or give ids for several.", "pattern": "^[0-9]{1,20}$" }, "ids": { "type": "string", "description": "Comma-separated campaign IDs to delete in bulk" } }, "additionalProperties": false }, "annotations": { "title": "Delete a campaign", "readOnlyHint": false, "destructiveHint": true, "idempotentHint": true, "openWorldHint": false } }, { "name": "tracker_list", "title": "List trackers", "description": "List trackers (tracking links that tie a traffic source to a campaign and landing page). (CLI: p202 tracker list)", "inputSchema": { "type": "object", "properties": { "aff_campaign_id": { "type": "string", "description": "Filter by campaign ID (from campaign_list)", "pattern": "^[0-9]{1,20}$" }, "all": { "type": "boolean", "description": "Fetch all rows across pages" }, "landing_page_id": { "type": "string", "description": "Filter by landing page ID (from landing_page_list)", "pattern": "^[0-9]{1,20}$" }, "limit": { "type": "string", "description": "Max results" }, "offset": { "type": "string", "description": "Pagination offset" }, "page": { "type": "string", "description": "Page number" }, "ppc_account_id": { "type": "string", "description": "Filter by PPC account ID (from ppc_account_list)", "pattern": "^[0-9]{1,20}$" }, "resolve_names": { "type": "boolean", "description": "Resolve foreign key IDs to names" }, "rotator_id": { "type": "string", "description": "Filter by rotator ID (from rotator_list)", "pattern": "^[0-9]{1,20}$" } }, "additionalProperties": false }, "annotations": { "title": "List trackers", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "tracker_get", "title": "Get a tracker", "description": "Get a tracker by ID. (CLI: p202 tracker get)", "inputSchema": { "type": "object", "properties": { "id": { "type": "string", "description": "Tracker id (from tracker_list).", "pattern": "^[0-9]{1,20}$" }, "public": { "type": "boolean", "description": "Treat the id as the public tracker_id_public" } }, "required": [ "id" ], "additionalProperties": false }, "annotations": { "title": "Get a tracker", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "tracker_get_url", "title": "Get a tracking link", "description": "Get tracking URL for a tracker. (CLI: p202 tracker get-url)", "inputSchema": { "type": "object", "properties": { "c1": { "type": "string", "description": "Value for c1 in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" }, "c2": { "type": "string", "description": "Value for c2 in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" }, "c3": { "type": "string", "description": "Value for c3 in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" }, "c4": { "type": "string", "description": "Value for c4 in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" }, "id": { "type": "string", "description": "Tracker id (from tracker_list).", "pattern": "^[0-9]{1,20}$" }, "t202b": { "type": "string", "description": "Value for t202b in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" }, "t202kw": { "type": "string", "description": "Value for t202kw in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" }, "t202ref": { "type": "string", "description": "Value for t202ref in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" }, "utm_campaign": { "type": "string", "description": "Value for utm_campaign in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" }, "utm_content": { "type": "string", "description": "Value for utm_content in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" }, "utm_medium": { "type": "string", "description": "Value for utm_medium in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" }, "utm_source": { "type": "string", "description": "Value for utm_source in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" }, "utm_term": { "type": "string", "description": "Value for utm_term in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" } }, "required": [ "id" ], "additionalProperties": false }, "annotations": { "title": "Get a tracking link", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "tracker_create_with_url", "title": "Create a tracking link", "description": "Create a tracker and return its tracking URL. (CLI: p202 tracker create-with-url)", "inputSchema": { "type": "object", "properties": { "aff_campaign_id": { "type": "string", "description": "Campaign ID (from campaign_list); 0 for a link to a redirector (rotator_id) or an advanced landing page", "pattern": "^[0-9]{1,20}$" }, "c1": { "type": "string", "description": "Value for c1 in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" }, "c2": { "type": "string", "description": "Value for c2 in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" }, "c3": { "type": "string", "description": "Value for c3 in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" }, "c4": { "type": "string", "description": "Value for c4 in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" }, "click_cloaking": { "type": "string", "description": "Cloaking: 1 on, 0 off, -1 use the campaign's setting: -1, 0, 1", "enum": [ "-1", "0", "1" ] }, "click_cpa": { "type": "string", "description": "Cost per action, 0-99.99999; on update, makes the tracker CPA and clears its cost per click. Not with click_cpc" }, "click_cpc": { "type": "string", "description": "Cost per click, 0-99.99999; on update, makes the tracker CPC and clears its cost per action" }, "landing_page_id": { "type": "string", "description": "Landing page ID", "pattern": "^[0-9]{1,20}$" }, "ppc_account_id": { "type": "string", "description": "PPC account ID", "pattern": "^[0-9]{1,20}$" }, "rotator_id": { "type": "string", "description": "Rotator ID", "pattern": "^[0-9]{1,20}$" }, "t202b": { "type": "string", "description": "Value for t202b in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" }, "t202kw": { "type": "string", "description": "Value for t202kw in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" }, "t202ref": { "type": "string", "description": "Value for t202ref in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" }, "text_ad_id": { "type": "string", "description": "Text ad ID", "pattern": "^[0-9]{1,20}$" }, "tracker_id_public": { "type": "string", "description": "Public tracker ID" }, "utm_campaign": { "type": "string", "description": "Value for utm_campaign in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" }, "utm_content": { "type": "string", "description": "Value for utm_content in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" }, "utm_medium": { "type": "string", "description": "Value for utm_medium in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" }, "utm_source": { "type": "string", "description": "Value for utm_source in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" }, "utm_term": { "type": "string", "description": "Value for utm_term in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" } }, "additionalProperties": false }, "annotations": { "title": "Create a tracking link", "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } }, { "name": "tracker_update", "title": "Update a tracker", "description": "Update a tracker. (CLI: p202 tracker update)", "inputSchema": { "type": "object", "properties": { "aff_campaign_id": { "type": "string", "description": "Campaign ID (from campaign_list); 0 for a link to a redirector (rotator_id) or an advanced landing page", "pattern": "^[0-9]{1,20}$" }, "click_cloaking": { "type": "string", "description": "Cloaking: 1 on, 0 off, -1 use the campaign's setting: -1, 0, 1", "enum": [ "-1", "0", "1" ] }, "click_cpa": { "type": "string", "description": "Cost per action, 0-99.99999; on update, makes the tracker CPA and clears its cost per click. Not with click_cpc" }, "click_cpc": { "type": "string", "description": "Cost per click, 0-99.99999; on update, makes the tracker CPC and clears its cost per action" }, "id": { "type": "string", "description": "Tracker id (from tracker_list).", "pattern": "^[0-9]{1,20}$" }, "landing_page_id": { "type": "string", "description": "Landing page ID (from landing_page_list)", "pattern": "^[0-9]{1,20}$" }, "ppc_account_id": { "type": "string", "description": "PPC account ID (from ppc_account_list)", "pattern": "^[0-9]{1,20}$" }, "rotator_id": { "type": "string", "description": "Rotator ID (from rotator_list)", "pattern": "^[0-9]{1,20}$" }, "text_ad_id": { "type": "string", "description": "Text ad ID (from text_ad_list)", "pattern": "^[0-9]{1,20}$" }, "tracker_id_public": { "type": "string", "description": "Public tracker ID" } }, "required": [ "id" ], "additionalProperties": false }, "annotations": { "title": "Update a tracker", "readOnlyHint": false, "destructiveHint": true, "idempotentHint": false, "openWorldHint": false } }, { "name": "tracker_delete", "title": "Delete a tracker", "description": "Delete a tracker. Its tracking links stop working, including any running in ads. It deletes as soon as the call is approved: call it with dry_run: true first and show the user what it would remove. (CLI: p202 tracker delete)", "inputSchema": { "type": "object", "properties": { "dry_run": { "type": "boolean", "description": "Preview what the delete would remove (record + cascade counts) without deleting" }, "id": { "type": "string", "description": "Tracker id (from tracker_list); or give ids for several.", "pattern": "^[0-9]{1,20}$" }, "ids": { "type": "string", "description": "Comma-separated tracker IDs to delete in bulk" } }, "additionalProperties": false }, "annotations": { "title": "Delete a tracker", "readOnlyHint": false, "destructiveHint": true, "idempotentHint": true, "openWorldHint": false } }, { "name": "landing_page_list", "title": "List landing pages", "description": "List landing pages (pre-sell pages visitors see before the offer). (CLI: p202 landing-page list)", "inputSchema": { "type": "object", "properties": { "aff_campaign_id": { "type": "string", "description": "Filter by campaign ID (from campaign_list)", "pattern": "^[0-9]{1,20}$" }, "all": { "type": "boolean", "description": "Fetch all rows across pages" }, "limit": { "type": "string", "description": "Max results" }, "offset": { "type": "string", "description": "Pagination offset" }, "page": { "type": "string", "description": "Page number" }, "resolve_names": { "type": "boolean", "description": "Resolve foreign key IDs to names" }, "url_contains": { "type": "string", "description": "Only landing-pages with a URL containing this text (case-insensitive; searches every page; fields: landing_page_url, leave_behind_page_url)" } }, "additionalProperties": false }, "annotations": { "title": "List landing pages", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "landing_page_get", "title": "Get a landing page", "description": "Get a landing-page by ID. (CLI: p202 landing-page get)", "inputSchema": { "type": "object", "properties": { "id": { "type": "string", "description": "Landing page id (from landing_page_list).", "pattern": "^[0-9]{1,20}$" }, "public": { "type": "boolean", "description": "Treat the id as the public landing_page_id_public" } }, "required": [ "id" ], "additionalProperties": false }, "annotations": { "title": "Get a landing page", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "landing_page_code", "title": "Get landing page tracking code", "description": "Print a landing page's tracking code (Setup > Get LP Code). (CLI: p202 landing-page code)", "inputSchema": { "type": "object", "properties": { "id": { "type": "string", "description": "Landing page id (from landing_page_list).", "pattern": "^[0-9]{1,20}$" }, "offer": { "type": "array", "description": "An advanced page's offer, campaign:ID or rotator:ID; repeat the flag (or comma-separate) for each, in order", "items": { "type": "string" } } }, "required": [ "id" ], "additionalProperties": false }, "annotations": { "title": "Get landing page tracking code", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "landing_page_create", "title": "Create a landing page", "description": "Create a new landing-page. (CLI: p202 landing-page create)", "inputSchema": { "type": "object", "properties": { "aff_campaign_id": { "type": "string", "description": "Campaign ID (from campaign_list); 0 for an advanced landing page (landing_page_type 1), which promotes several offers (required)", "pattern": "^[0-9]{1,20}$" }, "landing_page_nickname": { "type": "string", "description": "Landing page nickname (required)" }, "landing_page_type": { "type": "string", "description": "Landing page type: 0 simple (one campaign), 1 advanced (several offers; aff_campaign_id 0)" }, "landing_page_url": { "type": "string", "description": "Landing page URL (required)" }, "leave_behind_page_url": { "type": "string", "description": "Leave-behind page URL" } }, "required": [ "aff_campaign_id", "landing_page_nickname", "landing_page_url" ], "additionalProperties": false }, "annotations": { "title": "Create a landing page", "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } }, { "name": "landing_page_update", "title": "Update a landing page", "description": "Update a landing-page. (CLI: p202 landing-page update)", "inputSchema": { "type": "object", "properties": { "aff_campaign_id": { "type": "string", "description": "Campaign ID (from campaign_list); 0 for an advanced landing page (landing_page_type 1), which promotes several offers", "pattern": "^[0-9]{1,20}$" }, "id": { "type": "string", "description": "Landing page id (from landing_page_list).", "pattern": "^[0-9]{1,20}$" }, "landing_page_nickname": { "type": "string", "description": "Landing page nickname" }, "landing_page_type": { "type": "string", "description": "Landing page type: 0 simple (one campaign), 1 advanced (several offers; aff_campaign_id 0)" }, "landing_page_url": { "type": "string", "description": "Landing page URL" }, "leave_behind_page_url": { "type": "string", "description": "Leave-behind page URL (\"\" clears it)" } }, "required": [ "id" ], "additionalProperties": false }, "annotations": { "title": "Update a landing page", "readOnlyHint": false, "destructiveHint": true, "idempotentHint": false, "openWorldHint": false } }, { "name": "landing_page_delete", "title": "Delete a landing page", "description": "Delete a landing-page. It deletes as soon as the call is approved: call it with dry_run: true first and show the user what it would remove. (CLI: p202 landing-page delete)", "inputSchema": { "type": "object", "properties": { "dry_run": { "type": "boolean", "description": "Preview what the delete would remove (record + cascade counts) without deleting" }, "id": { "type": "string", "description": "Landing page id (from landing_page_list); or give ids for several.", "pattern": "^[0-9]{1,20}$" }, "ids": { "type": "string", "description": "Comma-separated landing-page IDs to delete in bulk" } }, "additionalProperties": false }, "annotations": { "title": "Delete a landing page", "readOnlyHint": false, "destructiveHint": true, "idempotentHint": true, "openWorldHint": false } }, { "name": "ppc_network_list", "title": "List traffic sources", "description": "List traffic source networks (PPC networks). (CLI: p202 ppc-network list)", "inputSchema": { "type": "object", "properties": { "all": { "type": "boolean", "description": "Fetch all rows across pages" }, "limit": { "type": "string", "description": "Max results" }, "offset": { "type": "string", "description": "Pagination offset" }, "page": { "type": "string", "description": "Page number" }, "resolve_names": { "type": "boolean", "description": "Resolve foreign key IDs to names" } }, "additionalProperties": false }, "annotations": { "title": "List traffic sources", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "ppc_network_create", "title": "Create a traffic source", "description": "Create a new ppc-network. (CLI: p202 ppc-network create)", "inputSchema": { "type": "object", "properties": { "ppc_network_name": { "type": "string", "description": "Network name (required)" } }, "required": [ "ppc_network_name" ], "additionalProperties": false }, "annotations": { "title": "Create a traffic source", "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } }, { "name": "ppc_account_list", "title": "List traffic source accounts", "description": "List traffic sources (PPC accounts). (CLI: p202 ppc-account list)", "inputSchema": { "type": "object", "properties": { "all": { "type": "boolean", "description": "Fetch all rows across pages" }, "limit": { "type": "string", "description": "Max results" }, "offset": { "type": "string", "description": "Pagination offset" }, "page": { "type": "string", "description": "Page number" }, "ppc_network_id": { "type": "string", "description": "Filter by PPC network ID (from ppc_network_list)", "pattern": "^(?:[0-9]{1,20}|none)$" }, "resolve_names": { "type": "boolean", "description": "Resolve foreign key IDs to names" } }, "additionalProperties": false }, "annotations": { "title": "List traffic source accounts", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "ppc_account_create", "title": "Create a traffic source account", "description": "Create a new ppc-account. (CLI: p202 ppc-account create)", "inputSchema": { "type": "object", "properties": { "ppc_account_default": { "type": "string", "description": "Set as default account (1) or not (0): 0, 1" }, "ppc_account_name": { "type": "string", "description": "Account name (required)" }, "ppc_network_id": { "type": "string", "description": "PPC network ID (from ppc_network_list) (required)", "pattern": "^(?:[0-9]{1,20}|none)$" } }, "required": [ "ppc_account_name", "ppc_network_id" ], "additionalProperties": false }, "annotations": { "title": "Create a traffic source account", "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } }, { "name": "aff_network_list", "title": "List categories", "description": "List categories (affiliate networks). (CLI: p202 aff-network list)", "inputSchema": { "type": "object", "properties": { "all": { "type": "boolean", "description": "Fetch all rows across pages" }, "limit": { "type": "string", "description": "Max results" }, "offset": { "type": "string", "description": "Pagination offset" }, "page": { "type": "string", "description": "Page number" }, "resolve_names": { "type": "boolean", "description": "Resolve foreign key IDs to names" } }, "additionalProperties": false }, "annotations": { "title": "List categories", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "aff_network_create", "title": "Create a category", "description": "Create a new aff-network. (CLI: p202 aff-network create)", "inputSchema": { "type": "object", "properties": { "aff_network_name": { "type": "string", "description": "Network name (required)" }, "dni_network_id": { "type": "string", "description": "DNI network ID", "pattern": "^[0-9]{1,20}$" } }, "required": [ "aff_network_name" ], "additionalProperties": false }, "annotations": { "title": "Create a category", "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } }, { "name": "text_ad_list", "title": "List text ads", "description": "List text ads (ad creatives with headline, description, and display URL). (CLI: p202 text-ad list)", "inputSchema": { "type": "object", "properties": { "aff_campaign_id": { "type": "string", "description": "Filter by campaign ID (from campaign_list)", "pattern": "^[0-9]{1,20}$" }, "all": { "type": "boolean", "description": "Fetch all rows across pages" }, "limit": { "type": "string", "description": "Max results" }, "offset": { "type": "string", "description": "Pagination offset" }, "page": { "type": "string", "description": "Page number" }, "resolve_names": { "type": "boolean", "description": "Resolve foreign key IDs to names" } }, "additionalProperties": false }, "annotations": { "title": "List text ads", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "rotator_list", "title": "List rotators", "description": "List all redirectors/rotators. (CLI: p202 rotator list)", "inputSchema": { "type": "object", "properties": { "all": { "type": "boolean", "description": "Fetch all rows across pages" }, "limit": { "type": "string", "description": "Max results" }, "offset": { "type": "string", "description": "Pagination offset" } }, "additionalProperties": false }, "annotations": { "title": "List rotators", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "rotator_get", "title": "Get a rotator and its rules", "description": "Get a redirector/rotator and its routing rules by ID. (CLI: p202 rotator get)", "inputSchema": { "type": "object", "properties": { "id": { "type": "string", "description": "Rotator id (from rotator_list).", "pattern": "^[0-9]{1,20}$" } }, "required": [ "id" ], "additionalProperties": false }, "annotations": { "title": "Get a rotator and its rules", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "rotator_stats", "title": "Rotator performance", "description": "Show a rotator's performance: its totals, each rule, and its default (clicks no rule matched). (CLI: p202 rotator stats)", "inputSchema": { "type": "object", "properties": { "aff_campaign_id": { "type": "string", "description": "Filter by INTERNAL campaign id (from campaign_list), not the public id in tracking URLs", "pattern": "^[0-9]{1,20}$" }, "aff_network_id": { "type": "string", "description": "Filter by affiliate network ID", "pattern": "^[0-9]{1,20}$" }, "country_id": { "type": "string", "description": "Filter by country ID", "pattern": "^[0-9]{1,20}$" }, "id": { "type": "string", "description": "Rotator id (from rotator_list).", "pattern": "^[0-9]{1,20}$" }, "keyword": { "type": "string", "description": "Only clicks whose keyword contains this text (case-insensitive)" }, "landing_page_id": { "type": "string", "description": "Filter by landing page ID", "pattern": "^[0-9]{1,20}$" }, "period": { "type": "string", "description": "Period: today, yesterday, last7, last14, last30, last90, thismonth, lastmonth, thisyear, lastyear, alltime" }, "ppc_account_id": { "type": "string", "description": "Filter by PPC account ID", "pattern": "^[0-9]{1,20}$" }, "ppc_network_id": { "type": "string", "description": "Filter by PPC network ID, or none for the clicks with no traffic source", "pattern": "^(?:[0-9]{1,20}|none)$" }, "show": { "type": "string", "description": "Which clicks count (default all): all, real, filtered, filtered_bot, leads; real = not filtered, filtered_bot = filtered as bots, leads = converted" }, "time_from": { "type": "string", "description": "Start: unix seconds, a date (2026-10-01, from its first second in the account's timezone) or a time with its offset (2026-10-01T09:30:00Z)" }, "time_to": { "type": "string", "description": "End, inclusive: unix seconds, a date (2026-10-01, through its last second in the account's timezone) or a time with its offset" } }, "required": [ "id" ], "additionalProperties": false }, "annotations": { "title": "Rotator performance", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "click_list", "title": "List clicks", "description": "List tracked clicks with optional filters by campaign, time range, or bot status. (CLI: p202 click list)", "inputSchema": { "type": "object", "properties": { "aff_campaign_id": { "type": "string", "description": "Filter by INTERNAL campaign id (from campaign_list), not the public id in tracking URLs", "pattern": "^[0-9]{1,20}$" }, "aff_network_id": { "type": "string", "description": "Filter by affiliate network ID", "pattern": "^[0-9]{1,20}$" }, "all": { "type": "boolean", "description": "Fetch all rows across pages" }, "browser_id": { "type": "string", "description": "Filter by browser ID (the id of a `breakdown browser` row)", "pattern": "^[0-9]{1,20}$" }, "click_bot": { "type": "string", "description": "Filter: 0=human, 1=bot: 0, 1" }, "click_lead": { "type": "string", "description": "Filter: 0=clicks only, 1=conversions only: 0, 1" }, "country_id": { "type": "string", "description": "Filter by country ID", "pattern": "^[0-9]{1,20}$" }, "device_type": { "type": "string", "description": "Filter by device type ID: 1 Desktop, 2 Mobile, 3 Tablet, 4 Bot (the ids of `breakdown device_type` rows)" }, "ip": { "type": "string", "description": "Only clicks from this one IP address, IPv4 or IPv6" }, "isp_id": { "type": "string", "description": "Filter by ISP/carrier ID (the id of a `breakdown isp` row)", "pattern": "^[0-9]{1,20}$" }, "keyword": { "type": "string", "description": "Only clicks whose keyword contains this text (case-insensitive)" }, "landing_page_id": { "type": "string", "description": "Filter by landing page ID", "pattern": "^[0-9]{1,20}$" }, "limit": { "type": "string", "description": "Max results" }, "method_of_promotion": { "type": "string", "description": "Only direct-link clicks or only landing-page clicks: directlink, landingpage" }, "offset": { "type": "string", "description": "Pagination offset" }, "page": { "type": "string", "description": "Page number (maps to offset)" }, "period": { "type": "string", "description": "Period: today, yesterday, last7, last14, last30, last90, thismonth, lastmonth, thisyear, lastyear, alltime" }, "platform_id": { "type": "string", "description": "Filter by platform (OS) ID (the id of a `breakdown platform` row)", "pattern": "^[0-9]{1,20}$" }, "ppc_account_id": { "type": "string", "description": "Filter by PPC account ID", "pattern": "^[0-9]{1,20}$" }, "ppc_network_id": { "type": "string", "description": "Filter by PPC network ID, or none for the clicks with no traffic source", "pattern": "^(?:[0-9]{1,20}|none)$" }, "referer": { "type": "string", "description": "Only clicks whose referring URL contains this text (case-insensitive)" }, "region_id": { "type": "string", "description": "Filter by region ID (the id of a `breakdown region` row)", "pattern": "^[0-9]{1,20}$" }, "show": { "type": "string", "description": "Which clicks count (default all): all, real, filtered, filtered_bot, leads; real = not filtered, filtered_bot = filtered as bots, leads = converted" }, "text_ad_id": { "type": "string", "description": "Filter by text ad ID", "pattern": "^[0-9]{1,20}$" }, "time_from": { "type": "string", "description": "Start: unix seconds, a date (2026-10-01, from its first second in the account's timezone) or a time with its offset (2026-10-01T09:30:00Z)" }, "time_to": { "type": "string", "description": "End, inclusive: unix seconds, a date (2026-10-01, through its last second in the account's timezone) or a time with its offset" } }, "additionalProperties": false }, "annotations": { "title": "List clicks", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "click_get", "title": "Get a click", "description": "Get a click by ID. (CLI: p202 click get)", "inputSchema": { "type": "object", "properties": { "id": { "type": "string", "description": "Click id (from click_list).", "pattern": "^[0-9]{1,20}$" } }, "required": [ "id" ], "additionalProperties": false }, "annotations": { "title": "Get a click", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "click_conversions", "title": "Explain a click's conversions", "description": "Explain a click's value: every conversion on it, whether it counts, and why not. (CLI: p202 click conversions)", "inputSchema": { "type": "object", "properties": { "click_id": { "type": "string", "description": "Click id (from click_list).", "pattern": "^[0-9]{1,20}$" } }, "required": [ "click_id" ], "additionalProperties": false }, "annotations": { "title": "Explain a click's conversions", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "conversion_list", "title": "List conversions", "description": "List conversions. (CLI: p202 conversion list)", "inputSchema": { "type": "object", "properties": { "aff_campaign_id": { "type": "string", "description": "Filter by campaign ID", "pattern": "^[0-9]{1,20}$" }, "all": { "type": "boolean", "description": "Fetch all rows across pages" }, "click_id": { "type": "string", "description": "Only this click's conversions (see also `p202 click conversions <id>`)", "pattern": "^[0-9]{1,20}$" }, "goal": { "type": "string", "description": "Only this goal's outcomes, every version (goal id from `p202 goal list`)" }, "limit": { "type": "string", "description": "Max results" }, "offset": { "type": "string", "description": "Pagination offset" }, "source": { "type": "string", "description": "Only conversions from this source: pixel, postback, universal_pixel, api, subid_upload, revenue_upload, legacy_pixel, clickbank, app_install, goal, legacy_baseline" }, "time_from": { "type": "string", "description": "Start: unix seconds, a date (2026-10-01, from its first second in the account's timezone) or a time with its offset (2026-10-01T09:30:00Z)" }, "time_to": { "type": "string", "description": "End, inclusive: unix seconds, a date (2026-10-01, through its last second in the account's timezone) or a time with its offset" } }, "additionalProperties": false }, "annotations": { "title": "List conversions", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "conversion_get", "title": "Get a conversion", "description": "Get a conversion by ID. (CLI: p202 conversion get)", "inputSchema": { "type": "object", "properties": { "id": { "type": "string", "description": "Conversion id (from conversion_list).", "pattern": "^[0-9]{1,20}$" } }, "required": [ "id" ], "additionalProperties": false }, "annotations": { "title": "Get a conversion", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "conversion_postback_url", "title": "Get the postback URL", "description": "Print the server-to-server postback URL to give your affiliate network (Setup > Postback / Pixel). (CLI: p202 conversion postback-url)", "inputSchema": { "type": "object", "properties": { "amount": { "type": "string", "description": "Amount: a number, or your network's payout macro such as {payout}; empty pays the campaign's payout" }, "campaign": { "type": "string", "description": "Campaign ID the advanced pixel reports under (fills cid; from p202 campaign list)" }, "scheme": { "type": "string", "description": "http or https (default: the scheme the tracking domain is reached on): http, https" }, "subid": { "type": "string", "description": "Your network's sub id macro, such as {aff_sub}, #s1#, xxC1xx or [=SID=]; empty leaves subid= for you to fill" }, "type": { "type": "string", "description": "Pixel type: simple, advanced (default simple; advanced when campaign is given): simple, advanced" } }, "additionalProperties": false }, "annotations": { "title": "Get the postback URL", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "change_list", "title": "List proposed changes", "description": "List staged changes (yours; all for every user's, admin only). (CLI: p202 change list)", "inputSchema": { "type": "object", "properties": { "all": { "type": "boolean", "description": "Every user's changes, not just yours (admin only)" }, "status": { "type": "string", "description": "Filter by status: staged, applying, applied, discarded, apply_interrupted" } }, "additionalProperties": false }, "annotations": { "title": "List proposed changes", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "change_show", "title": "Show a proposed change", "description": "Show one staged change, including its payload and preview. (CLI: p202 change show)", "inputSchema": { "type": "object", "properties": { "change_id": { "type": "string", "description": "Change id (chg_..., from change_list).", "pattern": "^chg_[A-Za-z0-9]{1,64}$" } }, "required": [ "change_id" ], "additionalProperties": false }, "annotations": { "title": "Show a proposed change", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "change_apply", "title": "Apply a proposed change", "description": "Apply a staged change (performs the recorded write). (CLI: p202 change apply)", "inputSchema": { "type": "object", "properties": { "change_id": { "type": "string", "description": "Change id (chg_..., from change_list).", "pattern": "^chg_[A-Za-z0-9]{1,64}$" } }, "required": [ "change_id" ], "additionalProperties": false }, "annotations": { "title": "Apply a proposed change", "readOnlyHint": false, "destructiveHint": true, "idempotentHint": false, "openWorldHint": false } }, { "name": "change_discard", "title": "Discard a proposed change", "description": "Discard a staged change without performing it. (CLI: p202 change discard)", "inputSchema": { "type": "object", "properties": { "change_id": { "type": "string", "description": "Change id (chg_..., from change_list).", "pattern": "^chg_[A-Za-z0-9]{1,64}$" } }, "required": [ "change_id" ], "additionalProperties": false }, "annotations": { "title": "Discard a proposed change", "readOnlyHint": false, "destructiveHint": true, "idempotentHint": true, "openWorldHint": false } }, { "name": "whoami", "title": "Who this connection acts as", "description": "Show the user, roles and scopes the configured API key acts as. (CLI: p202 whoami)", "inputSchema": { "type": "object", "properties": {}, "additionalProperties": false }, "annotations": { "title": "Who this connection acts as", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "system_info", "title": "Install information", "description": "What Account › Settings shows: versions, PHP limits, memcache, clicks recorded, database size, cron, DataEngine. (CLI: p202 system info)", "inputSchema": { "type": "object", "properties": {}, "additionalProperties": false }, "annotations": { "title": "Install information", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } } ], "staged_excludes": [ "change_apply", "change_discard" ], "staged_instructions": "\n- This connection only proposes changes: a write returns a change id (chg_...) and changes nothing. Tell the user; applying a proposal is theirs to do (`p202 change apply <id>`), not this assistant's.", "max_input_bytes": 262144, "hosted_excludes": [ "system_info" ] }
$ p202 mcp tools --json { "schema": 1, "cli_version": "1.9.78", "max_result_chars": 60000, "instructions": "Prosper202 is a self-hosted tracker and analytics app for affiliate and paid-traffic marketing. These tools read and change this user's own Prosper202 install through its API; the user's role there, and this connection's access, decide what is allowed.\n- Find ids with the list tools (campaign_list, tracker_list, ppc_account_list, ...) before a get, update or delete.\n- Report tools take period (today, yesterday, last7, last30, thismonth, ...) or time_from and time_to, and filters such as aff_campaign_id or ppc_account_id.\n- An error comes back as JSON with a category, a message and usually a hint. Messages and hints name CLI commands and flags (`p202 campaign list`, --aff-campaign-id); the matching tool is campaign_list and the argument aff_campaign_id.\n- A delete runs without a further question once the tool call is approved; pass dry_run: true first and show the user what it would remove.", "tools": [ { "name": "report_summary", "title": "Performance totals", "description": "Get aggregate totals — clicks, conversions, revenue, cost, profit, ROI for a period. Filter with the *_id arguments (ids from the list tools) and choose the window with period, or time_from and time_to. (CLI: p202 report summary)", "inputSchema": { "type": "object", "properties": { "aff_campaign_id": { "type": "string", "description": "Filter by INTERNAL campaign id (from campaign_list), not the public id in tracking URLs", "pattern": "^[0-9]{1,20}$" }, "aff_network_id": { "type": "string", "description": "Filter by affiliate network ID", "pattern": "^[0-9]{1,20}$" }, "browser_id": { "type": "string", "description": "Filter by browser ID (the id of a `breakdown browser` row)", "pattern": "^[0-9]{1,20}$" }, "country_id": { "type": "string", "description": "Filter by country ID", "pattern": "^[0-9]{1,20}$" }, "device_type": { "type": "string", "description": "Filter by device type ID: 1 Desktop, 2 Mobile, 3 Tablet, 4 Bot (the ids of `breakdown device_type` rows)" }, "ip": { "type": "string", "description": "Only clicks from this one IP address, IPv4 or IPv6" }, "isp_id": { "type": "string", "description": "Filter by ISP/carrier ID (the id of a `breakdown isp` row)", "pattern": "^[0-9]{1,20}$" }, "keyword": { "type": "string", "description": "Only clicks whose keyword contains this text (case-insensitive)" }, "landing_page_id": { "type": "string", "description": "Filter by landing page ID", "pattern": "^[0-9]{1,20}$" }, "method_of_promotion": { "type": "string", "description": "Only direct-link clicks or only landing-page clicks: directlink, landingpage" }, "period": { "type": "string", "description": "Period: today, yesterday, last7, last14, last30, last90, thismonth, lastmonth, thisyear, lastyear, alltime" }, "platform_id": { "type": "string", "description": "Filter by platform (OS) ID (the id of a `breakdown platform` row)", "pattern": "^[0-9]{1,20}$" }, "ppc_account_id": { "type": "string", "description": "Filter by PPC account ID", "pattern": "^[0-9]{1,20}$" }, "ppc_network_id": { "type": "string", "description": "Filter by PPC network ID, or none for the clicks with no traffic source", "pattern": "^(?:[0-9]{1,20}|none)$" }, "referer": { "type": "string", "description": "Only clicks whose referring URL contains this text (case-insensitive)" }, "region_id": { "type": "string", "description": "Filter by region ID (the id of a `breakdown region` row)", "pattern": "^[0-9]{1,20}$" }, "show": { "type": "string", "description": "Which clicks count (default all): all, real, filtered, filtered_bot, leads; real = not filtered, filtered_bot = filtered as bots, leads = converted" }, "text_ad_id": { "type": "string", "description": "Filter by text ad ID", "pattern": "^[0-9]{1,20}$" }, "time_from": { "type": "string", "description": "Start: unix seconds, a date (2026-10-01, from its first second in the account's timezone) or a time with its offset (2026-10-01T09:30:00Z)" }, "time_to": { "type": "string", "description": "End, inclusive: unix seconds, a date (2026-10-01, through its last second in the account's timezone) or a time with its offset" } }, "additionalProperties": false }, "annotations": { "title": "Performance totals", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "report_breakdown", "title": "Performance by dimension", "description": "Get stats broken down by a dimension (campaign, traffic source, country, landing page, etc.). The Overview and Analyze pages: choose the dimension with breakdown (campaign, ppc_account, country, keyword, landing_page, device, ...). Filter with the *_id arguments (ids from the list tools) and choose the window with period, or time_from and time_to. (CLI: p202 report breakdown)", "inputSchema": { "type": "object", "properties": { "aff_campaign_id": { "type": "string", "description": "Filter by INTERNAL campaign id (from campaign_list), not the public id in tracking URLs", "pattern": "^[0-9]{1,20}$" }, "aff_network_id": { "type": "string", "description": "Filter by affiliate network ID", "pattern": "^[0-9]{1,20}$" }, "breakdown": { "type": "string", "description": "Dimension (rows are one per stored value; clicks without one, e.g. no referer, are in report_summary only): campaign, aff_network, ppc_account, ppc_network, landing_page, keyword, country, city, region, browser, platform, device, isp, text_ad, ip, referer, referer_url, device_type, c1, c2, c3, c4, utm_source, utm_medium, utm_campaign, utm_term, utm_content, rotator, rotator_rule (aliases: geo=country, lp=landing_page, network=aff_network, offer=campaign, referrer=referer, referrer_url=referer_url, rule=rotator_rule, source=ppc_account)" }, "browser_id": { "type": "string", "description": "Filter by browser ID (the id of a `breakdown browser` row)", "pattern": "^[0-9]{1,20}$" }, "country_id": { "type": "string", "description": "Filter by country ID", "pattern": "^[0-9]{1,20}$" }, "device_type": { "type": "string", "description": "Filter by device type ID: 1 Desktop, 2 Mobile, 3 Tablet, 4 Bot (the ids of `breakdown device_type` rows)" }, "having": { "type": "string", "description": "Post-filter rows: FIELD OP NUMBER, FIELD a metric column or its alias, OP one of >= <= != = > < (e.g. 'total_leads=0', 'roi<0')" }, "ip": { "type": "string", "description": "Only clicks from this one IP address, IPv4 or IPv6" }, "isp_id": { "type": "string", "description": "Filter by ISP/carrier ID (the id of a `breakdown isp` row)", "pattern": "^[0-9]{1,20}$" }, "keyword": { "type": "string", "description": "Only clicks whose keyword contains this text (case-insensitive)" }, "landing_page_id": { "type": "string", "description": "Filter by landing page ID", "pattern": "^[0-9]{1,20}$" }, "limit": { "type": "string", "description": "Max results" }, "method_of_promotion": { "type": "string", "description": "Only direct-link clicks or only landing-page clicks: directlink, landingpage" }, "min_clicks": { "type": "number", "description": "Only rows with at least N clicks" }, "min_cost": { "type": "number", "description": "Only rows with at least $N cost" }, "offset": { "type": "string", "description": "Pagination offset" }, "period": { "type": "string", "description": "Period: today, yesterday, last7, last14, last30, last90, thismonth, lastmonth, thisyear, lastyear, alltime" }, "platform_id": { "type": "string", "description": "Filter by platform (OS) ID (the id of a `breakdown platform` row)", "pattern": "^[0-9]{1,20}$" }, "ppc_account_id": { "type": "string", "description": "Filter by PPC account ID", "pattern": "^[0-9]{1,20}$" }, "ppc_network_id": { "type": "string", "description": "Filter by PPC network ID, or none for the clicks with no traffic source", "pattern": "^(?:[0-9]{1,20}|none)$" }, "referer": { "type": "string", "description": "Only clicks whose referring URL contains this text (case-insensitive)" }, "region_id": { "type": "string", "description": "Filter by region ID (the id of a `breakdown region` row)", "pattern": "^[0-9]{1,20}$" }, "show": { "type": "string", "description": "Which clicks count (default all): all, real, filtered, filtered_bot, leads; real = not filtered, filtered_bot = filtered as bots, leads = converted" }, "sort": { "type": "string", "description": "Sort by: total_clicks, total_click_throughs, total_leads, total_income, total_cost, total_net, epc, avg_cpc, conv_rate, roi, cpa (aliases: clicks=total_clicks, conversions=total_leads, cost=total_cost, income=total_income, leads=total_leads, net=total_net, profit=total_net, revenue=total_income)" }, "sort_dir": { "type": "string", "description": "Sort direction: ASC, DESC" }, "text_ad_id": { "type": "string", "description": "Filter by text ad ID", "pattern": "^[0-9]{1,20}$" }, "time_from": { "type": "string", "description": "Start: unix seconds, a date (2026-10-01, from its first second in the account's timezone) or a time with its offset (2026-10-01T09:30:00Z)" }, "time_to": { "type": "string", "description": "End, inclusive: unix seconds, a date (2026-10-01, through its last second in the account's timezone) or a time with its offset" }, "zero_leads": { "type": "boolean", "description": "Only rows with cost > 0 and zero conversions (pure waste)" } }, "additionalProperties": false }, "annotations": { "title": "Performance by dimension", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "report_timeseries", "title": "Performance over time", "description": "Get stats over time — daily/hourly buckets of clicks, conversions, revenue, etc. Filter with the *_id arguments (ids from the list tools) and choose the window with period, or time_from and time_to. (CLI: p202 report timeseries)", "inputSchema": { "type": "object", "properties": { "aff_campaign_id": { "type": "string", "description": "Filter by INTERNAL campaign id (from campaign_list), not the public id in tracking URLs", "pattern": "^[0-9]{1,20}$" }, "aff_network_id": { "type": "string", "description": "Filter by affiliate network ID", "pattern": "^[0-9]{1,20}$" }, "country_id": { "type": "string", "description": "Filter by country ID", "pattern": "^[0-9]{1,20}$" }, "keyword": { "type": "string", "description": "Only clicks whose keyword contains this text (case-insensitive)" }, "landing_page_id": { "type": "string", "description": "Filter by landing page ID", "pattern": "^[0-9]{1,20}$" }, "period": { "type": "string", "description": "Period: today, yesterday, last7, last14, last30, last90, thismonth, lastmonth, thisyear, lastyear, alltime" }, "ppc_account_id": { "type": "string", "description": "Filter by PPC account ID", "pattern": "^[0-9]{1,20}$" }, "ppc_network_id": { "type": "string", "description": "Filter by PPC network ID, or none for the clicks with no traffic source", "pattern": "^(?:[0-9]{1,20}|none)$" }, "show": { "type": "string", "description": "Which clicks count (default all): all, real, filtered, filtered_bot, leads; real = not filtered, filtered_bot = filtered as bots, leads = converted" }, "time_from": { "type": "string", "description": "Start: unix seconds, a date (2026-10-01, from its first second in the account's timezone) or a time with its offset (2026-10-01T09:30:00Z)" }, "time_to": { "type": "string", "description": "End, inclusive: unix seconds, a date (2026-10-01, through its last second in the account's timezone) or a time with its offset" } }, "additionalProperties": false }, "annotations": { "title": "Performance over time", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "report_daypart", "title": "Performance by hour of day", "description": "Get stats grouped by hour of day (0-23) to find best-performing hours. (CLI: p202 report daypart)", "inputSchema": { "type": "object", "properties": { "aff_campaign_id": { "type": "string", "description": "Filter by INTERNAL campaign id (from campaign_list), not the public id in tracking URLs", "pattern": "^[0-9]{1,20}$" }, "aff_network_id": { "type": "string", "description": "Filter by affiliate network ID", "pattern": "^[0-9]{1,20}$" }, "country_id": { "type": "string", "description": "Filter by country ID", "pattern": "^[0-9]{1,20}$" }, "keyword": { "type": "string", "description": "Only clicks whose keyword contains this text (case-insensitive)" }, "landing_page_id": { "type": "string", "description": "Filter by landing page ID", "pattern": "^[0-9]{1,20}$" }, "period": { "type": "string", "description": "Period: today, yesterday, last7, last14, last30, last90, thismonth, lastmonth, thisyear, lastyear, alltime" }, "ppc_account_id": { "type": "string", "description": "Filter by PPC account ID", "pattern": "^[0-9]{1,20}$" }, "ppc_network_id": { "type": "string", "description": "Filter by PPC network ID, or none for the clicks with no traffic source", "pattern": "^(?:[0-9]{1,20}|none)$" }, "show": { "type": "string", "description": "Which clicks count (default all): all, real, filtered, filtered_bot, leads; real = not filtered, filtered_bot = filtered as bots, leads = converted" }, "sort": { "type": "string", "description": "Sort by: hour_of_day, total_clicks, total_click_throughs, total_leads, total_income, total_cost, total_net, epc, avg_cpc, conv_rate, roi, cpa (aliases: clicks=total_clicks, conversions=total_leads, cost=total_cost, income=total_income, leads=total_leads, net=total_net, profit=total_net, revenue=total_income)" }, "sort_dir": { "type": "string", "description": "Sort direction (also sort_dir): ASC, DESC" }, "time_from": { "type": "string", "description": "Start: unix seconds, a date (2026-10-01, from its first second in the account's timezone) or a time with its offset (2026-10-01T09:30:00Z)" }, "time_to": { "type": "string", "description": "End, inclusive: unix seconds, a date (2026-10-01, through its last second in the account's timezone) or a time with its offset" } }, "additionalProperties": false }, "annotations": { "title": "Performance by hour of day", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "report_weekpart", "title": "Performance by day of week", "description": "Get stats grouped by day of week (Mon-Sun) to find best-performing days. (CLI: p202 report weekpart)", "inputSchema": { "type": "object", "properties": { "aff_campaign_id": { "type": "string", "description": "Filter by INTERNAL campaign id (from campaign_list), not the public id in tracking URLs", "pattern": "^[0-9]{1,20}$" }, "aff_network_id": { "type": "string", "description": "Filter by affiliate network ID", "pattern": "^[0-9]{1,20}$" }, "country_id": { "type": "string", "description": "Filter by country ID", "pattern": "^[0-9]{1,20}$" }, "keyword": { "type": "string", "description": "Only clicks whose keyword contains this text (case-insensitive)" }, "landing_page_id": { "type": "string", "description": "Filter by landing page ID", "pattern": "^[0-9]{1,20}$" }, "period": { "type": "string", "description": "Period: today, yesterday, last7, last14, last30, last90, thismonth, lastmonth, thisyear, lastyear, alltime" }, "ppc_account_id": { "type": "string", "description": "Filter by PPC account ID", "pattern": "^[0-9]{1,20}$" }, "ppc_network_id": { "type": "string", "description": "Filter by PPC network ID, or none for the clicks with no traffic source", "pattern": "^(?:[0-9]{1,20}|none)$" }, "show": { "type": "string", "description": "Which clicks count (default all): all, real, filtered, filtered_bot, leads; real = not filtered, filtered_bot = filtered as bots, leads = converted" }, "sort": { "type": "string", "description": "Sort by: day_of_week, total_clicks, total_click_throughs, total_leads, total_income, total_cost, total_net, epc, avg_cpc, conv_rate, roi, cpa (aliases: clicks=total_clicks, conversions=total_leads, cost=total_cost, income=total_income, leads=total_leads, net=total_net, profit=total_net, revenue=total_income)" }, "sort_dir": { "type": "string", "description": "Sort direction (also sort_dir): ASC, DESC" }, "time_from": { "type": "string", "description": "Start: unix seconds, a date (2026-10-01, from its first second in the account's timezone) or a time with its offset (2026-10-01T09:30:00Z)" }, "time_to": { "type": "string", "description": "End, inclusive: unix seconds, a date (2026-10-01, through its last second in the account's timezone) or a time with its offset" } }, "additionalProperties": false }, "annotations": { "title": "Performance by day of week", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "report_groups", "title": "Grouped performance", "description": "Traffic grouped by up to four dimensions, nested, each group with its totals (Group Overview). (CLI: p202 report groups)", "inputSchema": { "type": "object", "properties": { "aff_campaign_id": { "type": "string", "description": "Filter by INTERNAL campaign id (from campaign_list), not the public id in tracking URLs", "pattern": "^[0-9]{1,20}$" }, "aff_network_id": { "type": "string", "description": "Filter by affiliate network ID", "pattern": "^[0-9]{1,20}$" }, "by": { "type": "string", "description": "Up to 4 dimensions, outermost first (e.g. ppc_network,campaign,keyword): campaign, aff_network, ppc_account, ppc_network, landing_page, keyword, country, city, region, browser, platform, device, isp, text_ad, ip, referer, referer_url, device_type, c1, c2, c3, c4, utm_source, utm_medium, utm_campaign, utm_term, utm_content, rotator, rotator_rule (aliases: geo=country, lp=landing_page, network=aff_network, offer=campaign, referrer=referer, referrer_url=referer_url, rule=rotator_rule, source=ppc_account); comma-separated for several" }, "country_id": { "type": "string", "description": "Filter by country ID", "pattern": "^[0-9]{1,20}$" }, "keyword": { "type": "string", "description": "Only clicks whose keyword contains this text (case-insensitive)" }, "landing_page_id": { "type": "string", "description": "Filter by landing page ID", "pattern": "^[0-9]{1,20}$" }, "period": { "type": "string", "description": "Period: today, yesterday, last7, last14, last30, last90, thismonth, lastmonth, thisyear, lastyear, alltime" }, "ppc_account_id": { "type": "string", "description": "Filter by PPC account ID", "pattern": "^[0-9]{1,20}$" }, "ppc_network_id": { "type": "string", "description": "Filter by PPC network ID, or none for the clicks with no traffic source", "pattern": "^(?:[0-9]{1,20}|none)$" }, "show": { "type": "string", "description": "Which clicks count (default all): all, real, filtered, filtered_bot, leads; real = not filtered, filtered_bot = filtered as bots, leads = converted" }, "sort": { "type": "string", "description": "Order each group's rows by name (default) or a metric: name, total_clicks, total_click_throughs, total_leads, total_income, total_cost, total_net, epc, avg_cpc, conv_rate, roi, cpa (aliases: clicks=total_clicks, conversions=total_leads, cost=total_cost, income=total_income, leads=total_leads, net=total_net, profit=total_net, revenue=total_income)" }, "sort_dir": { "type": "string", "description": "ASC or DESC (default ASC by name, DESC by a metric): ASC, DESC" }, "time_from": { "type": "string", "description": "Start: unix seconds, a date (2026-10-01, from its first second in the account's timezone) or a time with its offset (2026-10-01T09:30:00Z)" }, "time_to": { "type": "string", "description": "End, inclusive: unix seconds, a date (2026-10-01, through its last second in the account's timezone) or a time with its offset" } }, "required": [ "by" ], "additionalProperties": false }, "annotations": { "title": "Grouped performance", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "report_crosstab", "title": "Two-dimension performance table", "description": "Two-dimension breakdown (e.g. traffic source × country) for one metric. (CLI: p202 report crosstab)", "inputSchema": { "type": "object", "properties": { "aff_campaign_id": { "type": "string", "description": "Filter by INTERNAL campaign id (from campaign_list), not the public id in tracking URLs", "pattern": "^[0-9]{1,20}$" }, "aff_network_id": { "type": "string", "description": "Filter by affiliate network ID", "pattern": "^[0-9]{1,20}$" }, "cols": { "type": "string", "description": "Column dimension: campaign, aff_network, ppc_account, ppc_network, landing_page, keyword, country, city, region, browser, platform, device, isp, text_ad, ip, referer, referer_url, device_type, c1, c2, c3, c4, utm_source, utm_medium, utm_campaign, utm_term, utm_content, rotator, rotator_rule (aliases: geo=country, lp=landing_page, network=aff_network, offer=campaign, referrer=referer, referrer_url=referer_url, rule=rotator_rule, source=ppc_account)" }, "country_id": { "type": "string", "description": "Filter by country ID", "pattern": "^[0-9]{1,20}$" }, "keyword": { "type": "string", "description": "Only clicks whose keyword contains this text (case-insensitive)" }, "landing_page_id": { "type": "string", "description": "Filter by landing page ID", "pattern": "^[0-9]{1,20}$" }, "limit_rows": { "type": "integer", "description": "Cap the number of rows fanned out" }, "metric": { "type": "string", "description": "Metric to pivot: total_clicks, total_click_throughs, total_leads, total_income, total_cost, total_net, epc, avg_cpc, conv_rate, roi, cpa (aliases: clicks=total_clicks, conversions=total_leads, cost=total_cost, income=total_income, leads=total_leads, net=total_net, profit=total_net, revenue=total_income)" }, "period": { "type": "string", "description": "Period: today, yesterday, last7, last14, last30, last90, thismonth, lastmonth, thisyear, lastyear, alltime" }, "ppc_account_id": { "type": "string", "description": "Filter by PPC account ID", "pattern": "^[0-9]{1,20}$" }, "ppc_network_id": { "type": "string", "description": "Filter by PPC network ID, or none for the clicks with no traffic source", "pattern": "^(?:[0-9]{1,20}|none)$" }, "rows": { "type": "string", "description": "Row dimension (one with an id filter): campaign, aff_network, ppc_account, ppc_network, landing_page, country, region, browser, platform, isp, text_ad, device_type (aliases: geo=country, lp=landing_page, network=aff_network, offer=campaign, source=ppc_account)" }, "show": { "type": "string", "description": "Which clicks count (default all): all, real, filtered, filtered_bot, leads; real = not filtered, filtered_bot = filtered as bots, leads = converted" }, "time_from": { "type": "string", "description": "Start: unix seconds, a date (2026-10-01, from its first second in the account's timezone) or a time with its offset (2026-10-01T09:30:00Z)" }, "time_to": { "type": "string", "description": "End, inclusive: unix seconds, a date (2026-10-01, through its last second in the account's timezone) or a time with its offset" } }, "required": [ "cols", "rows" ], "additionalProperties": false }, "annotations": { "title": "Two-dimension performance table", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "report_winners", "title": "Rows to scale", "description": "Rows to SCALE: profitable, converting keywords/geos; closers come back as CLOSER. (CLI: p202 report winners)", "inputSchema": { "type": "object", "properties": { "aff_campaign_id": { "type": "string", "description": "Filter by INTERNAL campaign id (from campaign_list), not the public id in tracking URLs", "pattern": "^[0-9]{1,20}$" }, "aff_network_id": { "type": "string", "description": "Filter by affiliate network ID", "pattern": "^[0-9]{1,20}$" }, "breakdown": { "type": "string", "description": "Dimension to triage: campaign, aff_network, ppc_account, ppc_network, landing_page, keyword, country, city, region, browser, platform, device, isp, text_ad, ip, referer, referer_url, device_type, c1, c2, c3, c4, utm_source, utm_medium, utm_campaign, utm_term, utm_content, rotator, rotator_rule (aliases: geo=country, lp=landing_page, network=aff_network, offer=campaign, referrer=referer, referrer_url=referer_url, rule=rotator_rule, source=ppc_account)" }, "country_id": { "type": "string", "description": "Filter by country ID", "pattern": "^[0-9]{1,20}$" }, "first_touch_model": { "type": "string", "description": "Attribution model id for the closer check (default: the first active First touch model)" }, "keyword": { "type": "string", "description": "Only clicks whose keyword contains this text (case-insensitive)" }, "landing_page_id": { "type": "string", "description": "Filter by landing page ID", "pattern": "^[0-9]{1,20}$" }, "max_cpc": { "type": "number", "description": "Break-even CPC target (else payout × each row's CVR, from payout or the campaign)" }, "min_clicks": { "type": "number", "description": "Ignore rows with fewer than N clicks (significance floor)" }, "no_attribution_check": { "type": "boolean", "description": "List classic last-click winners only, without the first-touch closer check" }, "payout": { "type": "number", "description": "Revenue per conversion, e.g. your average order value: each row's break-even CPC is this × its conversion rate, and its profit (total_net) and first-touch ROI value each sale at this. Unlike aff_campaign_id it doesn't filter the report, so the attribution check still runs" }, "period": { "type": "string", "description": "Period: today, yesterday, last7, last14, last30, last90, thismonth, lastmonth, thisyear, lastyear, alltime" }, "ppc_account_id": { "type": "string", "description": "Filter by PPC account ID", "pattern": "^[0-9]{1,20}$" }, "ppc_network_id": { "type": "string", "description": "Filter by PPC network ID, or none for the clicks with no traffic source", "pattern": "^(?:[0-9]{1,20}|none)$" }, "show": { "type": "string", "description": "Which clicks count (default all): all, real, filtered, filtered_bot, leads; real = not filtered, filtered_bot = filtered as bots, leads = converted" }, "time_from": { "type": "string", "description": "Start: unix seconds, a date (2026-10-01, from its first second in the account's timezone) or a time with its offset (2026-10-01T09:30:00Z)" }, "time_to": { "type": "string", "description": "End, inclusive: unix seconds, a date (2026-10-01, through its last second in the account's timezone) or a time with its offset" } }, "additionalProperties": false }, "annotations": { "title": "Rows to scale", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "report_losers", "title": "Rows to cut", "description": "Rows to CUT: over-bid keywords/geos and zero-conversion spend; rows that start sales come back as TEST. (CLI: p202 report losers)", "inputSchema": { "type": "object", "properties": { "aff_campaign_id": { "type": "string", "description": "Filter by INTERNAL campaign id (from campaign_list), not the public id in tracking URLs", "pattern": "^[0-9]{1,20}$" }, "aff_network_id": { "type": "string", "description": "Filter by affiliate network ID", "pattern": "^[0-9]{1,20}$" }, "breakdown": { "type": "string", "description": "Dimension to triage: campaign, aff_network, ppc_account, ppc_network, landing_page, keyword, country, city, region, browser, platform, device, isp, text_ad, ip, referer, referer_url, device_type, c1, c2, c3, c4, utm_source, utm_medium, utm_campaign, utm_term, utm_content, rotator, rotator_rule (aliases: geo=country, lp=landing_page, network=aff_network, offer=campaign, referrer=referer, referrer_url=referer_url, rule=rotator_rule, source=ppc_account)" }, "country_id": { "type": "string", "description": "Filter by country ID", "pattern": "^[0-9]{1,20}$" }, "first_touch_model": { "type": "string", "description": "Attribution model id for the starter check (default: the first active First touch model)" }, "keyword": { "type": "string", "description": "Only clicks whose keyword contains this text (case-insensitive)" }, "landing_page_id": { "type": "string", "description": "Filter by landing page ID", "pattern": "^[0-9]{1,20}$" }, "max_cpc": { "type": "number", "description": "Break-even CPC target (else payout × each row's CVR, from payout or the campaign)" }, "min_assists": { "type": "integer", "description": "A CUT row with at least this many assisted sales comes back as TEST (0 turns the assists rule off)" }, "min_clicks": { "type": "number", "description": "Ignore rows with fewer than N clicks (significance floor)" }, "no_attribution_check": { "type": "boolean", "description": "List classic last-click losers only, without the first-touch starter check" }, "payout": { "type": "number", "description": "Revenue per conversion, e.g. your average order value: each row's break-even CPC is this × its conversion rate, and its profit (total_net) and first-touch ROI value each sale at this. Unlike aff_campaign_id it doesn't filter the report, so the attribution check still runs" }, "period": { "type": "string", "description": "Period: today, yesterday, last7, last14, last30, last90, thismonth, lastmonth, thisyear, lastyear, alltime" }, "ppc_account_id": { "type": "string", "description": "Filter by PPC account ID", "pattern": "^[0-9]{1,20}$" }, "ppc_network_id": { "type": "string", "description": "Filter by PPC network ID, or none for the clicks with no traffic source", "pattern": "^(?:[0-9]{1,20}|none)$" }, "show": { "type": "string", "description": "Which clicks count (default all): all, real, filtered, filtered_bot, leads; real = not filtered, filtered_bot = filtered as bots, leads = converted" }, "time_from": { "type": "string", "description": "Start: unix seconds, a date (2026-10-01, from its first second in the account's timezone) or a time with its offset (2026-10-01T09:30:00Z)" }, "time_to": { "type": "string", "description": "End, inclusive: unix seconds, a date (2026-10-01, through its last second in the account's timezone) or a time with its offset" } }, "additionalProperties": false }, "annotations": { "title": "Rows to cut", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "report_breakeven", "title": "Break-even CPC", "description": "Break-even CPC per row: max biddable click price (payout × conversion rate). (CLI: p202 report breakeven)", "inputSchema": { "type": "object", "properties": { "aff_campaign_id": { "type": "string", "description": "Filter by INTERNAL campaign id (from campaign_list), not the public id in tracking URLs", "pattern": "^[0-9]{1,20}$" }, "aff_network_id": { "type": "string", "description": "Filter by affiliate network ID", "pattern": "^[0-9]{1,20}$" }, "breakdown": { "type": "string", "description": "Dimension: campaign, aff_network, ppc_account, ppc_network, landing_page, keyword, country, city, region, browser, platform, device, isp, text_ad, ip, referer, referer_url, device_type, c1, c2, c3, c4, utm_source, utm_medium, utm_campaign, utm_term, utm_content, rotator, rotator_rule (aliases: geo=country, lp=landing_page, network=aff_network, offer=campaign, referrer=referer, referrer_url=referer_url, rule=rotator_rule, source=ppc_account)" }, "country_id": { "type": "string", "description": "Filter by country ID", "pattern": "^[0-9]{1,20}$" }, "keyword": { "type": "string", "description": "Only clicks whose keyword contains this text (case-insensitive)" }, "landing_page_id": { "type": "string", "description": "Filter by landing page ID", "pattern": "^[0-9]{1,20}$" }, "max_cpc": { "type": "number", "description": "Override the payout-derived break-even CPC target" }, "period": { "type": "string", "description": "Period: today, yesterday, last7, last14, last30, last90, thismonth, lastmonth, thisyear, lastyear, alltime" }, "ppc_account_id": { "type": "string", "description": "Filter by PPC account ID", "pattern": "^[0-9]{1,20}$" }, "ppc_network_id": { "type": "string", "description": "Filter by PPC network ID, or none for the clicks with no traffic source", "pattern": "^(?:[0-9]{1,20}|none)$" }, "show": { "type": "string", "description": "Which clicks count (default all): all, real, filtered, filtered_bot, leads; real = not filtered, filtered_bot = filtered as bots, leads = converted" }, "time_from": { "type": "string", "description": "Start: unix seconds, a date (2026-10-01, from its first second in the account's timezone) or a time with its offset (2026-10-01T09:30:00Z)" }, "time_to": { "type": "string", "description": "End, inclusive: unix seconds, a date (2026-10-01, through its last second in the account's timezone) or a time with its offset" } }, "required": [ "aff_campaign_id" ], "additionalProperties": false }, "annotations": { "title": "Break-even CPC", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "forecast", "title": "Forecast performance", "description": "Forecast future performance metrics using historical data. (CLI: p202 forecast)", "inputSchema": { "type": "object", "properties": { "aff_campaign_id": { "type": "string", "description": "Filter by campaign ID", "pattern": "^[0-9]{1,20}$" }, "aff_network_id": { "type": "string", "description": "Filter by affiliate network ID", "pattern": "^[0-9]{1,20}$" }, "all_metrics": { "type": "boolean", "description": "Forecast clicks, leads, income, cost, and net together via ratio decomposition (coherent output)" }, "anomaly_cycles": { "type": "integer", "description": "Seasonal cycles on each side used as same-weekday/hour references for transient masking" }, "anomaly_sigma": { "type": "number", "description": "Transient-masking threshold in robust sigma units (lower masks more aggressively)" }, "confidence": { "type": "number", "description": "Confidence level for prediction bounds; snaps to the nearest band: 0.50 (p25-p75), 0.80 (p10-p90), or 0.90 (p05-p95, also used for 0.95/0.99)" }, "country_id": { "type": "string", "description": "Filter by country ID", "pattern": "^[0-9]{1,20}$" }, "event_tag": { "type": "string", "description": "Filter forecast events by tag (comma-separated, e.g. us-holidays,promos)" }, "events": { "type": "boolean", "description": "Enable event-aware forecasting using stored forecast events" }, "history": { "type": "string", "description": "Historical data period (aliases: period, days): today, yesterday, last7, last14, last30, last90, thismonth, lastmonth, thisyear, lastyear, alltime" }, "horizon": { "type": "integer", "description": "Number of periods to forecast forward" }, "landing_page_id": { "type": "string", "description": "Filter by landing page ID", "pattern": "^[0-9]{1,20}$" }, "method": { "type": "string", "description": "Forecasting method (auto = ensemble): linear, sma, wma, holtwinters, ensemble, auto" }, "metric": { "type": "string", "description": "Metric to forecast: total_clicks, total_click_throughs, total_leads, total_income, total_cost, total_net, epc, avg_cpc, conv_rate, roi, cpa (aliases: clicks=total_clicks, conversions=total_leads, cost=total_cost, income=total_income, leads=total_leads, net=total_net, profit=total_net, revenue=total_income)" }, "no_anomaly_mask": { "type": "boolean", "description": "Disable transient masking (fit short outlier runs such as tracking outages as data)" }, "no_level_shift": { "type": "boolean", "description": "Disable level-shift detection (fit the full history as-is)" }, "ppc_account_id": { "type": "string", "description": "Filter by PPC account ID", "pattern": "^[0-9]{1,20}$" }, "ppc_network_id": { "type": "string", "description": "Filter by PPC network ID", "pattern": "^(?:[0-9]{1,20}|none)$" }, "seasonal": { "type": "boolean", "description": "Apply a day-of-week profile learned from the fetched history (hour interval also gets an hour-of-day profile)" }, "seasonal_monthly": { "type": "boolean", "description": "Apply day-of-month seasonal adjustment learned from the fetched series (requires interval day)" }, "window": { "type": "integer", "description": "SMA/WMA window size (0 = auto-select)" } }, "required": [ "metric" ], "additionalProperties": false }, "annotations": { "title": "Forecast performance", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "attribution_breakdown", "title": "Attributed conversions by dimension", "description": "Attributed conversions, revenue, cost and ROI by a click dimension; compare_model puts two models side by side. (CLI: p202 attribution breakdown)", "inputSchema": { "type": "object", "properties": { "cohort": { "type": "string", "description": "conversion: the sales made in the range (default); click: what the range's clicks earned, as the classic reports count. Values: conversion, click" }, "compare_model": { "type": "string", "description": "A second model id, side by side" }, "group_by": { "type": "string", "description": "Dimension: campaign, traffic_source, landing_page, keyword, c1, c2, c3, c4, country, device, day" }, "keys": { "type": "string", "description": "Only these rows: up to 1000 row keys (data[].key), comma-separated" }, "limit": { "type": "string", "description": "Rows, 1-1000 (default 100)" }, "model": { "type": "string", "description": "Model id (default: each campaign's override, else the account default)" }, "offset": { "type": "string", "description": "Rows to skip, for paging past limit (meta.groups is the total; needs a server with attribution paging)" }, "period": { "type": "string", "description": "Range (default: the last 30 days): today, yesterday, last7, last14, last30, last90, thismonth, lastmonth, thisyear, lastyear, alltime" }, "time_from": { "type": "string", "description": "Range start, unix seconds" }, "time_to": { "type": "string", "description": "Range end, unix seconds" } }, "additionalProperties": false }, "annotations": { "title": "Attributed conversions by dimension", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "campaign_list", "title": "List campaigns", "description": "List campaigns (affiliate offers with URLs, payouts, and postback settings). (CLI: p202 campaign list)", "inputSchema": { "type": "object", "properties": { "aff_network_id": { "type": "string", "description": "Filter by affiliate network ID (from aff_network_list)", "pattern": "^[0-9]{1,20}$" }, "all": { "type": "boolean", "description": "Fetch all rows across pages" }, "days": { "type": "integer", "description": "Stats window for with_stats in days, ending now (ignored when period is given)" }, "limit": { "type": "string", "description": "Max results" }, "min_clicks": { "type": "integer", "description": "With with_stats: only campaigns with at least N clicks in the window (searches every page)" }, "offset": { "type": "string", "description": "Pagination offset" }, "page": { "type": "string", "description": "Page number" }, "period": { "type": "string", "description": "Stats window for with_stats (default last30): today, yesterday, last7, last14, last30, last90, thismonth, lastmonth, thisyear, lastyear, alltime" }, "resolve_names": { "type": "boolean", "description": "Resolve foreign key IDs to names" }, "url_contains": { "type": "string", "description": "Only campaigns with a URL containing this text (case-insensitive; searches every page; fields: aff_campaign_url, aff_campaign_url_2, aff_campaign_url_3, aff_campaign_url_4, aff_campaign_url_5)" }, "with_stats": { "type": "boolean", "description": "Add each campaign's traffic in the window: total_clicks, total_leads, total_income, total_cost, total_net (0 when none; needs the reports:read scope)" } }, "additionalProperties": false }, "annotations": { "title": "List campaigns", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "campaign_get", "title": "Get a campaign", "description": "Get a campaign by ID. (CLI: p202 campaign get)", "inputSchema": { "type": "object", "properties": { "id": { "type": "string", "description": "Campaign id (from campaign_list).", "pattern": "^[0-9]{1,20}$" }, "public": { "type": "boolean", "description": "Treat the id as the public aff_campaign_id_public" } }, "required": [ "id" ], "additionalProperties": false }, "annotations": { "title": "Get a campaign", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "campaign_optimize", "title": "Diagnose a campaign", "description": "Diagnose a campaign and recommend a salvage offer for its traffic. (CLI: p202 campaign optimize)", "inputSchema": { "type": "object", "properties": { "aff_network_id": { "type": "string", "description": "Filter by affiliate network ID", "pattern": "^[0-9]{1,20}$" }, "campaign_id": { "type": "string", "description": "Campaign id (from campaign_list).", "pattern": "^[0-9]{1,20}$" }, "country_id": { "type": "string", "description": "Filter by country ID", "pattern": "^[0-9]{1,20}$" }, "keyword": { "type": "string", "description": "Only clicks whose keyword contains this text (case-insensitive)" }, "landing_page_id": { "type": "string", "description": "Filter by landing page ID", "pattern": "^[0-9]{1,20}$" }, "period": { "type": "string", "description": "Period: today, yesterday, last7, last14, last30, last90, thismonth, lastmonth, thisyear, lastyear, alltime" }, "ppc_account_id": { "type": "string", "description": "Filter by PPC account ID", "pattern": "^[0-9]{1,20}$" }, "ppc_network_id": { "type": "string", "description": "Filter by PPC network ID, or none for the clicks with no traffic source", "pattern": "^(?:[0-9]{1,20}|none)$" }, "show": { "type": "string", "description": "Which clicks count (default all): all, real, filtered, filtered_bot, leads; real = not filtered, filtered_bot = filtered as bots, leads = converted" }, "time_from": { "type": "string", "description": "Start: unix seconds, a date (2026-10-01, from its first second in the account's timezone) or a time with its offset (2026-10-01T09:30:00Z)" }, "time_to": { "type": "string", "description": "End, inclusive: unix seconds, a date (2026-10-01, through its last second in the account's timezone) or a time with its offset" } }, "required": [ "campaign_id" ], "additionalProperties": false }, "annotations": { "title": "Diagnose a campaign", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "campaign_create", "title": "Create a campaign", "description": "Create a new campaign. (CLI: p202 campaign create)", "inputSchema": { "type": "object", "properties": { "aff_campaign_cloaking": { "type": "string", "description": "Enable cloaking (1) or not (0): 0, 1" }, "aff_campaign_currency": { "type": "string", "description": "Currency code (e.g. USD)" }, "aff_campaign_foreign_payout": { "type": "string", "description": "Foreign currency payout" }, "aff_campaign_name": { "type": "string", "description": "Campaign name (required)" }, "aff_campaign_payout": { "type": "string", "description": "Default payout (required)" }, "aff_campaign_rotate": { "type": "string", "description": "Enable rotation (1) or not (0): 0, 1" }, "aff_campaign_url": { "type": "string", "description": "Primary offer URL (required)" }, "aff_campaign_url_2": { "type": "string", "description": "Offer URL 2 (used with aff_campaign_rotate 1)" }, "aff_campaign_url_3": { "type": "string", "description": "Offer URL 3" }, "aff_campaign_url_4": { "type": "string", "description": "Offer URL 4" }, "aff_campaign_url_5": { "type": "string", "description": "Offer URL 5" }, "aff_network_id": { "type": "string", "description": "Category (affiliate network) id, from aff_network_list (required)", "pattern": "^[0-9]{1,20}$" }, "app_registration_id": { "type": "string", "description": "The Android app registration this campaign's store links install (`p202 app list platform android`; 0 unlinks). An install of another app on its click is foreign_click", "pattern": "^[0-9]{1,20}$" }, "attribution_model_id": { "type": "string", "description": "The attribution model this campaign's conversions are credited with, overriding the account default (`p202 attribution model list`; 0 returns it to the default)", "pattern": "^[0-9]{1,20}$" }, "identity_signals": { "type": "string", "description": "Link this campaign's clicks into multi-touch journeys (1, default) or not (0): 0, 1" }, "payout_mode": { "type": "string", "description": "How conversions set a click's value, replace (latest payout, default) or accumulate (sum): replace, accumulate" } }, "required": [ "aff_campaign_name", "aff_campaign_payout", "aff_campaign_url", "aff_network_id" ], "additionalProperties": false }, "annotations": { "title": "Create a campaign", "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } }, { "name": "campaign_clone", "title": "Clone a campaign", "description": "Clone a campaign. (CLI: p202 campaign clone)", "inputSchema": { "type": "object", "properties": { "id": { "type": "string", "description": "Id of the campaign to copy (from campaign_list).", "pattern": "^[0-9]{1,20}$" }, "name": { "type": "string", "description": "Optional name override for the cloned campaign" } }, "required": [ "id" ], "additionalProperties": false }, "annotations": { "title": "Clone a campaign", "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } }, { "name": "campaign_update", "title": "Update a campaign", "description": "Update a campaign. (CLI: p202 campaign update)", "inputSchema": { "type": "object", "properties": { "aff_campaign_cloaking": { "type": "string", "description": "Enable cloaking (1) or not (0): 0, 1" }, "aff_campaign_currency": { "type": "string", "description": "Currency code (e.g. USD)" }, "aff_campaign_foreign_payout": { "type": "string", "description": "Foreign currency payout" }, "aff_campaign_name": { "type": "string", "description": "Campaign name" }, "aff_campaign_payout": { "type": "string", "description": "Default payout" }, "aff_campaign_rotate": { "type": "string", "description": "Enable rotation (1) or not (0): 0, 1" }, "aff_campaign_url": { "type": "string", "description": "Primary offer URL" }, "aff_campaign_url_2": { "type": "string", "description": "Offer URL 2 (used with aff_campaign_rotate 1) (\"\" clears it)" }, "aff_campaign_url_3": { "type": "string", "description": "Offer URL 3 (\"\" clears it)" }, "aff_campaign_url_4": { "type": "string", "description": "Offer URL 4 (\"\" clears it)" }, "aff_campaign_url_5": { "type": "string", "description": "Offer URL 5 (\"\" clears it)" }, "aff_network_id": { "type": "string", "description": "Category (affiliate network) id, from aff_network_list", "pattern": "^[0-9]{1,20}$" }, "app_registration_id": { "type": "string", "description": "The Android app registration this campaign's store links install (`p202 app list platform android`; 0 unlinks). An install of another app on its click is foreign_click", "pattern": "^[0-9]{1,20}$" }, "attribution_model_id": { "type": "string", "description": "The attribution model this campaign's conversions are credited with, overriding the account default (`p202 attribution model list`; 0 returns it to the default)", "pattern": "^[0-9]{1,20}$" }, "id": { "type": "string", "description": "Campaign id (from campaign_list).", "pattern": "^[0-9]{1,20}$" }, "identity_signals": { "type": "string", "description": "Link this campaign's clicks into multi-touch journeys (1, default) or not (0): 0, 1" }, "payout_mode": { "type": "string", "description": "How conversions set a click's value, replace (latest payout, default) or accumulate (sum): replace, accumulate" } }, "required": [ "id" ], "additionalProperties": false }, "annotations": { "title": "Update a campaign", "readOnlyHint": false, "destructiveHint": true, "idempotentHint": false, "openWorldHint": false } }, { "name": "campaign_delete", "title": "Delete a campaign", "description": "Delete a campaign. It deletes as soon as the call is approved: call it with dry_run: true first and show the user what it would remove. (CLI: p202 campaign delete)", "inputSchema": { "type": "object", "properties": { "dry_run": { "type": "boolean", "description": "Preview what the delete would remove (record + cascade counts) without deleting" }, "id": { "type": "string", "description": "Campaign id (from campaign_list); or give ids for several.", "pattern": "^[0-9]{1,20}$" }, "ids": { "type": "string", "description": "Comma-separated campaign IDs to delete in bulk" } }, "additionalProperties": false }, "annotations": { "title": "Delete a campaign", "readOnlyHint": false, "destructiveHint": true, "idempotentHint": true, "openWorldHint": false } }, { "name": "tracker_list", "title": "List trackers", "description": "List trackers (tracking links that tie a traffic source to a campaign and landing page). (CLI: p202 tracker list)", "inputSchema": { "type": "object", "properties": { "aff_campaign_id": { "type": "string", "description": "Filter by campaign ID (from campaign_list)", "pattern": "^[0-9]{1,20}$" }, "all": { "type": "boolean", "description": "Fetch all rows across pages" }, "landing_page_id": { "type": "string", "description": "Filter by landing page ID (from landing_page_list)", "pattern": "^[0-9]{1,20}$" }, "limit": { "type": "string", "description": "Max results" }, "offset": { "type": "string", "description": "Pagination offset" }, "page": { "type": "string", "description": "Page number" }, "ppc_account_id": { "type": "string", "description": "Filter by PPC account ID (from ppc_account_list)", "pattern": "^[0-9]{1,20}$" }, "resolve_names": { "type": "boolean", "description": "Resolve foreign key IDs to names" }, "rotator_id": { "type": "string", "description": "Filter by rotator ID (from rotator_list)", "pattern": "^[0-9]{1,20}$" } }, "additionalProperties": false }, "annotations": { "title": "List trackers", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "tracker_get", "title": "Get a tracker", "description": "Get a tracker by ID. (CLI: p202 tracker get)", "inputSchema": { "type": "object", "properties": { "id": { "type": "string", "description": "Tracker id (from tracker_list).", "pattern": "^[0-9]{1,20}$" }, "public": { "type": "boolean", "description": "Treat the id as the public tracker_id_public" } }, "required": [ "id" ], "additionalProperties": false }, "annotations": { "title": "Get a tracker", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "tracker_get_url", "title": "Get a tracking link", "description": "Get tracking URL for a tracker. (CLI: p202 tracker get-url)", "inputSchema": { "type": "object", "properties": { "c1": { "type": "string", "description": "Value for c1 in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" }, "c2": { "type": "string", "description": "Value for c2 in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" }, "c3": { "type": "string", "description": "Value for c3 in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" }, "c4": { "type": "string", "description": "Value for c4 in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" }, "id": { "type": "string", "description": "Tracker id (from tracker_list).", "pattern": "^[0-9]{1,20}$" }, "t202b": { "type": "string", "description": "Value for t202b in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" }, "t202kw": { "type": "string", "description": "Value for t202kw in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" }, "t202ref": { "type": "string", "description": "Value for t202ref in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" }, "utm_campaign": { "type": "string", "description": "Value for utm_campaign in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" }, "utm_content": { "type": "string", "description": "Value for utm_content in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" }, "utm_medium": { "type": "string", "description": "Value for utm_medium in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" }, "utm_source": { "type": "string", "description": "Value for utm_source in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" }, "utm_term": { "type": "string", "description": "Value for utm_term in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" } }, "required": [ "id" ], "additionalProperties": false }, "annotations": { "title": "Get a tracking link", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "tracker_create_with_url", "title": "Create a tracking link", "description": "Create a tracker and return its tracking URL. (CLI: p202 tracker create-with-url)", "inputSchema": { "type": "object", "properties": { "aff_campaign_id": { "type": "string", "description": "Campaign ID (from campaign_list); 0 for a link to a redirector (rotator_id) or an advanced landing page", "pattern": "^[0-9]{1,20}$" }, "c1": { "type": "string", "description": "Value for c1 in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" }, "c2": { "type": "string", "description": "Value for c2 in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" }, "c3": { "type": "string", "description": "Value for c3 in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" }, "c4": { "type": "string", "description": "Value for c4 in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" }, "click_cloaking": { "type": "string", "description": "Cloaking: 1 on, 0 off, -1 use the campaign's setting: -1, 0, 1", "enum": [ "-1", "0", "1" ] }, "click_cpa": { "type": "string", "description": "Cost per action, 0-99.99999; on update, makes the tracker CPA and clears its cost per click. Not with click_cpc" }, "click_cpc": { "type": "string", "description": "Cost per click, 0-99.99999; on update, makes the tracker CPC and clears its cost per action" }, "landing_page_id": { "type": "string", "description": "Landing page ID", "pattern": "^[0-9]{1,20}$" }, "ppc_account_id": { "type": "string", "description": "PPC account ID", "pattern": "^[0-9]{1,20}$" }, "rotator_id": { "type": "string", "description": "Rotator ID", "pattern": "^[0-9]{1,20}$" }, "t202b": { "type": "string", "description": "Value for t202b in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" }, "t202kw": { "type": "string", "description": "Value for t202kw in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" }, "t202ref": { "type": "string", "description": "Value for t202ref in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" }, "text_ad_id": { "type": "string", "description": "Text ad ID", "pattern": "^[0-9]{1,20}$" }, "tracker_id_public": { "type": "string", "description": "Public tracker ID" }, "utm_campaign": { "type": "string", "description": "Value for utm_campaign in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" }, "utm_content": { "type": "string", "description": "Value for utm_content in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" }, "utm_medium": { "type": "string", "description": "Value for utm_medium in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" }, "utm_source": { "type": "string", "description": "Value for utm_source in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" }, "utm_term": { "type": "string", "description": "Value for utm_term in the link, as given (e.g. your traffic source's macro); default: the traffic source's own variable" } }, "additionalProperties": false }, "annotations": { "title": "Create a tracking link", "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } }, { "name": "tracker_update", "title": "Update a tracker", "description": "Update a tracker. (CLI: p202 tracker update)", "inputSchema": { "type": "object", "properties": { "aff_campaign_id": { "type": "string", "description": "Campaign ID (from campaign_list); 0 for a link to a redirector (rotator_id) or an advanced landing page", "pattern": "^[0-9]{1,20}$" }, "click_cloaking": { "type": "string", "description": "Cloaking: 1 on, 0 off, -1 use the campaign's setting: -1, 0, 1", "enum": [ "-1", "0", "1" ] }, "click_cpa": { "type": "string", "description": "Cost per action, 0-99.99999; on update, makes the tracker CPA and clears its cost per click. Not with click_cpc" }, "click_cpc": { "type": "string", "description": "Cost per click, 0-99.99999; on update, makes the tracker CPC and clears its cost per action" }, "id": { "type": "string", "description": "Tracker id (from tracker_list).", "pattern": "^[0-9]{1,20}$" }, "landing_page_id": { "type": "string", "description": "Landing page ID (from landing_page_list)", "pattern": "^[0-9]{1,20}$" }, "ppc_account_id": { "type": "string", "description": "PPC account ID (from ppc_account_list)", "pattern": "^[0-9]{1,20}$" }, "rotator_id": { "type": "string", "description": "Rotator ID (from rotator_list)", "pattern": "^[0-9]{1,20}$" }, "text_ad_id": { "type": "string", "description": "Text ad ID (from text_ad_list)", "pattern": "^[0-9]{1,20}$" }, "tracker_id_public": { "type": "string", "description": "Public tracker ID" } }, "required": [ "id" ], "additionalProperties": false }, "annotations": { "title": "Update a tracker", "readOnlyHint": false, "destructiveHint": true, "idempotentHint": false, "openWorldHint": false } }, { "name": "tracker_delete", "title": "Delete a tracker", "description": "Delete a tracker. Its tracking links stop working, including any running in ads. It deletes as soon as the call is approved: call it with dry_run: true first and show the user what it would remove. (CLI: p202 tracker delete)", "inputSchema": { "type": "object", "properties": { "dry_run": { "type": "boolean", "description": "Preview what the delete would remove (record + cascade counts) without deleting" }, "id": { "type": "string", "description": "Tracker id (from tracker_list); or give ids for several.", "pattern": "^[0-9]{1,20}$" }, "ids": { "type": "string", "description": "Comma-separated tracker IDs to delete in bulk" } }, "additionalProperties": false }, "annotations": { "title": "Delete a tracker", "readOnlyHint": false, "destructiveHint": true, "idempotentHint": true, "openWorldHint": false } }, { "name": "landing_page_list", "title": "List landing pages", "description": "List landing pages (pre-sell pages visitors see before the offer). (CLI: p202 landing-page list)", "inputSchema": { "type": "object", "properties": { "aff_campaign_id": { "type": "string", "description": "Filter by campaign ID (from campaign_list)", "pattern": "^[0-9]{1,20}$" }, "all": { "type": "boolean", "description": "Fetch all rows across pages" }, "limit": { "type": "string", "description": "Max results" }, "offset": { "type": "string", "description": "Pagination offset" }, "page": { "type": "string", "description": "Page number" }, "resolve_names": { "type": "boolean", "description": "Resolve foreign key IDs to names" }, "url_contains": { "type": "string", "description": "Only landing-pages with a URL containing this text (case-insensitive; searches every page; fields: landing_page_url, leave_behind_page_url)" } }, "additionalProperties": false }, "annotations": { "title": "List landing pages", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "landing_page_get", "title": "Get a landing page", "description": "Get a landing-page by ID. (CLI: p202 landing-page get)", "inputSchema": { "type": "object", "properties": { "id": { "type": "string", "description": "Landing page id (from landing_page_list).", "pattern": "^[0-9]{1,20}$" }, "public": { "type": "boolean", "description": "Treat the id as the public landing_page_id_public" } }, "required": [ "id" ], "additionalProperties": false }, "annotations": { "title": "Get a landing page", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "landing_page_code", "title": "Get landing page tracking code", "description": "Print a landing page's tracking code (Setup > Get LP Code). (CLI: p202 landing-page code)", "inputSchema": { "type": "object", "properties": { "id": { "type": "string", "description": "Landing page id (from landing_page_list).", "pattern": "^[0-9]{1,20}$" }, "offer": { "type": "array", "description": "An advanced page's offer, campaign:ID or rotator:ID; repeat the flag (or comma-separate) for each, in order", "items": { "type": "string" } } }, "required": [ "id" ], "additionalProperties": false }, "annotations": { "title": "Get landing page tracking code", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "landing_page_create", "title": "Create a landing page", "description": "Create a new landing-page. (CLI: p202 landing-page create)", "inputSchema": { "type": "object", "properties": { "aff_campaign_id": { "type": "string", "description": "Campaign ID (from campaign_list); 0 for an advanced landing page (landing_page_type 1), which promotes several offers (required)", "pattern": "^[0-9]{1,20}$" }, "landing_page_nickname": { "type": "string", "description": "Landing page nickname (required)" }, "landing_page_type": { "type": "string", "description": "Landing page type: 0 simple (one campaign), 1 advanced (several offers; aff_campaign_id 0)" }, "landing_page_url": { "type": "string", "description": "Landing page URL (required)" }, "leave_behind_page_url": { "type": "string", "description": "Leave-behind page URL" } }, "required": [ "aff_campaign_id", "landing_page_nickname", "landing_page_url" ], "additionalProperties": false }, "annotations": { "title": "Create a landing page", "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } }, { "name": "landing_page_update", "title": "Update a landing page", "description": "Update a landing-page. (CLI: p202 landing-page update)", "inputSchema": { "type": "object", "properties": { "aff_campaign_id": { "type": "string", "description": "Campaign ID (from campaign_list); 0 for an advanced landing page (landing_page_type 1), which promotes several offers", "pattern": "^[0-9]{1,20}$" }, "id": { "type": "string", "description": "Landing page id (from landing_page_list).", "pattern": "^[0-9]{1,20}$" }, "landing_page_nickname": { "type": "string", "description": "Landing page nickname" }, "landing_page_type": { "type": "string", "description": "Landing page type: 0 simple (one campaign), 1 advanced (several offers; aff_campaign_id 0)" }, "landing_page_url": { "type": "string", "description": "Landing page URL" }, "leave_behind_page_url": { "type": "string", "description": "Leave-behind page URL (\"\" clears it)" } }, "required": [ "id" ], "additionalProperties": false }, "annotations": { "title": "Update a landing page", "readOnlyHint": false, "destructiveHint": true, "idempotentHint": false, "openWorldHint": false } }, { "name": "landing_page_delete", "title": "Delete a landing page", "description": "Delete a landing-page. It deletes as soon as the call is approved: call it with dry_run: true first and show the user what it would remove. (CLI: p202 landing-page delete)", "inputSchema": { "type": "object", "properties": { "dry_run": { "type": "boolean", "description": "Preview what the delete would remove (record + cascade counts) without deleting" }, "id": { "type": "string", "description": "Landing page id (from landing_page_list); or give ids for several.", "pattern": "^[0-9]{1,20}$" }, "ids": { "type": "string", "description": "Comma-separated landing-page IDs to delete in bulk" } }, "additionalProperties": false }, "annotations": { "title": "Delete a landing page", "readOnlyHint": false, "destructiveHint": true, "idempotentHint": true, "openWorldHint": false } }, { "name": "ppc_network_list", "title": "List traffic sources", "description": "List traffic source networks (PPC networks). (CLI: p202 ppc-network list)", "inputSchema": { "type": "object", "properties": { "all": { "type": "boolean", "description": "Fetch all rows across pages" }, "limit": { "type": "string", "description": "Max results" }, "offset": { "type": "string", "description": "Pagination offset" }, "page": { "type": "string", "description": "Page number" }, "resolve_names": { "type": "boolean", "description": "Resolve foreign key IDs to names" } }, "additionalProperties": false }, "annotations": { "title": "List traffic sources", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "ppc_network_create", "title": "Create a traffic source", "description": "Create a new ppc-network. (CLI: p202 ppc-network create)", "inputSchema": { "type": "object", "properties": { "ppc_network_name": { "type": "string", "description": "Network name (required)" } }, "required": [ "ppc_network_name" ], "additionalProperties": false }, "annotations": { "title": "Create a traffic source", "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } }, { "name": "ppc_account_list", "title": "List traffic source accounts", "description": "List traffic sources (PPC accounts). (CLI: p202 ppc-account list)", "inputSchema": { "type": "object", "properties": { "all": { "type": "boolean", "description": "Fetch all rows across pages" }, "limit": { "type": "string", "description": "Max results" }, "offset": { "type": "string", "description": "Pagination offset" }, "page": { "type": "string", "description": "Page number" }, "ppc_network_id": { "type": "string", "description": "Filter by PPC network ID (from ppc_network_list)", "pattern": "^(?:[0-9]{1,20}|none)$" }, "resolve_names": { "type": "boolean", "description": "Resolve foreign key IDs to names" } }, "additionalProperties": false }, "annotations": { "title": "List traffic source accounts", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "ppc_account_create", "title": "Create a traffic source account", "description": "Create a new ppc-account. (CLI: p202 ppc-account create)", "inputSchema": { "type": "object", "properties": { "ppc_account_default": { "type": "string", "description": "Set as default account (1) or not (0): 0, 1" }, "ppc_account_name": { "type": "string", "description": "Account name (required)" }, "ppc_network_id": { "type": "string", "description": "PPC network ID (from ppc_network_list) (required)", "pattern": "^(?:[0-9]{1,20}|none)$" } }, "required": [ "ppc_account_name", "ppc_network_id" ], "additionalProperties": false }, "annotations": { "title": "Create a traffic source account", "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } }, { "name": "aff_network_list", "title": "List categories", "description": "List categories (affiliate networks). (CLI: p202 aff-network list)", "inputSchema": { "type": "object", "properties": { "all": { "type": "boolean", "description": "Fetch all rows across pages" }, "limit": { "type": "string", "description": "Max results" }, "offset": { "type": "string", "description": "Pagination offset" }, "page": { "type": "string", "description": "Page number" }, "resolve_names": { "type": "boolean", "description": "Resolve foreign key IDs to names" } }, "additionalProperties": false }, "annotations": { "title": "List categories", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "aff_network_create", "title": "Create a category", "description": "Create a new aff-network. (CLI: p202 aff-network create)", "inputSchema": { "type": "object", "properties": { "aff_network_name": { "type": "string", "description": "Network name (required)" }, "dni_network_id": { "type": "string", "description": "DNI network ID", "pattern": "^[0-9]{1,20}$" } }, "required": [ "aff_network_name" ], "additionalProperties": false }, "annotations": { "title": "Create a category", "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } }, { "name": "text_ad_list", "title": "List text ads", "description": "List text ads (ad creatives with headline, description, and display URL). (CLI: p202 text-ad list)", "inputSchema": { "type": "object", "properties": { "aff_campaign_id": { "type": "string", "description": "Filter by campaign ID (from campaign_list)", "pattern": "^[0-9]{1,20}$" }, "all": { "type": "boolean", "description": "Fetch all rows across pages" }, "limit": { "type": "string", "description": "Max results" }, "offset": { "type": "string", "description": "Pagination offset" }, "page": { "type": "string", "description": "Page number" }, "resolve_names": { "type": "boolean", "description": "Resolve foreign key IDs to names" } }, "additionalProperties": false }, "annotations": { "title": "List text ads", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "rotator_list", "title": "List rotators", "description": "List all redirectors/rotators. (CLI: p202 rotator list)", "inputSchema": { "type": "object", "properties": { "all": { "type": "boolean", "description": "Fetch all rows across pages" }, "limit": { "type": "string", "description": "Max results" }, "offset": { "type": "string", "description": "Pagination offset" } }, "additionalProperties": false }, "annotations": { "title": "List rotators", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "rotator_get", "title": "Get a rotator and its rules", "description": "Get a redirector/rotator and its routing rules by ID. (CLI: p202 rotator get)", "inputSchema": { "type": "object", "properties": { "id": { "type": "string", "description": "Rotator id (from rotator_list).", "pattern": "^[0-9]{1,20}$" } }, "required": [ "id" ], "additionalProperties": false }, "annotations": { "title": "Get a rotator and its rules", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "rotator_stats", "title": "Rotator performance", "description": "Show a rotator's performance: its totals, each rule, and its default (clicks no rule matched). (CLI: p202 rotator stats)", "inputSchema": { "type": "object", "properties": { "aff_campaign_id": { "type": "string", "description": "Filter by INTERNAL campaign id (from campaign_list), not the public id in tracking URLs", "pattern": "^[0-9]{1,20}$" }, "aff_network_id": { "type": "string", "description": "Filter by affiliate network ID", "pattern": "^[0-9]{1,20}$" }, "country_id": { "type": "string", "description": "Filter by country ID", "pattern": "^[0-9]{1,20}$" }, "id": { "type": "string", "description": "Rotator id (from rotator_list).", "pattern": "^[0-9]{1,20}$" }, "keyword": { "type": "string", "description": "Only clicks whose keyword contains this text (case-insensitive)" }, "landing_page_id": { "type": "string", "description": "Filter by landing page ID", "pattern": "^[0-9]{1,20}$" }, "period": { "type": "string", "description": "Period: today, yesterday, last7, last14, last30, last90, thismonth, lastmonth, thisyear, lastyear, alltime" }, "ppc_account_id": { "type": "string", "description": "Filter by PPC account ID", "pattern": "^[0-9]{1,20}$" }, "ppc_network_id": { "type": "string", "description": "Filter by PPC network ID, or none for the clicks with no traffic source", "pattern": "^(?:[0-9]{1,20}|none)$" }, "show": { "type": "string", "description": "Which clicks count (default all): all, real, filtered, filtered_bot, leads; real = not filtered, filtered_bot = filtered as bots, leads = converted" }, "time_from": { "type": "string", "description": "Start: unix seconds, a date (2026-10-01, from its first second in the account's timezone) or a time with its offset (2026-10-01T09:30:00Z)" }, "time_to": { "type": "string", "description": "End, inclusive: unix seconds, a date (2026-10-01, through its last second in the account's timezone) or a time with its offset" } }, "required": [ "id" ], "additionalProperties": false }, "annotations": { "title": "Rotator performance", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "click_list", "title": "List clicks", "description": "List tracked clicks with optional filters by campaign, time range, or bot status. (CLI: p202 click list)", "inputSchema": { "type": "object", "properties": { "aff_campaign_id": { "type": "string", "description": "Filter by INTERNAL campaign id (from campaign_list), not the public id in tracking URLs", "pattern": "^[0-9]{1,20}$" }, "aff_network_id": { "type": "string", "description": "Filter by affiliate network ID", "pattern": "^[0-9]{1,20}$" }, "all": { "type": "boolean", "description": "Fetch all rows across pages" }, "browser_id": { "type": "string", "description": "Filter by browser ID (the id of a `breakdown browser` row)", "pattern": "^[0-9]{1,20}$" }, "click_bot": { "type": "string", "description": "Filter: 0=human, 1=bot: 0, 1" }, "click_lead": { "type": "string", "description": "Filter: 0=clicks only, 1=conversions only: 0, 1" }, "country_id": { "type": "string", "description": "Filter by country ID", "pattern": "^[0-9]{1,20}$" }, "device_type": { "type": "string", "description": "Filter by device type ID: 1 Desktop, 2 Mobile, 3 Tablet, 4 Bot (the ids of `breakdown device_type` rows)" }, "ip": { "type": "string", "description": "Only clicks from this one IP address, IPv4 or IPv6" }, "isp_id": { "type": "string", "description": "Filter by ISP/carrier ID (the id of a `breakdown isp` row)", "pattern": "^[0-9]{1,20}$" }, "keyword": { "type": "string", "description": "Only clicks whose keyword contains this text (case-insensitive)" }, "landing_page_id": { "type": "string", "description": "Filter by landing page ID", "pattern": "^[0-9]{1,20}$" }, "limit": { "type": "string", "description": "Max results" }, "method_of_promotion": { "type": "string", "description": "Only direct-link clicks or only landing-page clicks: directlink, landingpage" }, "offset": { "type": "string", "description": "Pagination offset" }, "page": { "type": "string", "description": "Page number (maps to offset)" }, "period": { "type": "string", "description": "Period: today, yesterday, last7, last14, last30, last90, thismonth, lastmonth, thisyear, lastyear, alltime" }, "platform_id": { "type": "string", "description": "Filter by platform (OS) ID (the id of a `breakdown platform` row)", "pattern": "^[0-9]{1,20}$" }, "ppc_account_id": { "type": "string", "description": "Filter by PPC account ID", "pattern": "^[0-9]{1,20}$" }, "ppc_network_id": { "type": "string", "description": "Filter by PPC network ID, or none for the clicks with no traffic source", "pattern": "^(?:[0-9]{1,20}|none)$" }, "referer": { "type": "string", "description": "Only clicks whose referring URL contains this text (case-insensitive)" }, "region_id": { "type": "string", "description": "Filter by region ID (the id of a `breakdown region` row)", "pattern": "^[0-9]{1,20}$" }, "show": { "type": "string", "description": "Which clicks count (default all): all, real, filtered, filtered_bot, leads; real = not filtered, filtered_bot = filtered as bots, leads = converted" }, "text_ad_id": { "type": "string", "description": "Filter by text ad ID", "pattern": "^[0-9]{1,20}$" }, "time_from": { "type": "string", "description": "Start: unix seconds, a date (2026-10-01, from its first second in the account's timezone) or a time with its offset (2026-10-01T09:30:00Z)" }, "time_to": { "type": "string", "description": "End, inclusive: unix seconds, a date (2026-10-01, through its last second in the account's timezone) or a time with its offset" } }, "additionalProperties": false }, "annotations": { "title": "List clicks", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "click_get", "title": "Get a click", "description": "Get a click by ID. (CLI: p202 click get)", "inputSchema": { "type": "object", "properties": { "id": { "type": "string", "description": "Click id (from click_list).", "pattern": "^[0-9]{1,20}$" } }, "required": [ "id" ], "additionalProperties": false }, "annotations": { "title": "Get a click", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "click_conversions", "title": "Explain a click's conversions", "description": "Explain a click's value: every conversion on it, whether it counts, and why not. (CLI: p202 click conversions)", "inputSchema": { "type": "object", "properties": { "click_id": { "type": "string", "description": "Click id (from click_list).", "pattern": "^[0-9]{1,20}$" } }, "required": [ "click_id" ], "additionalProperties": false }, "annotations": { "title": "Explain a click's conversions", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "conversion_list", "title": "List conversions", "description": "List conversions. (CLI: p202 conversion list)", "inputSchema": { "type": "object", "properties": { "aff_campaign_id": { "type": "string", "description": "Filter by campaign ID", "pattern": "^[0-9]{1,20}$" }, "all": { "type": "boolean", "description": "Fetch all rows across pages" }, "click_id": { "type": "string", "description": "Only this click's conversions (see also `p202 click conversions <id>`)", "pattern": "^[0-9]{1,20}$" }, "goal": { "type": "string", "description": "Only this goal's outcomes, every version (goal id from `p202 goal list`)" }, "limit": { "type": "string", "description": "Max results" }, "offset": { "type": "string", "description": "Pagination offset" }, "source": { "type": "string", "description": "Only conversions from this source: pixel, postback, universal_pixel, api, subid_upload, revenue_upload, legacy_pixel, clickbank, app_install, goal, legacy_baseline" }, "time_from": { "type": "string", "description": "Start: unix seconds, a date (2026-10-01, from its first second in the account's timezone) or a time with its offset (2026-10-01T09:30:00Z)" }, "time_to": { "type": "string", "description": "End, inclusive: unix seconds, a date (2026-10-01, through its last second in the account's timezone) or a time with its offset" } }, "additionalProperties": false }, "annotations": { "title": "List conversions", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "conversion_get", "title": "Get a conversion", "description": "Get a conversion by ID. (CLI: p202 conversion get)", "inputSchema": { "type": "object", "properties": { "id": { "type": "string", "description": "Conversion id (from conversion_list).", "pattern": "^[0-9]{1,20}$" } }, "required": [ "id" ], "additionalProperties": false }, "annotations": { "title": "Get a conversion", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "conversion_postback_url", "title": "Get the postback URL", "description": "Print the server-to-server postback URL to give your affiliate network (Setup > Postback / Pixel). (CLI: p202 conversion postback-url)", "inputSchema": { "type": "object", "properties": { "amount": { "type": "string", "description": "Amount: a number, or your network's payout macro such as {payout}; empty pays the campaign's payout" }, "campaign": { "type": "string", "description": "Campaign ID the advanced pixel reports under (fills cid; from p202 campaign list)" }, "scheme": { "type": "string", "description": "http or https (default: the scheme the tracking domain is reached on): http, https" }, "subid": { "type": "string", "description": "Your network's sub id macro, such as {aff_sub}, #s1#, xxC1xx or [=SID=]; empty leaves subid= for you to fill" }, "type": { "type": "string", "description": "Pixel type: simple, advanced (default simple; advanced when campaign is given): simple, advanced" } }, "additionalProperties": false }, "annotations": { "title": "Get the postback URL", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "change_list", "title": "List proposed changes", "description": "List staged changes (yours; all for every user's, admin only). (CLI: p202 change list)", "inputSchema": { "type": "object", "properties": { "all": { "type": "boolean", "description": "Every user's changes, not just yours (admin only)" }, "status": { "type": "string", "description": "Filter by status: staged, applying, applied, discarded, apply_interrupted" } }, "additionalProperties": false }, "annotations": { "title": "List proposed changes", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "change_show", "title": "Show a proposed change", "description": "Show one staged change, including its payload and preview. (CLI: p202 change show)", "inputSchema": { "type": "object", "properties": { "change_id": { "type": "string", "description": "Change id (chg_..., from change_list).", "pattern": "^chg_[A-Za-z0-9]{1,64}$" } }, "required": [ "change_id" ], "additionalProperties": false }, "annotations": { "title": "Show a proposed change", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "change_apply", "title": "Apply a proposed change", "description": "Apply a staged change (performs the recorded write). (CLI: p202 change apply)", "inputSchema": { "type": "object", "properties": { "change_id": { "type": "string", "description": "Change id (chg_..., from change_list).", "pattern": "^chg_[A-Za-z0-9]{1,64}$" } }, "required": [ "change_id" ], "additionalProperties": false }, "annotations": { "title": "Apply a proposed change", "readOnlyHint": false, "destructiveHint": true, "idempotentHint": false, "openWorldHint": false } }, { "name": "change_discard", "title": "Discard a proposed change", "description": "Discard a staged change without performing it. (CLI: p202 change discard)", "inputSchema": { "type": "object", "properties": { "change_id": { "type": "string", "description": "Change id (chg_..., from change_list).", "pattern": "^chg_[A-Za-z0-9]{1,64}$" } }, "required": [ "change_id" ], "additionalProperties": false }, "annotations": { "title": "Discard a proposed change", "readOnlyHint": false, "destructiveHint": true, "idempotentHint": true, "openWorldHint": false } }, { "name": "whoami", "title": "Who this connection acts as", "description": "Show the user, roles and scopes the configured API key acts as. (CLI: p202 whoami)", "inputSchema": { "type": "object", "properties": {}, "additionalProperties": false }, "annotations": { "title": "Who this connection acts as", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } }, { "name": "system_info", "title": "Install information", "description": "What Account › Settings shows: versions, PHP limits, memcache, clicks recorded, database size, cron, DataEngine. (CLI: p202 system info)", "inputSchema": { "type": "object", "properties": {}, "additionalProperties": false }, "annotations": { "title": "Install information", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false } } ], "staged_excludes": [ "change_apply", "change_discard" ], "staged_instructions": "\n- This connection only proposes changes: a write returns a change id (chg_...) and changes nothing. Tell the user; applying a proposal is theirs to do (`p202 change apply <id>`), not this assistant's.", "max_input_bytes": 262144, "hosted_excludes": [ "system_info" ] }
03Build your command
Pick values and the command line writes itself, quoted and ready to paste.
p202 mcp toolsSet flags below; the command updates as you type.
04Flags
1 flag, plus the global flags every command takes.
| Flag | What it does |
|---|---|
| --read-onlybool | List only the tools that read |
05For agents
Running this from an agent
- Read the same facts as JSON:
p202 commands mcp tools --json. - With
AI_AGENT,CLAUDECODEor another agent variable set, output is compact JSON and errors arrive on stderr as a JSON envelope with ahint. - Exit codes: 0 ok, 1 bad input, 2 auth, 3 network, 4 server error, 5 partial failure, 6 no Pro licence on the install.
{
"path": "p202 mcp tools",
"use": "tools",
"short": "List the MCP tools as JSON (names, input schemas, read/write hints)",
"runnable": true,
"flags": [
{
"name": "read-only",
"type": "bool",
"default": "false",
"usage": "List only the tools that read",
"required": false
}
]
}