p202 mcp tools

List the MCP tools as JSON (names, input schemas, read/write hints)

New in 1.9.78
All commands

01Run it

Replace the <placeholders> with your own values, or use the builder below.

p202 mcp tools

02What 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
$ 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"
  ]
}
Real output · p202 1.9.78 · demo dataexit 0

03Build your command

Pick values and the command line writes itself, quoted and ready to paste.

p202 mcp tools

Set flags below; the command updates as you type.

04Flags

1 flag, plus the global flags every command takes.

FlagWhat it does
--read-onlyboolList 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, CLAUDECODE or another agent variable set, output is compact JSON and errors arrive on stderr as a JSON envelope with a hint.
  • Exit codes: 0 ok, 1 bad input, 2 auth, 3 network, 4 server error, 5 partial failure, 6 no Pro licence on the install.
p202 commands mcp tools --json
{
  "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
    }
  ]
}