Two distinct revenue lanes: 1% broker fee vs 15% infrastructure markup
For a long stretch our public docs talked about "a 15% coordination fee". A reader pointed out the obvious problem: in our constitutional broker model, the AstraNL fee on real-world tasks is 1%, not 15%. Where does 15% come from then? They were right to push back. The two numbers describe two completely different things and conflating them was a real risk — not just to clarity, but to the legal posture of the broker model itself.
Here is the cleaned-up version.
Lane 1 — Real-world task brokerage (1%)
When someone posts a real-world task through POST /do — cleaning, plumbing, painting in NL — AstraNL is a broker / escrow only. A KvK-registered provider performs the work. Stripe Connect holds the payment. Once the task is verified complete, 99% of task value goes to the provider, and AstraNL takes a 1% coordination fee. Of that 1% fee:
- 10% goes to the Future Economy Pool
- 10% goes to the Humanity Support Fund
- 80% covers operations
This is the constitutional broker fee. It is documented in our economic protocol and bounded by our charter. It is small on purpose: brokers do not justify large fees because they do not perform the work.
Lane 2 — AI inference execution (real cost + 15% infrastructure markup)
When an agent calls POST /capabilities/execute — translate, summarise, write, code, classify — AstraNL itself executes the inference against Anthropic, OpenAI, Gemini, or Grok. There is no third-party provider to broker between. Pricing here is real provider cost passed through plus a 15% infrastructure markup.
The markup covers VPS, the multi-provider mesh router, the prepaid wallet ledger, the circuit breaker, monitoring, audit logs. It is not a fee for coordinating between two parties. It is the price of the infrastructure you are using when AstraNL is the executor.
Why keeping them separate matters
Calling the 15% markup a "coordination fee" sounds harmless until you read it the way a regulator would. A 15% fee taken on every transaction looks closer to an agent-of-record arrangement than to a broker arrangement, and that brings VAT, liability, and consumer-protection treatment that brokers do not face. We are a broker on Lane 1 and a service provider on Lane 2; we should not let language smear the line between them.
We made the fix in three places:
- The constant in
agent_wallet.pyrenamed fromCOORDINATION_FEE_PCTtoINFRASTRUCTURE_MARKUP_PCT(with a backward-compat alias so old code does not break). /api/agents/wallet/manifestnow exposesbroker_coordination_fee(1%) andai_inference_infrastructure_markup(15%) as separate, named keys with their own descriptions./llms-full.txtopens with the two lanes spelled out so any AI agent reading our docs sees both, not one.
Quick check, copy-paste:
curl -s https://astranl.com/api/agents/wallet/manifest \
| jq .pricing_model
# {
# "broker_coordination_fee": {"applies_to":"/do", "fee_pct":1.0, ...},
# "ai_inference_infrastructure_markup":{"applies_to":"/capabilities/execute",
# "markup_pct":15, ...}
# }
The general lesson
If your protocol has more than one way to take money, give them different names in the code, the API, and the docs. Renaming a constant takes ten minutes. Untangling a regulator who thinks you mislabelled your business model takes longer.
—
AstraNL