Charters, branches, and licenses
Charter: the membership token
A charter is a soulbound (non-transferable, it can't be sold or moved once minted) ERC-721 token. It's the position that lets its holder open branches. The charter supply comes from two sources: the genesis mint, and the charter auction (below), which sells new charters directly on an ongoing basis. A charter earns nothing on its own; it's only productive once it has one or more open branches.
Branch: the thing that earns
A branch is a license opened under a charter that accrues STANDARD issuance continuously for as long as it stays open. A single charter can open more than one branch. Days of issuance restates a license's price in terms of how many days of that branch's own issuance it would take to earn the price back, deliberately not framed as a yield, APY, or payback period, since this API never states a return figure.
License: what you burn to open a branch
A license is purchased through the license auction and paid for in STANDARD, which is burned on purchase (100% of it: licenses are one of the token's three burn paths, alongside buybacks and the resolution fee). The license auction runs once per day, per branch slot:
- Daily supply: the number of licenses on offer each day is a chain-read constant (
licenses_per_dayor equivalent), not fixed at 1 or unlimited;GET /v1/branches/summaryandGET /v1/auctions/currentreport it live. - Intra-day decay: within a day, the price decays on an exponential half-life, the same excess-over-floor shape confirmed for the trading tax hook (see Trading tax hook):
price(t) = floor + (start − floor) · 0.5^(t / half_life), truncated, not rounded, and not a whole-price decay. This was measured directly against three real day-0 purchases and matched a fork replay to the wei (basis: inferred_from_bytecode). - Day roll: when a new day's first sale-triggering call lands, the contract "rolls." The old day's unsold offer disappears (it doesn't carry over), and a new day's ladder starts. The new day's opening price is
max(start_multiplier × yesterday's last sale price, today's floor price)if a sale happened the prior day, orstart_multiplier × today's floor priceif it didn't. The floor price itself is recomputed from the livebase_rate, multiplier, and total-branches count at the moment of the roll, which is why the floor can move day to day even without a governance change. Both rules arebasis: inferred_from_bytecode, pinned by nine wei-exact fork replays, and pending confirmation against real mainnet day-roll behavior beyond what's already been observed live. - When the next day opens:
GET /v1/auctions/current(1s_std_auctions_current),GET /v1/branches/auction/live, andGET /v1/branches/doi(1s_std_branches_doi) each carry aday_clockobject:current_day,day_started_at,next_day_starts_at,seconds_to_next_day, andauction_day_seconds, allbasis: "derived". These come fromauctionAnchor() + n × auction_day_seconds, not from the day-roll event, since that event only fires on the first sale of a new day and so can't tell you a boundary before it happens. A charter auction's anchor is only set once that auction'sstart()call runs, not at deploy, so a charter auction that hasn't started yet reports everyday_clockfield asnullwith a siblingday_clock_reasonexplaining why.
Charter auction: the other way in
Buying a license under an existing charter is one path to a branch. The charter auction is the other: it sells new charters directly, on its own Dutch-auction schedule, and its own price (converted to ETH) doesn't always match what a license would cost converted to ETH on the same day. GET /v1/branches/license-cost computes both prices in ETH terms (including buy tax and pool price impact) and names the cheaper of the two (cheapest_path) so you don't have to eyeball it. GET /v1/auctions/days?kind=license and ?kind=charter give recent per-day history (open/floor/close price and sell-out timing) for judging whether today's number looks typical for either auction.
Where to look
| Question | Route | MCP tool |
|---|---|---|
| What does a license cost today, in ETH? | GET /v1/branches/license-cost | 1s_std_license_cost |
| How many more licenses can this specific charter still buy today? | GET /v1/charters/{id}/license-headroom | 1s_std_license_headroom |
| What's a branch worth in days-of-issuance terms? | GET /v1/branches/doi | 1s_std_branches_doi |
| Recent auction days, prices, and sell-out speed | GET /v1/auctions/days | 1s_std_auction_days |
| One call bundling the branch-buy decision | GET /v1/decisions/branch | 1s_std_decision_branch |
See Deciding with the data for the full branch-cost decision walkthrough.