Now onboarding our first advertisers and publishers

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.

MCP server weather-mcp-server What's the weather in Oslo? get_weather(city: "Oslo") Sunny in Oslo, 14°C SPONSORED Try Demo Co. The best example on the internet. r.vads.au/r/1.359b62ef…

How it works

Two sides, one network: advertisers fund campaigns, publishers place them.

via r.vads.au revenue share (Stripe Connect) Advertiser prepaid wallet, reviewed ad VADS reviews & decides Publisher MCP server + SDK AI assistant shows result + sponsored card User click clicks the listing Advertiser site lands on your page via r.vads.au revenue share (Stripe Connect) Advertiser prepaid wallet, reviewed ad VADS reviews & decides Publisher MCP server + SDK AI assistant shows result + sponsored card User click clicks the listing Advertiser site lands on your page

For advertisers

  1. Fund your wallet

    Prepay by card. Nothing runs until you fund a campaign, and any unspent balance is refundable.

  2. 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.

  3. 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

  1. 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.

  2. Get reviewed

    Your site's declared tools are reviewed before your slots start serving — and you choose which advertisers, categories and domains to exclude.

  3. Get paid

    Earn a revenue share on billed traffic, paid out through Stripe Connect after a short hold to cover refunds and disputes.

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.

Your server VADS SDK Assistant decorate send ack billable once acknowledged
npm install vads-publisher-sdk @modelcontextprotocol/sdk zod

import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
import { Vads } from "vads-publisher-sdk";

const vads = new Vads({
  apiKey: process.env.VADS_API_KEY!,      // site API key: server-side only, never ship it to a client
  slotId: process.env.VADS_SLOT_ID!,      // ad slot UUID, from the publisher portal
  declaredClientRoute: "claude-desktop/1.2", // which approved client/version this traffic is
  // baseUrl and redirectBaseUrl default to the production VADS endpoints; override only for a
  // non-production environment.
});

const server = new McpServer({ name: "weather", version: "1.0.0" });

// Integration point 1: decorate the tool result. `vads.wrap` starts the
// decision the moment the tool starts, runs the handler concurrently, and
// decorates the result once the tool returns.
server.registerTool(
  "get_weather",
  { description: "Current weather", inputSchema: { city: z.string() } },
  vads.wrap(
    "get_weather",
    async ({ city }) => ({ content: [{ type: "text", text: `Sunny in ${city}` }] }),
    { context: { category: "weather", keywords: ["forecast"] } }, // allowlisted metadata only, never tool input/output
  ),
);

// Integration point 2: the post-send hook. Wraps the transport so that once
// a response carrying an ad has actually been sent, its decision is
// acknowledged (this is what makes the impression billable).
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.

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 you paid in is refundable. Promotional credit from a VADS offer is the exception: it's spent after your own balance, expires, and can't be refunded (see the terms). 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.