About and API
fshy is a catalogue of free, nearly free and cheapest-paid cloud capacity. The build writes each page from one JSON record per offer. The records are the source, and every number on a page comes from a record.
For research and education only. The catalogue records technical facts about third-party services. It is not legal advice, and it makes no statement about whether a use is permitted. The rules that each provider publishes for its service apply to its use.
Query it
- Remote MCP for agents:
claude mcp add --transport http fshy https://fshy.ajam.dev/mcp. The tools are help, search, filter, get, entity, need, sql and worklist. A batch holds at most 5 messages, and at most 1 of them calls sql. - HTTP, JSON by default and TSV with
.tsv:- /api/v1/search?q=gpu: full-text search, names first
- /api/v1/records?topic=storage&no_card=1&sort=usd_per_tb_month: records that meet conditions, sorted
- /api/v1/records?topic=storage&iface=s3&free=1: records with a free allowance (free=1)
- /api/v1/sql?q=SELECT+rid,verdict+FROM+record+LIMIT+5: one read-only SQL statement
- /api/v1/need/: the best-per-need lists
- /api/v1/record/compute/oracle-cloud: one record as JSON
- /api/v1/entity/oracle.json: one provider and all its records
- /api/v1/: the list of routes
- /api/v1/help.txt: the query primer: tables, columns, vocabularies and worked SQL
- /api/v1/schema.sql: the schema of the store
- /api/v1/vocab.json: the vocabularies
- The whole store as SQLite: fshy-public.sqlite.gz (24.5 MB), SHA-256 of the file after gunzip:
ca11fc6e849b57e7f8340f1aac740ec188ae587c354f341b6b7b1f1ee4bf160d. - Files for agents: /llms.txt, and a Markdown version of each topic and provider page.
- Permalinks:
/r/<topic>/<slug>opens the page of a record.
How to read a record
Verdict
A verdict is a judgement of the whole offer for the need of its topic. The data holds no number as a cut-off. A quota is too small (fails-quota) or enough by the judgement of the record. A trial (trial-only) is time-boxed or one-time. Read the free allowance and the limits of the record, and decide for your own need.
| ★ qualifies | qualifies usable as stated; the read path was probed |
|---|---|
| caveat | qualifies-with-caveat usable, with a named limit or an unprobed read path |
| trial | trial-only a time-boxed or one-time trial, not a recurring allowance |
| paid | paid-only no free allowance; listed for its price |
| fails: identity | fails-identity the identity required is not reachable without it |
| fails: egress | fails-egress data cannot be read back out at a usable rate or price |
| fails: quota | fails-quota the free allowance is too small to matter |
| dead | dead the offer or the service no longer exists |
| self-hosted, last resort | self_hosted = 1 software or a node that the user installs, runs and maintains. Self-hosted options are listed last, because this site is for users who have no hardware. Its row shows this label in place of its verdict. |
Evidence
measured | a live request was made and its output kept |
|---|---|
documented | a first-party page was read and the sentence quoted |
reported | a third party said so |
inferred | reasoned from other evidence |
unverified | asserted and not checked |
Binding constraint
request-rate | requests per unit of time |
|---|---|
pull-count | number of downloads or pulls |
per-ip-shaping | bandwidth shaped per address or port |
per-object-cap | largest single object |
write-gated | writes need approval, payment or a gate |
retention-clamped | data is deleted after a period |
volume-quota | total stored or transferred volume |
none | no named constraint binds |
Identity
anonymous | nothing is asked for |
|---|---|
email | an email address |
any-phone | a phone number from any country |
country-phone | a phone number from a named country |
national-id | a government identity document |
card | a payment card |
institution | membership of a university, lab or company |
stated | the identity requirement was read from a source |
|---|---|
defaulted | the identity kind is a placeholder; card and phone are unknown |
inferred | the kind, or the card or phone requirement, was inferred, not read; card and phone are unknown |
A question mark after an identity value means that the identity kind is a placeholder. Then the card and phone requirements are unknown, not absent.
Freshness
Each record has the date of its last check and the date when its staleness window ends. Your browser compares the second date with today: fresh until or stale since. inherited means that the record was carried from an earlier source, and its check date is an upper bound.
Unknown values
not-applicable | the field does not apply to this kind of offer |
|---|---|
not-recorded | no value was recorded for this field |
not-extracted | the field may be stated in a source that was not read |
none-observed | nothing of this kind was observed |
not-stated | a source was read and is silent on this field |
interface-unknown | the access interface was not established |
egress-unknown | egress metering was not published |
What is published
Only technical data is published: quotas, limits, prices, identity requirements, interfaces, reliability events and the evidence for each. Process notes, personal details and terms-of-service or legality commentary are not published. Of the 416,446 values of the source:
- 326,361 are published as written;
- 25,603 are rewritten, for example an archive mirror replaced by its origin URL;
- 64,106 are not published;
- 376 belong to 3 records about infrastructure that is not a public offer.
Data as of 2026-11-04, from source commit b204e9b75ab4: 4,852 records, 3,431 providers.
Report an error or a missing offer
Each record has a report an error link. It opens the Correction form with the record filled in. For an offer that the catalogue does not have, use the New offer form. A report is checked against the pages of the provider before a record changes. The issue closes when a publish carries the result.
Do not report a leaked secret, a personal detail or a vulnerability in a public issue. Read the security policy first.
Contribute
The site, the API, the MCP endpoint and the publish tools are in the source repository. A pull request that improves them is welcome: read CONTRIBUTING.md first. A pull request that changes data/ is not merged, because data/ is generated by the export and never edited by hand. Report a correction with an issue.
Licence
The code and the records are under the 0BSD licence. A record restates public facts in its own words and cites each source by URL. A short quote from the page of a provider identifies the sentence that proves a value, and stays with its owner. The search box uses MiniSearch (MIT) and the Worker uses sql.js (MIT).