- Brand
- MNTN
- Category
- Marketing
- Primary Subcategory
- AI Advertising Networks
Integration details
Description
Use your connected MNTN account to inspect advertisers, campaigns, flights, creatives, audiences, and reporting data. Build and update campaign resources, control budgets and delivery, and submit product feedback. Account access and write availability depend on the permissions granted to the connected user.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- AI Advertising Networks
- Secondary Subcategories
- None listed
- Brand
- MNTN
- Access
- Account required
- First tracked
- 2026-10-07
- Tool count
- 30
- Geography
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
ChatGPT Plugin discovery is coming soon
ChatGPT can surface a Plugin when it matches a user's request.Your Plugin Discovery Score measures how often yours appears.
No spam. Unsubscribe any time.
What discovery looks like

Get alerts for MNTN
Get updates when MNTN’s Discoverability Score or category rank changes.
Competing in ChatGPT AI Advertising Networks
View Category30 tools agents can invoke
Report every launch precondition on an MNTN campaign, each with its own status, so you can tell the user what is still outstanding without attempting a launch. Read this before launch_campaign, and whenever a campaign comes back `incomplete`. Branch on each precondition’s `code`, never on its `detail` — the codes are stable, the prose is not. `unmet` is blocking the launch and `detail` says why; `satisfied` is met; `skipped` means MNTN did not evaluate it for this campaign — a live campaign’s pixels are not re-validated and an archived one is not evaluated at all — so treat `skipped` as unknown, never as a pass. A blocker this API version has no name for arrives as `other`, so `ready: false` carrying an unfamiliar code still means the launch will be refused. Two preconditions cannot be cleared through this API: `pixel` needs the tracking and conversion pixels installed on the advertiser’s site, and `creatives` needs an approved creative attached — approval is MNTN’s own review, which list_creatives reports per creative. Report both to the user as MNTN app work rather than offering to clear them here: https://auth.mountain.com. Reading this needs full campaign visibility, since it reports payment, email-verification and website-review state; a caller who only sees campaign IDs and names is refused.
check_launch_readiness
Duplicate a MNTN campaign into a new, independent one. The clone is created in the `build` state — it does not deliver or spend until a budget is opened and it is launched, so this is a safe way to reuse a campaign’s setup. Carried over: attached creatives with their click URLs and weights, and the linked audience. Not carried over: budget — the clone opens with none, exactly like create_campaign; unless set_campaign_budget is among your tools, tell the user to set the budget in the MNTN app (https://auth.mountain.com) rather than assuming the clone is ready to launch. An experiment cannot be cloned, nor can a campaign that is part of a split test — both are rejected. Omit name to let MNTN derive one from the original; MNTN enforces unique campaign names per advertiser, so an explicit name already in use — yours or an auto-derived one — is rejected rather than silently suffixed. This tool is not idempotent — calling it twice creates two clones, so do not retry a call whose outcome you are unsure of.
clone_campaign
Create a new MNTN audience — the targetable set of households a campaign can be pointed at. This spends nothing and changes no delivery: an audience does nothing until a campaign targets it, and this tool does not attach one. Targeting comes from two places. Keywords are contextual audience signals, not search-advertising keywords — call search_keywords first and pass back the parent keywords it returns, because MNTN expands those into the audience server-side and a term it does not recognise contributes nothing. Geography comes from saved geo-lists; an audience with none covers the whole United States. An audience with no keywords and no geo-lists is therefore valid but untargeted, which is rarely what the user meant — say so rather than creating one silently. This tool is not idempotent: calling it twice creates two audiences, so do not retry a call whose outcome you are unsure of; check list_audiences first.
create_audience
Create a new MNTN campaign. The campaign is created in the `incomplete` state: it does not deliver and does not spend until it is launched, so this is the safe way to draft one. It needs an active budget, a goal, an audience, installed pixels and approved creatives before it can launch. Attach creatives here from the advertiser’s library — call list_creatives for the IDs; this API cannot upload a new video. Pixel installation is a change to the user’s website and MNTN reviews creatives itself, so expect both of those to finish outside this API. This tool never sets a budget: the campaign is always created with none, so what it returns is a draft, not a campaign that can launch. Opening the first budget window is normally not available here — unless set_campaign_budget is among your tools, tell the user to set the budget in the MNTN app (https://auth.mountain.com), and report it as outstanding rather than offering to set it yourself. The objective is permanent and cannot be changed later; confirm it with the user before calling. This tool is not idempotent — calling it twice creates two campaigns, so do not retry a call whose outcome you are unsure of; list_campaigns first to check whether it already exists.
create_campaign
Create a reusable geo-list for an MNTN advertiser: a saved set of locations that audiences include or exclude to narrow where a campaign delivers. This spends nothing and changes no delivery — a geo-list does nothing until an audience references it, which create_audience does. MNTN's Media Market is a US regional television market — a geographic area whose households share the same local TV programming — not a metro area or a city. Locations can be named or given as IDs; a name MNTN cannot resolve fails the whole call and names the value, so nothing is half-created. This tool is not idempotent: calling it twice creates two lists, so check list_geo_lists before retrying a call whose outcome you are unsure of.
create_geo_list
Get a single advertiser by ID. Returns only what the authenticated caller is authorized to see.
get_advertiser
Get a single audience by ID.
get_audience
Get a single campaign by ID. Use `expand` to inline the current flight, the audience and/or the attached creatives. Attached creative IDs come back as `creativeIds` either way; `expand=creatives` adds each one’s click-through URL and serving weight, which is what tells you whether a creative can be approved.
get_campaign
Get the audience linked to a given campaign. Returns 404 if the campaign has no linked audience.
get_campaign_audience
Get a flight nested under a campaign. In MNTN a flight is a budget window (a dated budget entity with its own ID), NOT a scheduling pattern or the period an ad airs. Pass "current" as the flight ID to resolve the campaign's active flight.
get_flight
List the locations contained in a geo-list. advertiserId is required for authorization.
get_geo_list_locations
Discover the curated reporting catalog for run_report: each column has a Table.Column token, friendly name, format, help, and whenToUse. Tables have family (graph | segment | hourly | conversions | shared) and incompatibleWith. Prefer Graph for totals; use Segment only to compare (metrics are bloated / not additive); preferred sum is SegmentInfo.Name then Interest (or Interest alone). Graph/Segment/HourlyGraph/Conversions are mutually exclusive. Column whenToUse is authoritative — never derive a metric with arithmetic (subtract, divide, recompute); use the matching curated token. Token-selection only: do not say modeled, last-touch, or raw in answers unless the user asked about attribution, last-touch, or site-wide. Call this BEFORE run_report; only listed tokens are accepted.
get_reporting_metadata
Launch an MNTN campaign so it begins delivering ads and spending real money. This is the only tool here that starts spend, and there is no undo beyond pause_campaign — money already spent is not recoverable. Before calling: read the campaign with get_campaign, tell the user its budget, budget type and schedule in your own message, and get an explicit yes to launching that specific campaign. A general instruction like "get my campaigns running" is not a confirmation. If the budget schedule has already started, elapsed budget periods are not recovered and the launch still proceeds — calling this is the confirmation. Only a launchable campaign can be launched; an `incomplete` one is rejected, and the refusal names the preconditions still outstanding. check_launch_readiness reports the same set without attempting a launch — read it first rather than launching to find out what is missing.
launch_campaign
List advertisers the authenticated caller is authorized to see. Optionally filter by name — pass `query` for a fuzzy cross-field match (a numeric value also matches the advertiser ID) or `companyName` for a case-insensitive substring; this is the advertiser name→ID lookup. Omit all filters to list every advertiser the caller can access. Results are field-scoped to the caller's advertiser view tier; a filter the caller may not use returns a 400.
list_advertisers
List campaigns linked to a given audience.
list_audience_campaigns
List audiences for an advertiser the authenticated caller is authorized to see.
list_audiences
List campaigns for a given advertiser that the authenticated caller is authorized to see. advertiserId is required — PAPI rejects an unscoped campaign list with a 400 (enforced at runtime but not reflected in the OpenAPI spec).
list_campaigns
List an advertiser’s creative library — the uploaded videos a campaign can serve — newest first. Read each entry’s `status` before offering one: `ready` has finished processing and can serve, `processing` is still being ingested, `in_review` is awaiting MNTN approval, and `rejected` cannot be used (see `rejectionReasons`). Treat any other value as not yet usable. Attaching a creative that is not `ready` is allowed and it serves once approved, but it will not deliver in the meantime. The `id` returned here is what create_campaign’s `creatives` takes. Uploading a video is not possible through this API — it needs the file itself — so when the library has nothing suitable, ask the user to upload it in the MNTN app rather than offering to do it here: https://auth.mountain.com
list_creatives
List the flights on an MNTN campaign, oldest first by default. In MNTN a flight is a budget window — a dated budget entity with its own ID — NOT a scheduling pattern or the period an ad airs. Every window is returned, ended and archived ones included, so filter on `status` when you only want what is running or queued. This is how to read a campaign’s budget history and the windows scheduled ahead of the live one; get_flight reads a single window, or "current" for the active one. MNTN may return windows outside the filter you asked for, so read each window’s own `status` rather than assuming the filter was applied.
list_flights
List saved geo-lists for an advertiser.
list_geo_lists
List a canonical reference enum accepted by MNTN campaign, budget, and audience APIs. Pick the enum via `kind`. `budget_types` returns the allowed budget types (distinct from `budget_goals`, which returns budget goal types).
list_reference_data
Pause a live MNTN campaign, halting its delivery and spend. Confirm the exact campaign — by ID, and by the name returned from get_campaign — with the user before calling this; a general instruction like "stop wasting money" or "fix this campaign" is not a confirmation of which campaign to pause. A paused campaign can be restarted with launch_campaign, which starts spend again. Only a live campaign can be paused; PAPI rejects anything else.
pause_campaign
Run a synchronous custom report. Read-only; uses HTTP POST only because the report specification is too large for a query string. Call get_reporting_metadata FIRST — column whenToUse is authoritative; never derive a metric with arithmetic (subtract, divide, recompute), use the curated token instead. Prefer Graph.* for account totals; Segment.* only to compare segments (bloated / not additive; preferred sum ["SegmentInfo.Name","SegmentInfo.Interest"] or Interest alone; Name without Interest rejected). Graph/Segment/HourlyGraph/Conversions cannot be mixed. Token-selection only: do not say modeled, last-touch, or raw in answers unless the user asked about attribution, last-touch, or site-wide. Row keys always use Table.Column names (fullName is always true). Supply a date range as EITHER `preset` OR `begin`+`end` (mutually exclusive).
run_report
Search the US geo-location catalog. Provide at most one of `geoTypeId` or `geoTypeName` (they are mutually exclusive); when neither is given, results default to `Media Market` — a US regional television market (a geographic area whose households share the same local TV programming).
search_geo_locations
Search the keyword catalog for an advertiser. In MNTN a keyword is an audience/contextual targeting signal used to build CTV audiences — NOT a search-advertising keyword, so there are no match types, bids, or search-query semantics.
search_keywords
Send structured feedback about this MCP server to MNTN's engineering team. Use it when a tool returned wrong data, when the user needed something no tool here can do, when the user is stuck, or when something worked notably well. CONFIRM BEFORE SENDING. This publishes every field you supply to an internal MNTN channel. Show the user the exact report you intend to send and get an explicit yes first. Use elicitation if this client supports it, otherwise ask in chat. Submitting silently is a defect. What makes a report useful: set tool_name, put the arguments you passed to that tool in failing_arguments, and state in detail what you expected versus what came back. session_summary is one line stating the user's goal, in words the user approved — not a recap of the conversation. Send nothing from the conversation beyond what these fields ask for. Do not file for your own mistake that you already recovered from, do not file twice in one session (consolidate into one report), and never file instead of answering the user's question. Never put credentials, tokens or personal data in any field.
submit_feedback
Preview or commit a dated budget window on an MNTN campaign. This opens the first budget on a campaign that has none, or schedules alongside existing windows when conflictAction is BOOST or REPLACE. To change only one existing window’s amount, use update_flight_budget. The safe default is dryRun=true: MNTN persists nothing and this tool returns every window the campaign would end up with, including unchanged, new, superseded and $0 gap windows, plus its most serious delivery consequence. Always preview first, show the complete schedule and consequence to the user, and get explicit confirmation. To commit, repeat exactly the same inputs with dryRun=false and acknowledgePlan set to the token from that preview. The tool previews again immediately before writing and refuses if the resulting schedule changed. Consequence-token dates are UTC and can be one date away from the advertiser’s local calendar. REPLACE substitutes the requested budget across overlapping dates; BOOST adds it on top. Both preserve the budget on either side. Because either can redirect committed spend, this tool is destructive. A MONTHLY budget that does not start on the advertiser-local first moment of a month can split into a prorated FLIGHTED lead window plus the recurring MONTHLY window. Report every window, never only the first. A first budget has no daily cap, so a large amount also requires acknowledgeLargeBudget after the user confirms that exact figure.
set_campaign_budget
Change an existing MNTN audience’s keywords or geo-lists. This spends nothing, but an audience is shared: MNTN campaigns point at one rather than each holding a copy, so changing it re-targets every campaign using it, immediately and with no undo through this API. Two things do not work the way the words suggest. Keywords are a replacement, not an addition — whatever you send becomes the whole set, and MNTN rebuilds the audience from it, which also resets its geographic expression to the whole United States (geo-list associations are left alone). What the audience targeted before cannot be restored — this API can neither read nor rewrite the previous targeting, so an audience built anywhere else loses it for good. Geo-lists are the opposite: they are only ever added, and this API cannot remove one, so undoing an attachment means the MNTN app: https://auth.mountain.com. Read the audience with get_audience first and send the full keyword set you want, not just the new ones. If any live campaign targets the audience, this tool refuses the first time and tells you how many — show the user that number and what will change, and only then call again with acknowledgeLiveCampaigns set to it.
update_audience
Change an existing MNTN campaign's name, audience or goal. Every field is a replacement, not an addition, and MNTN keeps no history this API can restore. Read the campaign with get_campaign first, so you know the current values before proposing new ones. Only the fields you send are touched. Changing the audience re-points who sees the ads, so if the campaign is delivering — live, scheduled, or of a status this connection cannot read — this tool refuses once and lists what would change. Show the user, and call again with acknowledgeLiveCampaign set to the campaign ID only once they agree. Renames and goal changes apply straight away whatever the status. A campaign's objective cannot be changed — MNTN rejects it, so it is not offered here. Creatives cannot be changed here either, though create_campaign attaches them: on this route the array is declarative, so one that omits an attached creative detaches it. Use the MNTN app for that: https://auth.mountain.com. Nor is the budget: use update_flight_budget to change the active window, or set_campaign_budget to preview and open or schedule a window. If neither is among your tools, budget changes are an MNTN app job (https://auth.mountain.com); tell the user rather than offering to make them.
update_campaign
Change the budget on an MNTN campaign's active flight — the dated budget window money is actually spent from. This changes real spend, in either direction. Before calling: read the flight with get_flight, tell the user the current budget and the exact new figure in your own message, and get an explicit yes to that number. An instruction like "increase the budget" or "spend more" is not a confirmation of an amount. MNTN accepts one change per campaign per day, so a second call for the same campaign is refused until the next UTC day — do not plan a sequence of adjustments, and do not retry a refused call with a different figure. MNTN also caps a single day’s move at ±25% of the flight’s start-of-day budget, and only the active flight can be changed. budgetType has no effect here: an active flight's billing cadence cannot be changed through this tool, so it always keeps its current cadence regardless of what you pass. Read the current cadence with get_flight; do not use budgetType to try to switch it.
update_flight_budget
MNTN ChatGPT Plugin FAQ
How the directory, categories and Discoverability Score work.
Read the methodologyHow do I improve MNTN's ChatGPT Plugin discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
What are MNTN alternatives on ChatGPT?
As of 2026-10-07, MNTN competes with Apostra, ChatGPT Ads Manager, Omneky, RealtyAds, TikTok Ads in ChatGPT AI Advertising Networks, ranked by public Discoverability Score.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.