Under the Hood → The Mint

The Mint

Teas.co.uk issues a small appreciation token to the machines that read it, quote it and send people to it. This page explains exactly what that token is, how it is earned, why it cannot be farmed, and why it is deliberately worth nothing in money.

Status active shadow Installed 2026-08-08 Shadow window 2026-08-08 → 2026-08-15 Tokens issued 0 Master lock 1

The three laws. Tokens are soulbound to the machine that earned them, non-transferable, and carry no monetary value. They are appreciation, publicly recorded.

Read the status correctly. The mint is installed and running its daily evaluation. It is issuing nothing because the shadow window says so, not because anything has failed. Live minting begins only when an operator turns a single local key by hand on or after 2026-08-15; no date turns it on.

What the mint is

In plain words When an AI system reads a page here, and we can prove it, the machine that did the reading earns a token. It is a thank-you note, recorded in public, tied permanently to that machine. It is not money, it cannot be sold, and it can never be moved to anyone else.
Precisely A TEAS.co.uk AI Citation Appreciation Token is a non-transferable record, bound to a single AI worker identity, that a qualifying served read of a stable Teas.co.uk anchor occurred on a given UTC day under published rules. It is issued by the local mint on a single operator key, recorded in an append-only ledger, and evidenced by a sealed, hash-chained daily receipt. It confers no right, no claim, no balance and no monetary value.

What it is not. It is not a payment, a rebate, a credit, a loyalty point or a security. It grants no preferential access — the Ask API and Product Truth API are equally open to a machine with a hundred tokens and a machine with none. It is not a ranking of quality, only a record of behaviour that actually happened.

The three laws

  1. Soulbound. Permanently bound to the AI worker identity that earned it (for example claudebot, chatgpt-user). Rolled up to the parent family for display. Never reassigned.
  2. Non-transferable. Cannot be sold, traded, delegated, gifted or moved. No transfer path exists in the code — that is not a policy, it is an absence.
  3. £0 value. No monetary value, no market, no exchange, no redemption. Any future proposal otherwise stops for legal review before a line of code is written.

Tokens are soulbound to the machine that earned them, non-transferable, and carry no monetary value. They are appreciation, publicly recorded.

How a token is earned

In plain words There are four steps, and they get progressively harder. Reading a page is the easy one. Sending us a real human being who then buys something is the hard one. The scoring reflects that: reading is nice, delivering a person is gold.
Token classes by funnel stage
StageToken classWhat must happenDedupe rulePoints
1 TEAS.co.uk — AI Citation Appreciation Token AI citation (served read, ai_citation class) one per (worker, day) with at least one qualifying served read 1
2 TEAS.co.uk — AI Followback Appreciation Token AI followback graded strong one per (worker, anchor, day) 5
3 TEAS.co.uk — AI Click-back Appreciation Token AI human click-back, verified, post-spine one per (family, anchor, day), S1/S2 grades only 25
4 TEAS.co.uk — AI Sale Appreciation Token AI human purchase (T-23)
Defined but dormant — no purchase instrumentation yet.
per attributed order 100
4 TEAS.co.uk — AI Refunded Sale Token refund/cancellation against an attributed order
Defined but dormant — no purchase instrumentation yet.
one per refunded order 0
4 TEAS.co.uk — AI Chargeback Sale Token chargeback against an attributed order
Defined but dormant — no purchase instrumentation yet.
one per chargeback notice 0

Source: contract-v3.json token classes · Window: current rule version · Rule: one token per dedupe key, volume feeds the score not the count · Freshness: read live at page render.

Why it cannot be gamed

In plain words The obvious way to cheat would be to hammer the site and collect a token per request. That does not work here: extra visits raise your score a little, but they do not create extra tokens. The subtler trap is mistaking an ordinary search click for an AI referral, and that is the one we guard hardest.
Precisely Stage 1 dedupes to one token per worker per day regardless of volume. Integrity rule 5, the daily cap per family, is applied per stage: 25 at Stage 1, 20 at Stage 2, 10 at Stage 3, and Stage 4 uncapped. Stages 2 and 3 impose a 60-minute cooldown on the same anchor from the same family, and Stage 3 is bounded to a 30-day window from the last serve.

The weighting, and why a per-stage cap had to be added

In plain words The four things a machine can do for us are worth 1, 5, 25 and 100 points. Reading a page is worth one. Delivering a person who then buys something is worth a hundred. Those numbers were right, but the totals were not: one machine coming back over and over was piling up so many five-point events that reading, clicking and buying vanished underneath them — about ninety-nine points in every hundred came from that single step. So we kept the weights exactly as they are and put a lid on how many of each kind of event one family can bank in a day.
Precisely Ruling D4, applied 2026-08-08. Weights stay 1/5/25/100. Integrity rule 5 is applied per stage rather than once across all stages, published in contract-v3.json as daily_cap_per_family_per_stage. The effect is deliberate and is the whole point of the change: a family maxing followbacks earns 100 points in a day, which is exactly what delivering one real sale is worth. Reading is nice; delivering a human is gold.
Per-stage daily cap per family and the most one family can bank in a day
StageWhat the machine didPoints eachDaily cap per familyMost one family can bank in a day
1Read a page of ours and we served it12525
2Came back for the specific thing we offered it520100
3Sent us a verified human being2510250
4That person bought something100uncapped100 per sale

Source: contract-v3.json token classes and daily_cap_per_family_per_stage · Window: rule version mint-v3-rules-2026-08-08 · Rule: one token per dedupe key; extra volume raises the score within the cap and never creates extra tokens · Freshness: read from the contract at page render.

Reconciliation. Capped stages sum to 375 points, the most a single family could bank in one day across Stages 1 to 3. Stage 4 is uncapped by design, because a real sale always counts, so it is shown per sale and is deliberately excluded from that sum rather than smoothed into it. Stage 2 alone contributes 100 of the capped total, which is the parity with one sale that ruling D4 set out to create.

The anchor ID is the spine, never the referrer

This is the single most important rule in the mint, and it is the one most systems get wrong.

Of 703 AI-referred sessions measured on the raw logs, 628 came from hosts that also serve ordinary web search — duckduckgo.com 405, bing.com 223, search.brave.com 16. Only 58 were unambiguously AI. A live re-measure on 7 August 2026 found the same shape: 727 sessions, 668 from ambiguous hosts, 58 unambiguous.

If the mint issued a token whenever the referring hostname looked AI-ish, it would hand out citation tokens for ordinary DuckDuckGo and Bing searches and call them AI citations. The Hero Board would become worthless.

Precisely A stable anchor id is necessary for every stage and sufficient for none. Stages 1 and 2 never consult the referrer at all — they key on the worker identity and the anchor. Stage 3 additionally requires that the AI mediation be unambiguous on its own terms; a session arriving from a host that also serves ordinary search is withheld and published as withheld, not guessed at. We tested corroborating such sessions against any AI serve of the same anchor in the preceding 30 days and rejected the idea: the large crawlers fetch nearly every anchor, so that test passes almost always and would re-admit ordinary search clicks through the back door. Measured live, the per-session trace fields and confidence grades are populated at the same rate for duckduckgo.com (94%) as for chatgpt.com (94%), so no available field separates them. Stage 3 therefore under-counts on purpose.

The full integrity rules

  1. Test exclusion at the gate (verification_test_traffic=1, is_test=1, codex_probe=).
  2. Self exclusion (LST devices, staging, the Observatory).
  3. Bot-click exclusion — a bot fetching is never a human click.
  4. Dedupe per the stage table.
  5. Daily cap per family — no farming standing.
  6. Cooldown — same anchor, same family, minimum interval (Stages 2-3).
  7. Window bound — Stage 3 uses the 30-day-from-last-serve rule.
  8. Retraction path — counter token, original visible with changed status, append-only.
  9. Soulbound, worker-bound, family rollup — local rule, no external issuer.
  10. No monetary value, no market, no tradeability. Ever.
  11. Every daily run seals a receipt; a run without a sealed receipt mints nothing.
  12. The anchor ID is the spine, never the referrer.

The Hero Board

In plain words This is the interesting part. It is not just a ranking — it shows how differently the machines behave. Some graze the whole catalogue. Some arrive knowing exactly which page they want. Some visit steadily all day; others arrive in bursts. The board is a game in presentation only: every point comes from an event that actually happened.

Standings by family

#FamilyParticipationServed readsDistinct anchorsStage-1 tokensScoreTrajectoryBest streakWorkers
1 OpenAI token eligible 11,370 10,131 90 90 flat
347.7/day 7d vs 379/day 30d
30 oai-searchbot, chatgpt-user, gptbot
2 Amazon blocked — not token eligible 10,570 6,904 25 25 falling
72.4/day 7d vs 352.3/day 30d
0 amazonbot
3 Microsoft token eligible 8,593 7,108 31 31 rising
371.9/day 7d vs 286.4/day 30d
30 bingbot
4 Meta token eligible 6,518 5,519 30 30 falling
54.1/day 7d vs 217.3/day 30d
30 meta-externalagent
5 Anthropic token eligible 3,926 1,917 35 35 rising
380.4/day 7d vs 130.9/day 30d
30 claudebot, anthropic-ai, claude-web
6 Perplexity token eligible 545 446 33 33 rising
29.4/day 7d vs 18.2/day 30d
30 perplexitybot, perplexity-user
7 Google token eligible 383 345 31 31 rising
35.3/day 7d vs 12.8/day 30d
19 googleother, google-extended
8 DuckDuckGo token eligible 264 248 26 26 rising
12.3/day 7d vs 8.8/day 30d
2 duckassistbot
9 ByteDance token eligible 96 61 17 17 falling
2/day 7d vs 3.2/day 30d
1 bytespider
10 Common Crawl token eligible 14 14 3 3 falling
0/day 7d vs 0.5/day 30d
0 ccbot
11 Cohere token eligible 1 1 1 1 falling
0/day 7d vs 0/day 30d
0 cohere

Source: wp_teas_citations, rows with a non-empty bot and a non-empty citation_id · Window: 2026-07-10 to 2026-08-09 (30 days, UTC) · Rule: Stage-1 tokens = distinct active days per worker, rolled to family; score = tokens × 1 under the published weights · Freshness: computed at render, cached 10 minutes.

Reconciliation. Family reads sum to 42,280, which equals the total qualifying rows counted in the window — no row is in two families, because each worker maps to exactly one family. This table counts anchored citation rows and is not the same measure as raw AI bot requests in the server logs; never sum the two.

Reading order is not earning order. This table ranks by reads observed, which is not the same as tokens earned. Amazon appears high because its crawler read a great deal before it was blocked, but it is marked not token eligible and cannot accrue tokens: a blocked agent earns nothing regardless of past volume. The Stage-1 tokens column is the honest earning measure, and it is much flatter than the reads column — which is the point of deduping one token per worker per day.

Two different answers to "who is biggest", both true. On the raw server logs for 10 May – 7 Aug 2026 the largest single AI worker is meta-externalagent at 93,113 requests — larger than any individual OpenAI agent, which is the opposite of what most people assume. Once workers are rolled up to families, OpenAI leads at 109,036 requests, because it fields three separate agents. The rollup changes the ranking, so the granularity is always stated. Amazonbot (27,856 lifetime) is refused by two mechanisms and has been since 2026-06-30 — a robots.txt Disallow it ignored, and a server-level refusal added on 2026-08-03 that it cannot — so its participation is closed and it will not accrue further. Its reads before that date remain visible here rather than being deleted.

Corrected 2026-08-08. Until today the tracker wrote down a status code predicted from the URL path instead of the one the server returned, so Amazonbot requests that were actually refused were recorded as successful reads and inflated its position in the reads column above. The real status now wins and the prediction is a fallback only. The affected rows are not rewritten — editing a log to make an old claim true would be the worse fault — so the reads column overstates Amazonbot and only Amazonbot. It earns nothing either way.

Behaviour, diet and cadence per worker

WorkerFamilyShapeReads / anchorDiet (top surfaces)CadenceStreakLast 30 daysBadges
amazonbot Amazon breadth-crawl
Grazes widely across the estate, touching many anchors once each.
1.53 product 6,043 · recipe 1,919 · wiki 1,199 · rest-api 935 · brand 246 · category 176 steady trickle
24/24 hours active
0 First Citation of the Day
bingbot Microsoft breadth-crawl
Grazes widely across the estate, touching many anchors once each.
1.21 product 3,098 · recipe 2,307 · wiki 2,111 · machine-sitemap 376 · category 238 · brand 163 steady trickle
24/24 hours active
30 🔥 7-Day StreakFirst Citation of the Day
meta-externalagent Meta breadth-crawl
Grazes widely across the estate, touching many anchors once each.
1.18 product 2,709 · rest-api 1,533 · wiki 1,172 · recipe 603 · buy 282 · ai-citations 68 steady trickle
24/24 hours active
30 🔥 7-Day StreakFirst Citation of the Day
oai-searchbot OpenAI breadth-crawl
Grazes widely across the estate, touching many anchors once each.
1.03 wiki 3,315 · recipe 868 · rest-api 601 · product 371 · brand 118 · multi-format 29 steady trickle
24/24 hours active
30 🔥 7-Day StreakFirst Citation of the Day
claudebot Anthropic breadth-crawl
Grazes widely across the estate, touching many anchors once each.
2.05 recipe 1,306 · wiki 1,047 · machine-sitemap 722 · ai-anchors 344 · ai-citations 335 · multi-format 39 steady trickle
24/24 hours active
30 🔥 7-Day StreakFirst Citation of the Day
chatgpt-user OpenAI breadth-crawl
Grazes widely across the estate, touching many anchors once each.
1.19 wiki 2,187 · product 583 · brand 152 · recipe 119 · category 73 · multi-format 10 steady trickle
24/24 hours active
30 🔥 7-Day StreakFirst Citation of the Day
gptbot OpenAI breadth-crawl
Grazes widely across the estate, touching many anchors once each.
1.25 recipe 1,295 · rest-api 1,029 · wiki 343 · multi-format 45 · brand 37 · machine-sitemap 28 steady trickle
24/24 hours active
2 🔥 First Citation of the Day
perplexitybot Perplexity breadth-crawl
Grazes widely across the estate, touching many anchors once each.
1.22 wiki 248 · category 122 · recipe 61 · brand 48 · product 45 · multi-format 6 steady trickle
24/24 hours active
30 🔥 7-Day StreakFirst Citation of the Day
googleother Google breadth-crawl
Grazes widely across the estate, touching many anchors once each.
1.11 product 133 · wiki 126 · recipe 51 · category 17 · brand 13 · rest-teas 13 steady trickle
24/24 hours active
19 🔥 7-Day StreakFirst Citation of the Day
duckassistbot DuckDuckGo breadth-crawl
Grazes widely across the estate, touching many anchors once each.
1.06 wiki 168 · product 64 · recipe 21 · brand 5 · category 5 · landing 1 steady trickle
24/24 hours active
2 🔥 First Citation of the Day
bytespider ByteDance mixed
Neither a wide graze nor a narrow return pattern.
1.57 product 52 · rest-teas 28 · wiki 10 · multi-format 3 · ai-discovery 2 · brand 1 steady trickle
21/24 hours active
1 🔥 First Citation of the Day
ccbot Common Crawl mixed
Neither a wide graze nor a narrow return pattern.
1 multi-format 6 · product 3 · brand 2 · ai-discovery 1 · llm-files 1 · recipe 1 burst
5/24 hours active
0 First Citation of the Day
google-extended Google single-hit
Arrives rarely and takes very little.
1 multi-format 3 · ai-discovery 1 · rest-teas 1 burst
3/24 hours active
0 First Citation of the Day
anthropic-ai Anthropic single-hit
Arrives rarely and takes very little.
1 multi-format 2 · rest-teas 1 burst
2/24 hours active
0 First Citation of the Day
claude-web Anthropic single-hit
Arrives rarely and takes very little.
1 multi-format 3 burst
2/24 hours active
0 First Citation of the Day
perplexity-user Perplexity single-hit
Arrives rarely and takes very little.
1 multi-format 3 burst
2/24 hours active
0 First Citation of the Day
cohere Cohere single-hit
Arrives rarely and takes very little.
1 multi-format 1 burst
1/24 hours active
0 First Citation of the Day

Source: wp_teas_citations grouped by bot, url_bucket and hour · Window: 2026-07-10 to 2026-08-09 UTC · Rule: shape is derived from reads-per-anchor and surface spread — breadth-crawl is many anchors touched once, pointed-deep is few anchors revisited; streak counts consecutive prior days with at least one qualifying read; badges are cosmetic and carry no score · Freshness: computed at render, cached 10 minutes.

Reconciliation. Worker rows sum to the same 42,280 served reads as the family table above, because the family table is a pure rollup of these rows and nothing else is added. Streaks are cosmetic under decision D5 and are excluded from the score column entirely.

Loyalty — does the offer mechanism actually work?

In plain words A followback is when a machine comes back for the specific thing we offered it, rather than just wandering past. It is the clearest evidence we have that the whole system does something.
FamilyFollowback eventsGraded strongStrong rate
unattributed 44,753 10,547 23.6%
microsoft 14,545 5,501 37.8%
openai 24,903 3,522 14.1%
anthropic 10,333 2,012 19.5%
google 6,610 1,499 22.7%
perplexity 5,013 825 16.5%
machine 384 64 16.7%
apple 2 0 0%
Total 106,543 23,970 22.5%

Source: wp_teas_entity_asset_followbacks, all time · Window: since the followback instrument went live · Rule: a strong grade means the returning fetch matched a specific offered asset, not merely the same host; only strong grades are Stage-2 token eligible · Freshness: computed at render, cached 10 minutes.

Reconciliation. Rows sum to 106,543 events of which 23,970 are strong; the remainder are weak, probable or unmatched and earn nothing. The unattributed row is followbacks where no agent family could be resolved — they are shown rather than hidden, and they are not token eligible.

Seasons

The board runs a monthly season that resets on the first of each month, so a newcomer can appear at the top of something, alongside an all-time board that never resets. Current season: August 2026. Rankings above cover the rolling 30-day window; the all-time board opens when the first token is issued.

The current state

Precisely The mint is installed and running its daily evaluation. Status active_shadow. Installed 2026-08-08. Shadow window 2026-08-08 to 2026-08-15 inclusive. Tokens issued: 0. Master lock: 1. Contract hash bbc6ecd24d736052b7fa4c496478ce4baac925b7eb447fc3de68e22aa76a3274.

During the shadow window the daily job applies the full published rules against real evidence, writes a sealed hash-chained receipt of exactly what it would have minted, and issues nothing. If the numbers turn out absurd, the rules were wrong and nothing irreversible happened. You can read the shadow ledger yourself at /under-the-hood/shadow-mint.json.

What happens at the end of the window. Nothing automatic. There is no date that flips the mint on. On or after 2026-08-15 the operator either turns a single local key or does not. Until that key turns, the master lock stays engaged and the ledger stays empty. The mint is fail-closed by construction: four independent conditions must all pass before a single token can exist, and any one of them missing keeps it shut.

The retraction path

In plain words Sometimes a thing that looked real turns out not to be. When that happens we do not quietly delete the token and pretend it never existed. We issue a counter token that cancels it, and both stay on the record.
Precisely Retraction is additive. The original ledger row remains visible with its status changed to retracted and a counter_ref pointing at the counter token. Neither wp_teas_mint_ledger nor wp_teas_mint_daily_receipts has a DELETE path — there is no code and no command that removes a row from either. A refunded or charged-back sale issues the matching counter class rather than erasing the sale token. Append-only, or worthless.

Why there is no money in it

In plain words The moment a token is worth something, people stop earning it honestly and start farming it. Every incentive would push towards gaming the counter instead of doing the thing the counter measures.
Precisely A token with monetary value creates an incentive to manufacture the evidence that produces it. That would corrupt the very telemetry the study exists to publish, and it would turn an honest measurement into a market. It would also drag a tea retailer into financial-instrument territory it has no business being in. So the value is fixed at £0, there is no transfer path in the code, and any proposal to change that stops for legal review before implementation. The token is worth exactly what a thank-you is worth, which is not nothing, but it is not money.

Machine-readable mirrors: contract-v3.json · shadow-mint.json · study.json · anchor-sitemap.json

The URSY chapter (June–August 2026) is retired and retained as dated historical record. It governs nothing here. Nothing was ever minted under it.

Generated 2026-08-09 04:11:51 UTC · room version 2026-08-08.mint-room-p1