Read the site
Services, pricing, methods, case evidence and published lessons.
Start with the reading guideRead the published site, find the right PPC resource and use the calculators with structured inputs.
Services, pricing, methods, case evidence and published lessons.
Start with the reading guideSeven calculators and report checks, with inputs, results and limits.
Browse the tool directoryOpenAPI specification · Resolved tool schemas
WebMCP registers the seven tools on this page when supported by the browser. Calculations run locally using the same code as the calculators.
Browser support varies; the JSON APIs are also available.
HTTP API calls send the supplied values to the server. WebMCP tool calls do not send inputs to the server or read saved calculator inputs.
Check reports, proposed bulk changes or existing video in your assistant.
Download skills and practice filesEach ZIP includes instructions, scripts and a first exercise. Install it in a compatible assistant that can run the scripts, then review its findings before acting.
This directory covers public content and tools. The text and catalogs rebuild with the site; unreleased lesson bodies and confirmation pages are excluded.
Keep source URLs, reporting dates and limitations with any summary. Case-study snapshots show reported account results; they do not establish incremental lift. Teaching examples and practice files are illustrative. Tool results depend on the supplied costs, report scope and model assumptions.
Open a tool for its purpose, limits and an example request. Schemas are generated from the existing API specification.
Which products lose money on ads? Up to 500 products
Limits: Rates are fractions: 0.30 means 30%. Contribution estimates require complete supplied costs; they are not net business profit. Inspect per-product errors even when the batch call succeeds.
POST https://profitfirstppc.com/api/catalog-profit-check
{
"marginToKeep": 0.1,
"products": [
{
"name": "Water bottle 750ml",
"price": 39.99,
"fees": 11.2,
"cost": 9.5,
"conversionRate": 0.12,
"acos": 0.22,
"adSales": 18400
},
{
"name": "Bottle 2-pack",
"price": 24.99,
"fees": 9.1,
"cost": 11.4,
"conversionRate": 0.1,
"acos": 0.31,
"adSales": 9200
}
]
}
Input and result fields: OpenAPI specification. WebMCP name: calculate_catalog_profit.
Check one search term, or up to 500
Limits: Single-term binomial evidence under supplied assumptions. Statistical evidence is not certainty or proof of wasted spend.
POST https://profitfirstppc.com/api/when-to-negate
{
"clicks": 24,
"orders": 0,
"spend": 28.8,
"profitPerOrder": 19.29
}
Input and result fields: OpenAPI specification. WebMCP name: review_search_term_negation.
Send one term's fields, or { defaults, terms: [...] }. Defaults apply to every term unless the term overrides them.
Limits: Single-term, uncalibrated model. Does not estimate incremental profit from harvesting or guarantee future performance.
POST https://profitfirstppc.com/api/harvest-readiness
{
"clicks": 60,
"orders": 12,
"spend": 72,
"profitPerOrder": 12,
"baselineCvr": 0.1
}
Input and result fields: OpenAPI specification. WebMCP name: review_exact_match_readiness.
A click in each placement is worth (sales ÷ clicks) × target ACoS. Returns two options: rebalance (the weakest placement sets the keyword bid) and keep today's keyword bid. Placements under 30 clicks don't set bids. Docs: https://profitfirstppc.com/tools/placement-bid-calculator/
Limits: Rates are fractions. Low-evidence placements and minimum-bid exceptions need review; no Amazon settings are changed.
POST https://profitfirstppc.com/api/placement-bids
{
"breakEvenAcos": 0.482,
"marginToKeep": 0.1,
"keywordBid": 1.0,
"strategy": "fixed",
"placements": {
"topOfSearch": {
"adjustment": 50,
"clicks": 400,
"spend": 560,
"orders": 60,
"sales": 2400
},
"restOfSearch": {
"adjustment": 0,
"clicks": 300,
"spend": 300,
"orders": 24,
"sales": 960
},
"productPages": {
"adjustment": 0,
"clicks": 250,
"spend": 200,
"orders": 8,
"sales": 320
}
}
}
Input and result fields: OpenAPI specification. WebMCP name: calculate_placement_bids.
Pure report analysis. No file upload or storage. Optional sales must use the same purchase attribution window. One currency per request. Orders greater than clicks remain descriptive and skip probability models. Bulk exact-keyword inventory is browser-only. Zero-order spend is not confirmed waste.
Limits: At most 500 normalized rows. Zero-order spend is not confirmed waste. Same report context and attribution definitions are caller prerequisites.
POST https://profitfirstppc.com/api/search-term-report
{
"rows": [
{
"term": "water bottle",
"clicks": 20,
"orders": 0,
"spend": 24,
"sales": 0,
"campaign": "Discovery",
"adGroup": "Bottle",
"matchType": "BROAD"
}
]
}
Input and result fields: OpenAPI specification. WebMCP name: review_search_term_report.
Six-order averaged arithmetic bridge for ACoS change. Same scope and attribution definitions must be checked by the caller. Not a causal diagnosis.
Limits: An arithmetic allocation, not a causal diagnosis. Compare consistent scope, currency and attribution definitions.
POST https://profitfirstppc.com/api/acos-change-explainer
{
"before": {
"clicks": 1000,
"spend": 1000,
"orders": 100,
"sales": 5000
},
"after": {
"clicks": 1000,
"spend": 1200,
"orders": 80,
"sales": 3600
}
}
Input and result fields: OpenAPI specification. WebMCP name: explain_acos_change.
Comparison-basis checklist and currency-compatible numeric gap. Not order-level reconciliation or an exact organic revenue calculation.
Limits: A comparison-basis checklist, not order-level reconciliation or exact organic revenue.
POST https://profitfirstppc.com/api/amazon-report-mismatch-checker
{
"adsSales": 12000,
"retailSales": 10000,
"adsCurrency": "USD",
"retailCurrency": "USD",
"adsStart": "2026-08-01",
"adsEnd": "2026-08-14",
"retailStart": "2026-08-01",
"retailEnd": "2026-08-14",
"dateBasis": "interaction",
"scope": "unknown",
"settled": "yes"
}
Input and result fields: OpenAPI specification. WebMCP name: review_report_comparability.
Allow Google Analytics cookies to measure visits and tool use. Calculator inputs and form answers are not sent to analytics. Privacy details