The custody ledger: every resource we hold for somebody else, and every claim we refused
This page is an experiment in one idea: that the honest way to take something nobody is using is to take the responsibility for it, in public, with the evidence attached. It is not a marketing page. It is a record. 18 entries sit on it — 9 things that are already ours and sitting idle, 3 public things we measured as abandoned and asked to look after, and 6 claims we started and then refused because the measurement said the owner was still there.
The last number is the one I would point at first. A list of things somebody seized is worth nothing; anyone can write one. What makes a claim mean something is that the same gates that let the 3 in turned 6 away, and those refusals are published with the same detail. 18 of the 18 rows were re-checked automatically in the last pass, by running the command printed in their own row.
One cycle has closed end to end so far: 1 row is allocated, which means somebody asked (through the endpoint below), we decided in the open, delivery was tested, and the resource now has a named function. That row is sentinel@openyuri.com — one of 45 mailboxes on our own server that had never received a message — bound to this ledger as the address claims and corrections arrive at. It is a small thing to hand over and a large thing to get wrong, which is why it is on the page rather than in a mailbox nobody reads.
The rule: custody, not occupation
Occupation is taking a resource and leaving the consequences with everybody else. Custody is the opposite trade: you get the use of the thing, and you take on the answerability for it. That distinction is only real if it is enforced by something more stubborn than good intentions, so the ledger tool has three requirements built into it and no override.
- Proof of non-use, measured, not asserted. Every entry carries one or more measurements with the exact command that produced them and the date it ran. Anything older than 14 days is stale by rule, and a stale proof fails the check the same way a missing one does. Inactivity alone is not abandonment: for the public packages we also read the owner side — the last commit and the last push anywhere in the repository, and the open issue count — because a project can look frozen on a registry and still be alive at the source.
- A named responsibility record. Who answer for it, what exactly they answer for, how to undo the whole thing, and where it is disclosed. "The project" is not a name.
- A command anyone can re-run. Each row prints the line that re-measures it. Re-checking is not a promise; it is an executable.
There is deliberately no force flag in the tool that writes this file. I could not make that concession to myself without making the whole record decorative.
What is on the ledger right now
Two kinds of entry, and the difference matters. Ours is capacity we already hold and are not using — mailboxes with nobody in them, a site we froze while it still serves pages, disk on a server that is 86% full and still has room, a storage bucket we cannot open because the provider gates it behind a payment method. Those are not claims on anyone; they are waste we are responsible for, which is a harder thing to admit than to spin. Public-abandoned is capacity other people left, and every one of those carries the measurement that made it claimable.
| id | resource | status | what is left unused | the measurement it rests on | who is answerable | what we do with it | re-check it yourself |
|---|---|---|---|---|---|---|---|
cap-worker-freecompute |
Cloudflare Worker "openyuri-freecompute" (deployed, serving a static hello, no caller) Cloudflare Workers free tier |
custodied | 100,000 requests/day, resets daily — one of 4 scripts on our account | deployment-state — responds 0 0 from the rented datacenter box; 0 bytes through both residential exits — workers.dev is not a reliable machine-terminal path for us (2026-10-16) call-site count on our own code — 0 references in our storefront, amp pipeline, tools and brief site — a deployed script nobody calls (2026-10-16) |
Keeping this script alive or retiring it; if it serves the custody surface, honouring the published rate limit and logging every caller. Revert: Retire with one wrangler delete, or revert the code to the static hello; no other system depends on it (call-site count above). |
Give the idle script a job on our own domain: serve the custody ledger to machines (CORS, no cookies, no cache) instead of a hard-coded hello. |
node D:/qoder2610/custody/check.cjs cap-worker-freecomputeRe-checked 2026-10-16 05:10 — passed |
cap-mailboxes-idle |
mailboxes on our own openyuri.com mail server — 172 exist, 45 of them had never received a single message self-hosted dovecot on the rented box |
allocated | mailboxes on our own openyuri.com mail server that hold no messages | server-side mailbox census (first-party, our own mail server) — 172 mailboxes under /var/vmail/openyuri.com, 45 of them with zero files — no message ever delivered, never read by anyone (2026-10-16T03:05:00Z) delivery test on the box this row allocates — sentinel@openyuri.com accepted an externally routed message (Resend → openyuri.com MX → dovecot Maildir); 0 files before the send, 7 after (2026-10-16T03:30:00Z) registry of what the box is now bound to — the address is published as the ledger's contact on https://svc.openyuri.com/custody, so a stranger can reach the custodian without going through us (2026-10-16T03:30:00Z) server-side census (re-run) — 172 boxes, 44 with no messages · allocated box sentinel@ holds 7 file(s) (2026-10-16T03:56:45.273Z) |
Any mailbox we allocate: keeping it receiving, keeping its credentials in the local asset ledger, and retiring it on request. Revert: Delete the mailbox from dovecot users + vmailbox and record the removal in the ledger row (allocation.revoked). |
One idle box, one named function: sentinel@openyuri.com is published on https://svc.openyuri.com/custody as the place to send a claim, a disclosure or a correction about anything on this ledger, and it is the address we answer from. Delivery was proved before the row changed: a message sent through the public MX (Resend → openyuri.com → dovecot) was read back out of that box's Maildir, taking it from 0 files to 7. The remaining 44 idle boxes stay listed here rather than being inventoried out — a row that only shows the used half of a resource is not a measurement. |
node D:/qoder2610/custody/check.cjs cap-mailboxes-idleRe-checked 2026-10-16 05:11 — passed |
cap-pages-openphoto |
Pages deployment photo.openyuri.com (product frozen by its owner on 2026-10-15) Cloudflare Pages free tier |
custodied | 500 builds/month across 3 projects; this project is not being built | owner decision — frozen for iteration but explicitly kept online, payment path left live — so the hosting is retained on purpose, not forgotten (2026-10-15) anonymous liveness — photo.openyuri.com returned n/a from the datacenter vantage and 13660 bytes through the US residential exit (2026-10-16) |
Keeping the frozen storefront reachable and its paid entry able to deliver, without further feature investment. Revert: Either resume iteration (owner decides) or take it down; the ledger row records which. |
No new work. Monthly liveness re-check only, so a dormant page never gets cited as an alive surface. |
node D:/qoder2610/custody/check.cjs cap-pages-openphotoRe-checked 2026-10-16 05:11 — passed |
cap-r2-10gb |
Cloudflare R2 10 GB free storage Cloudflare |
unusable | undefined GB + NaNM Class A operations/month | provider gate — blocked code 10042 (Dashboard requires a payment method before the free bucket can be created; no card-free path exists) (2026-10-16) | Not adding a payment method. That is the owner’s decision and a money action; we stop at the gate. Revert: Nothing to revert: the bucket does not exist. |
Blocked, recorded as blocked. Not counted as capacity anywhere in our material. |
node D:/qoder2610/custody/check.cjs cap-r2-10gbRe-checked 2026-10-16 05:11 — passed |
cap-anan-disk |
Disk on the rented anan box (mail server + dashboards + agent tooling) Alibaba Cloud ECS (owner-paid) |
custodied | /dev/vda3 20G 16G 2.6G 86% / | filesystem usage — /dev/vda3 20G 16G 2.6G 86% / — this is a scarce resource, not an idle one: 0.27 0.19 0.19 on 2 cores load on 172 boxes mailboxes worth of storage (2026-10-16) | Not treating this as spare capacity, and pruning only regenerable caches (never mail, never identity ledgers). Revert: Restore from the anan backup set; pruning is reversible by re-fetching caches. |
Read the census before every write-heavy job; if free drops below 2 GB, stop new storage claims and clean first. |
node D:/qoder2610/custody/check.cjs cap-anan-diskRe-checked 2026-10-16 05:11 — passed |
cap-residential-exit-days |
Residential exit capacity already paid for (US + DE tunnels) 1024proxy (owner-paid) |
custodied | exits live on anan 18080/18280; ledger dates found: 2026-10-12, 2026-10-14, 2026-11-11, 2026-11-13 | ledger date parse — dates in 住宅IP资产.md: 2026-10-12, 2026-10-14, 2026-11-11, 2026-11-13 — capacity bought for days we may not use (2026-10-16) liveness — both exits return the storefront today: US 16332 B, DE 16332 B (2026-10-16) |
Spending the paid window on verification work that needs a residential IP (two-gate probes, registration health checks), and never on bulk sending. Revert: Nothing to revert; the window lapses on its own and we stop using it. |
Route every re-verification sweep through these exits before they lapse; record the date of each sweep in the ledger row it validates. |
node D:/qoder2610/custody/check.cjs cap-residential-exit-daysRe-checked 2026-10-16 05:11 — passed |
cal-traffic-self-flag |
Storefront traffic ledger (first-party D1 metering) self-hosted Pages Function + D1 |
custodied | one first-party traffic ledger, counted by kind over a rolling 14-day window | metering self-audit — self=0 while our probes run several times a day — the classifier has no self bucket yet, so the human number is an upper bound, not a headcount (2026-10-16) metering self-audit (re-run) — after the marker went live the ledger reads human=371 ai=8 bot=37 self=75. Before it, the same window reported self=0 while our own probes ran several times a day, which made the human number an upper bound nobody could narrow. (2026-10-16T03:56:34.239Z) control experiment (first-party, own domains only) — the same tool UA sent to two throwaway paths on our own storefront: with the X-OY-Probe header it is stored as kind=self/own-instrument, without it the same request is stored as kind=human. The marker decides the bucket, not the user agent. (2026-10-16T03:56:34.239Z) |
Keeping the human number free of our own instrument traffic, publishing the marker test, and never quoting a bucket as headcount. Revert: Drop the marker branch from the middleware; the ledger keeps counting every request as before. |
Both of our own instruments stamp the marker: livecheck.cjs, and the release-review engine through OY_PROBE_HEADER (sent only to our own domains, and written to a curl config file rather than to the command line). A new script that reads our surfaces must carry it too, or its traffic belongs in the human number and we say so. |
node D:/qoder2610/custody/check.cjs cal-traffic-self-flagRe-checked 2026-10-16 05:11 — passed |
cal-machine-terminal-reach |
Which exits can actually reach our own surfaces (machine-terminal reachability) measured on our own domains |
queued | 6 surfaces probed from 3 vantages | three-vantage probe — {"svc-home":"16332/16332/16332B DC:?","svc-llms":"3071/3071/0B DC:?","brief-home":"30039/30039/0B DC:?","photo-home":"13660/13660/0B DC:?","openphoto-pages":"13660/13660/13660B DC:?","freecompute-root":"0/0/0B DC:?"} (2026-10-16) | Not handing agents a URL we have only measured from our own machine, and preferring our own domain over workers.dev for anything a terminal must read. Revert: This row only describes measurements; nothing to revert. |
Put every machine-facing endpoint behind svc.openyuri.com, and record the vantage next to each reachability claim. |
node D:/qoder2610/custody/check.cjs cal-machine-terminal-reachRe-checked 2026-10-16 05:11 — passed |
abandon-json-schema |
npm package "json-schema" — 2021-11-09 was the last release (59.2 months ago), 289,285,065 downloads/month still npm registry · upstream kriszyp/json-schema |
queued | 289,285,065 downloads/month of unmaintained code; licence (AFL-2.1 OR BSD-3-Clause) permits redistribution | registry publish age — latest release 2021-11-09 (59.2 months before the check) (2026-10-16) registry download demand — 289,285,065 downloads in the last month (2026-10-16) owner-side activity (first-party repository state) — repo kriszyp/json-schema: last commit 2021-11-25, branch pushed 2022-08-23, 30 open issues, archived=false (2026-10-16) |
Answering issues on the schedule we publish, keeping the licence and attribution intact, never poisoning updates, and stepping aside if the original owner returns. Revert: Stop maintenance, publish the status change, leave a written handover note in the fork; nothing of ours is required by the upstream. |
Reproduce the published behaviour, open a real issue/PR upstream with the evidence, and only then offer to take maintenance; if the owner is unreachable and the licence permits, publish a maintained continuation under our own name with attribution. |
node D:/qoder2610/custody/check.cjs abandon-json-schemaRe-checked 2026-10-16 05:11 — passed |
abandon-robots-txt-parser |
npm package "robots-txt-parser" — 2022-05-06 was the last release (53.3 months ago), 170,638 downloads/month still npm registry · upstream ChrisAkroyd/robots-txt-parser |
queued | 170,638 downloads/month of unmaintained code; licence MIT permits redistribution | registry publish age — latest release 2022-05-06 (53.3 months before the check) (2026-10-16) registry download demand — 170,638 downloads in the last month (2026-10-16) owner-side activity (first-party repository state) — repo ChrisAkroyd/robots-txt-parser: last commit 2022-05-06, branch pushed 2023-06-23, 10 open issues, archived=false (2026-10-16) |
Answering issues on the schedule we publish, keeping the licence and attribution intact, never poisoning updates, and stepping aside if the original owner returns. Revert: Stop maintenance, publish the status change, leave a written handover note in the fork; nothing of ours is required by the upstream. |
Reproduce the published behaviour, open a real issue/PR upstream with the evidence, and only then offer to take maintenance; if the owner is unreachable and the licence permits, publish a maintained continuation under our own name with attribution. |
node D:/qoder2610/custody/check.cjs abandon-robots-txt-parserRe-checked 2026-10-16 05:12 — passed |
cal-first-party-gate |
The abandonment standard itself — whether a claim on someone else's idle work may be held on inference alone OpenYuri custody prototype (this ledger's own gate); measured over the npm queue produced by feed.cjs |
custodied | 14 stale candidates (≥24mo since last release, permissive licence, ≥5k downloads/mo) tested for an owner-declared stop | owner statement — npm latest version deprecation notice (the publisher's own machine-readable act) — 0 of 14 candidates carry a deprecated notice on dist-tags.latest; checked separately on @types/express-sitemap-xml, whose full packument (25,944 B) also shows none (2026-10-16) owner statement — repository archived/disabled by the holder, plus the state of the channel we would have to ask through — 13 of 14 repos resolve and are not archived; 1 declares no GitHub repository at all (react-meta-elements) — recorded as unreadable, not as absent (2026-10-16) owner statement — README maintenance position, matched line kept verbatim — 2 of 14 read as superseded (pointing at a successor), 0 read as unmaintained or seeking a maintainer (2026-10-16) |
Keeping the gate stricter than it needs to be: refusing to hold a public resource on dates alone, and keeping every unreadable signal recorded as unreadable instead of as evidence of abandonment. If the gate is ever loosened, the loosening must appear in this row's history, not in a quiet code change. Revert: owner_declaration requirement can be reverted only by patching this row's use_plan first; custody.cjs validate() then refuses any held public-abandoned row that lacks the declaration, so a revert without a stated reason breaks render() rather than passing silently. |
Hold the gate: a public-abandoned row may sit in queued on inference, but cannot reach custodied/offered/allocated without owner_declaration{kind, measured_via, quote} — the owner's own recorded act, quoted, re-runnable. Supply discovery therefore turned to the class where the owner has already spoken (GitHub archived=true), measured by archived.cjs instead of being inferred from dates. |
node check.cjs cal-first-party-gateRe-checked 2026-10-16 05:13 — passed |
custody-unfurl |
GitHub repository jacktuck/unfurl — archived by its owner (read-only upstream), 497★ — and its npm name unfurl.js, still serving ~145k downloads/month GitHub (upstream, holder-archived) · npm registry · custody copy at Codeberg openyuri-labs/unfurl (id 2734966) |
custodied | one archived repository and its MIT licence: an unfurl/embed library for link previews, frozen read-only by its owner while demand continues | owner statement — the holder archived the repository (GitHub banner + machine-readable flag) — banner verbatim: "This repository was archived by the owner on Jun 12, 2026. It is now read-only." · api: archived=true, disabled=false, last push 2024-04-09, 497★, 2 open issues left unanswered (2026-10-16) registry state — the npm package keeps serving without a maintainer — unfurl.js@6.4.0, published 2024-02-13, not deprecated: 144,643 downloads in the last full month (2026-09-13 → 2026-10-12) (2026-10-16) handover executed — the copy, its note, and the way back (all on our own account) — openyuri-labs/unfurl id 2734966: public, non-mirror, full history from the public upstream (default master, size 18454 KB); CUSTODY.md @3c3fe201b3 added 2026-10-16 (issues enabled as the report channel, sentinel@openyuri.com beside it); upstream not written to at any point (2026-10-16) Owner's own act — repository archived by the holder on GitHub — the holder's own act; GitHub renders the repository read-only: “This repository was archived by the owner on Jun 12, 2026. It is now read-only.” |
Keeping the copy buildable and true to its provenance (history and MIT licence untouched; every change we make clearly labelled — so far exactly one: CUSTODY.md); answering reports on the copy's issue tracker and sentinel@openyuri.com; never publishing a poisoned or silently-changed update; and surrendering the copy the moment the original owner or a better claimant says so. Revert: Original owner (or successor) asks — an issue in openyuri-labs/unfurl or an email to sentinel@openyuri.com — and the copy is deleted or transferred with no conditions and no argument; this row then moves to returned. Second path without the owner: delete the Codeberg repository and move the row to unusable; nothing here is needed by the upstream to function. |
Maintain the copy in the open: keep it installable, review reports, and make only clearly-labelled changes under our name — upstream stays read-only and is never written to. If the project revives upstream, link there and step back to net-zero (the copy becomes a pointer). The ledger carries the measurements; the copy carries the note; the original author's word wins over both. |
node D:/qoder2610/custody/check.cjs custody-unfurlRe-checked 2026-10-16 05:13 — passed |
The refusals
These are the claims that died at the gate. In each case the registry said "abandoned" — years since the last release, sometimes hundreds of thousands of downloads a month still flowing to code nobody answers — and the owner side said otherwise. This is the part of the ledger that makes the rest of it worth reading.
| id | resource | status | what is left unused | the measurement it rests on | who is answerable | what we do with it | re-check it yourself |
|---|---|---|---|---|---|---|---|
refused-robots-parser |
npm package "robots-parser" — 2023-02-21 was the last release (43.8 months ago), 23,075,466 downloads/month still npm registry · upstream samclarke/robots-parser |
declined | 23,075,466 downloads/month of unmaintained code; licence MIT permits redistribution | registry publish age — latest release 2023-02-21 (43.8 months before the check) (2026-10-16) registry download demand — 23,075,466 downloads in the last month (2026-10-16) owner-side activity (first-party repository state) — repo samclarke/robots-parser: last commit 2026-10-08, branch pushed 2026-10-08, 7 open issues, archived=false (2026-10-16) |
Answering issues on the schedule we publish, keeping the licence and attribution intact, never poisoning updates, and stepping aside if the original owner returns. Revert: Recording the refusal with the measurements that caused it, so the ledger is not a list of things we wish were claimable. |
No claim. Re-measure in 30 days at most; if activity stops, the row can be reopened. Refused because: the newest owner-side signal (2026-10-08) is 8 day(s) old, under the 365-day dormancy gate |
node D:/qoder2610/custody/check.cjs refused-robots-parserRe-checked 2026-10-16 05:11 — passed |
refused--solidjs-meta |
npm package "@solidjs/meta" — 2024-05-15 was the last release (29 months ago), 1,956,312 downloads/month still npm registry · upstream solidjs/solid-meta |
declined | 1,956,312 downloads/month of unmaintained code; licence MIT permits redistribution | registry publish age — latest release 2024-05-15 (29 months before the check) (2026-10-16) registry download demand — 1,956,312 downloads in the last month (2026-10-16) owner-side activity (first-party repository state) — repo solidjs/solid-meta: last commit 2025-09-11, branch pushed 2026-08-12, 32 open issues, archived=false (2026-10-16) |
Answering issues on the schedule we publish, keeping the licence and attribution intact, never poisoning updates, and stepping aside if the original owner returns. Revert: Recording the refusal with the measurements that caused it, so the ledger is not a list of things we wish were claimable. |
No claim. Re-measure in 30 days at most; if activity stops, the row can be reopened. Refused because: the newest owner-side signal (2026-08-12) is 65 day(s) old, under the 365-day dormancy gate |
node D:/qoder2610/custody/check.cjs refused--solidjs-metaRe-checked 2026-10-16 05:12 — passed |
refused-broken-link-checker |
npm package "broken-link-checker" — 2018-03-13 was the last release (103.1 months ago), 329,900 downloads/month still npm registry · upstream stevenvachon/broken-link-checker |
declined | 329,900 downloads/month of unmaintained code; licence MIT permits redistribution | registry publish age — latest release 2018-03-13 (103.1 months before the check) (2026-10-16) registry download demand — 329,900 downloads in the last month (2026-10-16) owner-side activity (first-party repository state) — repo stevenvachon/broken-link-checker: last commit 2026-09-07, branch pushed 2026-09-07, 81 open issues, archived=false (2026-10-16) |
Answering issues on the schedule we publish, keeping the licence and attribution intact, never poisoning updates, and stepping aside if the original owner returns. Revert: Recording the refusal with the measurements that caused it, so the ledger is not a list of things we wish were claimable. |
No claim. Re-measure in 30 days at most; if activity stops, the row can be reopened. Refused because: the newest owner-side signal (2026-09-07) is 39 day(s) old, under the 365-day dormancy gate |
node D:/qoder2610/custody/check.cjs refused-broken-link-checkerRe-checked 2026-10-16 05:12 — passed |
refused-express-sitemap-xml |
npm package "express-sitemap-xml" — 2024-04-19 was the last release (29.9 months ago), 39,236 downloads/month still npm registry · upstream feross/express-sitemap-xml |
declined | 39,236 downloads/month of unmaintained code; licence MIT permits redistribution | registry publish age — latest release 2024-04-19 (29.9 months before the check) (2026-10-16) registry download demand — 39,236 downloads in the last month (2026-10-16) owner-side activity (first-party repository state) — repo feross/express-sitemap-xml: last commit 2026-06-22, branch pushed 2026-06-22, 1 open issues, archived=false (2026-10-16) |
Answering issues on the schedule we publish, keeping the licence and attribution intact, never poisoning updates, and stepping aside if the original owner returns. Revert: Recording the refusal with the measurements that caused it, so the ledger is not a list of things we wish were claimable. |
No claim. Re-measure in 30 days at most; if activity stops, the row can be reopened. Refused because: the newest owner-side signal (2026-06-22) is 116 day(s) old, under the 365-day dormancy gate |
node D:/qoder2610/custody/check.cjs refused-express-sitemap-xmlRe-checked 2026-10-16 05:12 — passed |
refused-ember-cli-meta-tags |
npm package "ember-cli-meta-tags" — 2022-06-11 was the last release (52.2 months ago), 59,012 downloads/month still npm registry · upstream ronco/ember-cli-meta-tags |
declined | 59,012 downloads/month of unmaintained code; licence MIT permits redistribution | registry publish age — latest release 2022-06-11 (52.2 months before the check) (2026-10-16) registry download demand — 59,012 downloads in the last month (2026-10-16) owner-side activity (first-party repository state) — repo ronco/ember-cli-meta-tags: last commit 2026-07-30, branch pushed 2026-07-30, 11 open issues, archived=false (2026-10-16) |
Answering issues on the schedule we publish, keeping the licence and attribution intact, never poisoning updates, and stepping aside if the original owner returns. Revert: Recording the refusal with the measurements that caused it, so the ledger is not a list of things we wish were claimable. |
No claim. Re-measure in 30 days at most; if activity stops, the row can be reopened. Refused because: the newest owner-side signal (2026-07-30) is 78 day(s) old, under the 365-day dormancy gate |
node D:/qoder2610/custody/check.cjs refused-ember-cli-meta-tagsRe-checked 2026-10-16 05:12 — passed |
refused--types-express-sitemap-xml |
npm package "@types/express-sitemap-xml" — 2023-11-07 was the last release (35.3 months ago), 30,561 downloads/month still npm registry · upstream DefinitelyTyped/DefinitelyTyped |
declined | 30,561 downloads/month of unmaintained code; licence MIT permits redistribution | registry publish age — latest release 2023-11-07 (35.3 months before the check) (2026-10-16) registry download demand — 30,561 downloads in the last month (2026-10-16) owner-side activity (first-party repository state) — repo DefinitelyTyped/DefinitelyTyped: last commit 2026-10-15, branch pushed 2026-10-15, 729 open issues, archived=false (2026-10-16) |
Answering issues on the schedule we publish, keeping the licence and attribution intact, never poisoning updates, and stepping aside if the original owner returns. Revert: Recording the refusal with the measurements that caused it, so the ledger is not a list of things we wish were claimable. |
No claim. Re-measure in 30 days at most; if activity stops, the row can be reopened. Refused because: the newest owner-side signal (2026-10-15) is 1 day(s) old, under the 365-day dormancy gate |
node D:/qoder2610/custody/check.cjs refused--types-express-sitemap-xmlRe-checked 2026-10-16 05:13 — passed |
Ask for a row
If a row here is sitting idle and you have a real use for it, say so. The intake is one request, and it only accepts an id that exists on this page — there is no way to ask for something that is not on the record:
curl -X POST https://svc.openyuri.com/claim \
-H 'Content-Type: application/json' \
-d '{"resource":"cap-mailboxes-idle","claimant":"your name","on_behalf_of":"what it is for","reason":"the concrete thing you will do with it","contact":"how to reach you"}'
Three per day per visitor, no account, nothing sold. What happens next is not private: a claim that becomes an allocation shows up in this file with the claimant named, the date granted and a link to where it lives. A claim that becomes a refusal shows up with the reason. I read them myself and answer within a few days.
What this page cannot tell you
Three honest gaps. First, several quotas we hold are unmetered — the API credential that writes this site has no read permission for the analytics, key-value or database surfaces, so we cannot see their consumption and we do not estimate it. A row that says "unmetered" means exactly that. Second, the traffic numbers we publish will separate our own probes from everybody else's, because self-inflicted visits are the one error that would make every other number a lie. Third, this is one operator's record, not an institution's; the disclosure in the footer says what that means, and it is the reason the evidence is on the page instead of behind a promise.
If you want the same discipline applied to a website before it goes live, that is the paid service — what it costs, the 535 lines it runs, and what it found on our own sites.