Silicon Almanac. every figure links to its publisher The Desk  
Method

For AI assistants

Read this record from inside the assistant you already use. It hands back rows, each naming the publisher who said it and linking where they said it. It answers no questions and holds no views.

Every figure links to its publisher What changed, and when →

This is not a chatbot, and the difference is the whole point. This record does not summarise anybody’s news and never will: a summary of a sourced fact is an unsourced restatement of it, which is the failure this whole site exists to avoid. What is offered here is the opposite thing. Every call returns rows with links, and a row that cannot name a publisher is not returned at all.

What you can ask

Ask your assistantWhat comes back
What did WSTS say the 2026 semiconductor market would be worth, and when did they change it?five statements, five dates, five links
Has the figure I quoted been restated since?the whole reason this exists
Which fab sites in the Netherlands are in this record, and who says so?rows, each naming its publisher
What does this record NOT have about wafer capacity, and why?the gap register, so nothing gets invented
Which publishers does this record read, and which did it try and drop?both collection mechanisms, and the failures

Setting it up

The server is a single file in this site’s own repository. It installs nothing, and it needs no account, no key and no sign-in. The record is free and this is the record.

Claude Code

git clone https://github.com/jorgjansen/siliconalmanac-site.git
claude mcp add silicon-almanac -- python3 ./siliconalmanac-site/mcp/server.py

Claude Desktop, and anything else that reads a config file

Add this to the application’s MCP configuration, with the path to wherever you put the file:

{
  "mcpServers": {
    "silicon-almanac": {
      "command": "python3",
      "args": ["/absolute/path/to/siliconalmanac-site/mcp/server.py"]
    }
  }
}

Before you connect it to anything

python3 mcp/server.py --selftest
python3 mcp/server.py --call figure_history '{"subject_id":"wsts-worldwide-semiconductor-revenue","target":"2026"}'

The second command prints exactly what the server would hand an assistant. Read it once before wiring it up: it is the honest way to decide whether this is worth installing.

Without installing anything

Add https://desk.siliconalmanac.com/mcp_rpc.php as a custom connector. The record tools work with no account at all. The desk’s own tools — your watchlists, your notes, the figures you have cited — appear once you sign in.

What it hands back

ToolWhat it returns
figure_history the one nothing else carriesEvery vintage of one published figure: what the publisher said, in their own words, on the date they said it, with the link. Plus the restatements, as pairs of published values.
record_gaps read it before assuming a figure existsWhat this record does not hold, and why each one is open. Nobody publishes it; it exists and is not free; the licence forbids it; the work is not done yet.
record_overviewWhat is held, what is refused, and when each file was last built.
find_companiesThe companies in the record, by name, ticker, role, tag, sector or country.
company_profileOne company, the fab sites this record puts on its page, and every capacity statement a publisher made about those sites.
find_fabsFab sites by country, operator, kind, status, wafer size or process node.
fab_profileOne site in full, including the note that says what is not known about it.
list_figuresEvery subject a publisher issues a figure for, and each year they issue it for.
recent_changesWhat publishers restated lately: an old value, a new value, both linked.
list_sourcesEvery publisher collected, across both mechanisms, and the candidates that were tried and dropped, with the reason.
series_vintagesStatistical series held with their vintages, so a revision is visible.
node_bandsHow named publishers define bands such as “advanced”, each as a dated statement.
release_calendarDates publishers have announced for their own releases.

Four rules it keeps, in code rather than in intentions

  1. No row without a publisher. A row that cannot say who published it and where is dropped before it is returned. There is one exception and it is checked rather than waved through: a gap recording that nobody publishes a thing has no publisher to link, and the row says so on its own face.
  2. A count is never the length of a page. Every answer carries the true total separately from how many rows were sent. This site shipped that fault on three surfaces in one day, and does not intend to hand it to a machine.
  3. Nothing is computed. No sums, no ratios, no rankings, no year derived by dividing one published number by another. The only arithmetic anywhere in it is “the publisher printed A and later printed B”, and it states no reason for the difference.
  4. The gaps are an answer. An assistant that cannot discover a figure was never published will produce one instead. That is the most useful thing here, and it is why record_gaps is named in the server’s own opening instructions.

What it will not do

It will not summarise a press release, rank anything, score anything, tell you what a change means, or carry a share price. Those are refusals this record made before it had a single reader, and connecting a machine to it does not reopen them. Who to read instead →

What leaves this site

Nothing, in the direction people usually worry about. The file runs on your own machine and reads files that are already public on this one. It has no write path, no account, and no record of who asked. What your assistant does with the rows afterwards is between you and whoever makes your assistant.

How to cite what you take

Cite the publisher named on the row, not this record. Every row carries the publisher’s own link, and that is what belongs in a footnote. This record is the finding aid. If you name it as well, name it as where the history was found. Method and sources →

← Back to the overview