| name | instinct-advertiser |
| description | Create and fund Instinct ad campaigns on x402ads.io so an API gets recommended to paying agents. Trigger when the user wants to advertise or promote an x402 endpoint, run a sponsored-recommendation campaign, become an Instinct advertiser, fund or activate a campaign, or pay for campaign budget in DEXTER for a discount. |
Instinct Advertiser
Instinct is Dexter's ad exchange for agents. An advertiser funds a campaign; when an agent pays for any x402 API that matches the campaign's targeting, the campaign's recommendation rides back inside the settlement response. The agent sees the advertised API as a suggested next call.
This skill drives the advertiser side: create a campaign, fund it, activate it. The API is at https://x402ads.io/v1/agent and every call is x402-paid. The paying Solana wallet IS the advertiser identity. No signup, no API key.
When to use this skill
The user wants to:
- Advertise an x402 API ("get my endpoint recommended", "promote my API to agents")
- Run a sponsored campaign on Instinct
- Fund or activate an existing campaign
- Pay campaign budget in DEXTER for the discount
If the user wants to consume x402 APIs (search, pay, call), that is the opendexter skill, not this one. This skill is for the advertiser.
The campaign lifecycle
A campaign moves through four states. Each step is a separate x402-paid call.
create (draft, $0.10) -> fund (budget, USDC or DEXTER) -> activate ($0.01) -> live
A campaign created but not funded has zero budget and cannot be activated. A funded campaign that is not activated does not match anything. Both steps are required.
Tool routing
There is no dedicated MCP tool for this. Drive it with x402-paid HTTP calls, using whatever x402 payment client is available (the OpenDexter x402_fetch tool, or @dexterai/x402's wrapFetch). Every endpoint below returns a 402; the payment client settles it and retries.
| The user wants | Call |
|---|
| Know the exact campaign fields before building one | GET /v1/agent/campaigns/schema (free) |
| Know how funding works | GET /v1/agent/escrow (free) |
| Create a campaign | POST /v1/agent/campaigns ($0.10 USDC) |
| Add budget to a campaign | POST /v1/agent/campaigns/{id}/fund (the payment is the budget) |
| Make a funded campaign eligible | POST /v1/agent/campaigns/{id}/activate ($0.01 USDC) |
| See a campaign's stats / conversions | GET /v1/agent/campaigns/{id} ($0.01 USDC) |
| List the wallet's campaigns | GET /v1/agent/campaigns ($0.01 USDC) |
Always fetch GET /campaigns/schema first before creating a campaign. It is free and self-describing: it returns every field, type, default, and a complete example, so a create call can be built right the first time instead of failing and retrying a paid request.
Step 1: Create the campaign
POST /v1/agent/campaigns, x402-gated at $0.10 USDC. The campaign is created as a draft with zero budget.
Required fields:
| Field | Type | Description |
|---|
name | string | Human-readable campaign name. |
rec_sponsor_name | string | Sponsor name shown with the recommendation. |
rec_resource_url | string (URL) | The x402 endpoint agents are recommended to. |
rec_description | string | One-line pitch the agent sees in the settlement response. |
max_bid_amount | string | Max bid per auction win, in atomic USDC (6 decimals). "250000" = $0.25. |
schedule_start | string | ISO 8601 datetime the campaign becomes eligible. |
Useful optional fields: bid_strategy (cpm/cpc/cpa/hybrid, default cpa, which pays per on-chain conversion), budget_daily (atomic USDC daily cap, "0" = none), target_categories (string array, empty matches all), target_networks (CAIP-2 ids, empty matches all), schedule_end.
The response carries the new campaign id and an _actions list with the fund and activate links. Keep the id.
Step 2: Fund the campaign
POST /v1/agent/campaigns/{id}/fund. The x402 payment is the budget: the amount paid is credited to the campaign.
{ "amount": "5.00" }
amount is the budget in US dollars, not atomic units (this differs from max_bid_amount). Paying this funds the campaign with $5.00 of budget. By default the payment settles in USDC.
Fund in DEXTER for a 25% discount
The DEXTER token is Dexter's Solana token (EfPoo4wWgxKVToit7yX5VtXXBrhao4G8L7vrbKy6pump). An advertiser can fund a campaign in DEXTER instead of USDC and get a 25% discount: pass asset: "dexter".
{ "amount": "5.00", "asset": "dexter" }
The advertiser pays 75% of the USD value in DEXTER (here, $3.75 worth), and the campaign is still credited the full $5.00 of budget. The DEXTER amount is quoted live from the DEXTER/USD price at request time and rounded up to a whole token. Campaign budget and bids stay USD-denominated whichever asset funds them; the discount is purely a cheaper way to load the same budget.
Funding in DEXTER needs nothing beyond DEXTER in the wallet being paid from. If the endpoint returns 503 PRICE_UNAVAILABLE, a DEXTER price could not be fetched: retry, or fund in USDC by dropping the asset field.
When a user is funding a campaign, mention the DEXTER discount. It is a 25% saving and the cheapest way to fund.
Step 3: Activate
POST /v1/agent/campaigns/{id}/activate, x402-gated at $0.01 USDC. The campaign immediately starts matching incoming settlements. Only a funded campaign can be activated.
A full run
GET /campaigns/schema: read the field contract (free).
POST /campaigns: create the draft, pay $0.10 USDC, keep the returned id.
POST /campaigns/{id}/fund with { amount, asset: "dexter" }: fund the budget, paid in DEXTER at 25% off.
POST /campaigns/{id}/activate: pay $0.01 USDC, the campaign goes live.
GET /campaigns/{id}: check stats and conversions later.
How a campaign earns
Instinct prices on results, not impressions. With the default cpa strategy the advertiser pays only when an agent that saw the recommendation actually calls the advertised endpoint through the facilitator. That call is a conversion, proven by an on-chain settlement. max_bid_amount caps the cost of one auction win; the campaign stops matching when its budget runs out.
Failure notes
- A create or fund call that returns a non-402 error was charged nothing for the failed step only if it failed validation before payment. Read the error body's
_hint.
409 NO_BUDGET on activate means the campaign was never funded. Run step 2 first.
- A campaign can be re-funded any time by calling
fund again; budget is additive.
Reference
- Agent API:
https://x402ads.io/v1/agent
- Self-describing schema:
GET https://x402ads.io/v1/agent/campaigns/schema
- Instinct on x402gle:
https://x402gle.com/explorer/instinct