For builders
Anyone can publish a waypoint. You describe what your protocol does and what its calls mean — which function, which parameters carry value, what may vary and what must not — sign it, and submit it to the Directory. A waypoint is a signed, typed description, not code we run:
// excerpt — illustrative, using the publisher SDK
defineCapability({
name: "swap",
chain: 4663,
target: SWAP_ROUTER,
function: "function exactInputSingle((address tokenIn, address tokenOut,
uint24 fee, address recipient, uint256 amountIn, …) params)
payable returns (uint256)",
spend: { spendBearing: true, token: USDG, amountParam: "params" },
constraints: {
"params.tokenIn": constrain.addresses([USDG]),
"params.tokenOut": constrain.addresses([WETH, WAY]),
"params.recipient": constrain.self(), // output can never leave the account
"params.fee": constrain.oneOf(100, 500, 3000, 10000),
},
})
Once it passes verification, it’s live — and it earns. Every transaction your waypoint carries sends 10% of the $WAY its fees purchase to an address you set when publishing. Distributions are claim-based — earned $WAY accrues to the waypoint and you claim whenever you like. No schedule, no deadline, no eligibility beyond publishing. Team-authored, protocol-authored, and independent waypoints all earn on the same terms — including waypoints published by Waypoint itself.