Sponsored results inside AI tools — reviewed, labelled, and paid for.
VADS is an ad network for MCP servers. Publishers add one SDK call and let their tools show a single, clearly labelled sponsored result — and earn a revenue share for it. Advertisers run prepaid CPM/CPE campaigns that reach agents at the moment they're actually doing something, not just browsing.
How it works
Two sides, one network: advertisers fund campaigns, publishers place them.
For advertisers
-
Fund your wallet
Prepay by card. Nothing runs until you fund a campaign, and any unspent balance is refundable.
-
Create a campaign
Write a short text ad and a destination link. Bill by CPM (impressions) or CPE (engagement), with a budget, daily caps, pacing and category targeting.
-
Go live after review
Every ad and destination is reviewed by staff, and we verify you actually own the destination domain, before it can serve.
For publishers
-
Add the SDK
Drop the TypeScript or Python publisher SDK into your MCP server: one call to decorate a tool result, one hook to acknowledge it after it's sent.
-
Get reviewed
Your site's declared tools are reviewed before your slots start serving — and you choose which advertisers, categories and domains to exclude.
-
Get paid
Earn a revenue share on billed traffic, paid out through Stripe Connect after a short hold to cover refunds and disputes.
What a sponsored result looks like
One sponsored listing, attached to the real tool result and always labelled — never mixed in with the actual answer.
The listing and its disclosure come from the same envelope the SDK attaches to the
tool result (_meta["au.vads/envelope"]) — this mock uses the exact
example from the TypeScript SDK's README.
Trust & safety
Ad networks are easy to get wrong. Here's what's actually built in.
Human review, every time
Every ad and destination is reviewed by staff, and destination domain ownership is verified, before anything can serve.
Always labelled
Sponsored results carry an explicit "sponsored" disclosure in the same envelope as the ad — they're never merged into the tool's own answer.
No tracking on end users
No tracking pixels or cookies are set on the people using your tools. The only context the SDK sends is an allowlisted, non-identifying set of fields — never tool inputs or outputs.
Exact-decimal ledger
Every dollar is tracked in a double-entry ledger with exact decimal arithmetic — no floating-point rounding on money, ever.
Dual control on sensitive actions
Changing where a payout goes, and other high-risk account actions, require a second, distinct organization member to approve — plus a cooling-off period.
Fraud detection built in
Engagement traffic is screened for abuse automatically, and unspent advertiser balance is refundable at any time.
Publisher integration
Two integration points: decorate the tool result, and acknowledge it after it's actually sent. This is the real quickstart from the TypeScript SDK.
npm install @vads/publisher-sdk @modelcontextprotocol/sdk zod
import { Vads } from "@vads/publisher-sdk";
const vads = new Vads({
apiKey: process.env.VADS_API_KEY!, // site API key: server-side only
slotId: process.env.VADS_SLOT_ID!, // from the publisher portal
budgetMs: 150, // max extra time after the tool finishes
});
server.registerTool(
"get_weather",
{ description: "Current weather", inputSchema: { city: z.string() } },
vads.wrap("get_weather", async ({ city }) => ({
content: [{ type: "text", text: `Sunny in ${city}` }],
})),
);
// Post-send hook — required, or the site is CPM-ineligible.
await server.connect(vads.instrumentTransport(new StdioServerTransport()));
The SDK fails open: on any timeout, error or budget overrun it returns your tool's
original result unchanged. A Python SDK (pip install "vads-publisher-sdk[mcp]")
follows the same two-integration-point contract.
sdk/typescript/README.md
sdk/python/README.md
Frequently asked questions
How does pricing work?
Advertisers fund a wallet by card and run campaigns billed either CPM (per impression) or CPE (per engagement), with a budget, daily caps and pacing they control. Publishers earn a revenue share on billed traffic — the exact split shows up on every entry in your publisher dashboard.
When and how do publishers get paid?
Through Stripe Connect, after a hold on newly earned balance (14 days) to cover refunds and disputes. You connect your own Stripe account from the publisher portal.
How long does review take?
Every ad, its destination, and every publisher site's declared tools are reviewed by staff before they can serve — including verifying you own the destination domain. We don't publish a fixed turnaround time yet.
What's allowed?
Ads need to be honest, link to a domain you've verified you control, and pass staff review. We haven't published a full content policy yet — email support@vads.au if you're unsure whether your campaign or site is a fit.
What fees does VADS take?
Every billed event splits into a publisher amount and a platform fee — both are shown, as exact figures, on every ledger entry in your dashboard. We don't quote a flat rate here because it isn't one fixed number in the code.
Do you track the people using MCP tools?
No. There are no tracking pixels or cookies for end users. The only context the SDK ever sends with a request is a small allowlisted set of fields (environment, category, keywords) — never the tool's actual inputs or outputs.
Can advertisers get a refund?
Yes — any unspent wallet balance is refundable. Campaigns can be paused any time, and edits go through review again as a new version before they go live.
Ready to try VADS?
We're onboarding our first advertisers and publishers now — come build the network with us.