Distribution infrastructure · API and MCP coming in V1B
Distribution, as a capability your stack can call.
Brands, the network, campaign runs, evidence and results live on one system. Today your team works it with us directly. In V1B your agents will work it through typed, policy-bound tools, and you can request early access now. Agents will never get unrestricted access to your money, and autonomous execution will be opt-in, one action class at a time.

In one paragraph
distribution.wtf is making distribution a capability software can call. In V1B a company's agent will be able to create an intent, resolve the audience, request a plan and inventory, create a campaign, route it for approval, execute approved actions, follow status, and retrieve evidence and results. Spend, new terms and publishing will stop for human approval unless policy allows them. Early access requests are open now.
Per our V1 product spec, the agent surface is 11 typed tools, from create_intent to stop, with approval on spend, terms and publishing.
The system
One object model, for people and for agents.
A brand's intent becomes a plan, the plan becomes a campaign run, the run produces evidence, and the evidence rolls up into results. The network supplies and fulfils. Your team works on these objects today; in V1B your agents will work on the same ones.
- 01
Brand
company_id
product, ICP, policies
- 02
Intent
intent_id
audience, objective, budget
- 03
Plan
plan_id
nodes, allocation, deliverables
- 04
Campaign run
run_id
state, approvals, actions
- 05
Evidence
evidence_id
artifact, timestamp, verified
- 06
Results
outcome_id
delivery + outcome signals
- Creators
- Podcasts
- Newsletters
- Events
- Communities
- Media
- Partners
A run, from the agent's side
What your agent actually sees.
- distribution.create_intent({ product: "Series A", audience: "US AI engineers", budget: 50000 })→ intent_id: int_7q2k
- distribution.resolve_audience({ intent_id })→ 5 distribution categories
- distribution.plan({ intent_id, max_spend: 50000 })→ plan_9c1f · ranked plan + allocation
- distribution.inventory({ plan_id, window: Oct 10..24 })→ available nodes + terms
- distribution.create_campaign({ plan_id, assets: approved })→ cmp_2hx8 · state: approval
- distribution.approve({ campaign_id, token })→ waiting on human: jane@company
- distribution.execute({ campaign_id })→ run_5ka1 · executing
- distribution.status({ run_id })→ per-placement state + blockers
- distribution.evidence({ campaign_id })→ proof bundle · one per placement
- distribution.results({ campaign_id })→ delivery + outcome signals
- distribution.stop({ campaign_id, reason })→ available at any state
Policy
- spend limit
- $50,000 per campaign
- channels
- creator, podcast, newsletter, event
- geography
- US only
- needs approval
- spend, new terms, publishing
- auto-allowed
- planning, inventory, status
Campaign state
- draft
- planned
- approval
- approved
- executing
- live
- complete
Every run keeps its state. It can pause for approval, resume, block on a person, or stop, and every action lands in an audit log.
Tool surface
Eleven tools. Narrow, typed, policy-bound.
Spend, non-standard terms, external publishing and live changes stop for approval unless your policy pre-authorises them.
| Tool | Input | Output |
|---|---|---|
| distribution.create_intent | product, audience, objective, budget, dates, constraints | intent_id |
| distribution.resolve_audience | intent_id or audience profile | audience profile + distribution categories |
| distribution.plan | intent_id + constraints | ranked plan + budget allocation |
| distribution.inventory | audience, filter, date, budget | available nodes + terms |
| distribution.create_campaign | approved plan + assets | campaign_id + approval state |
| distribution.approve | campaign_id + approval token | execution state |
| distribution.execute | campaign_id | run_id + actions |
| distribution.status | campaign_id or run_id | current state + blockers |
| distribution.evidence | campaign_id | proof bundle |
| distribution.results | campaign_id | delivery + outcome metrics |
| distribution.stop | campaign_id | stopped state + reason |
The agent layer
Built for machines, controlled by people.
The same campaign, states and evidence your team sees in the workspace, exposed to your software.
REST API
in buildStable machine interface for any internal system or agent
MCP server
in buildDistribution capabilities as tools for compatible agents
Webhooks
in buildStatus and evidence pushed back to your environment
Policy engine
in buildSpend, channel, geography and approval constraints
Run state
in buildPause and resume multi-step jobs without losing context
Agent identity
in buildKnow which client system started a run
Audit log
in buildImmutable action and decision history
Example run
A brand-side agent ships a launch.
“We are launching Product X. Target US consumers aged 25 to 40 interested in personal productivity. Budget $50K. Launch window October 10 to 24. Use approved creative only. Favour podcast, YouTube, newsletter and creator distribution. Do not spend outside the approved budget.”
- 01The agent calls create_intent.
- 02distribution.wtf resolves the audience and returns the relevant categories.
- 03The planner assembles inventory and a $50K draft allocation.
- 04Your policy engine checks budget, channels and approved assets.
- 05Only the approvals your policy requires go to a person.
- 06Execution coordinates bookings, assets and publishing.
- 07Every placement records evidence.
- 08Webhooks notify the agent on each state change.
- 09At close, the agent retrieves results and the evidence bundle.
Early access
Connect an agent.
API and MCP access opens to early design partners first. Tell us what your agent does today.
