THE INTRO CARD is free — what an AI skill card is and how to use one Download →Lost Lauren, contact us

THE INSTRUMENTS · Nº 906 · EDITION 1 · LAUNCHING SOON

LUND CARDS · THE INSTRUMENTSNº 906 PROPOSED
THE TOOL WORDS — the LSC-1 face
THE CARD AS TEXT · FOR EYES AND FOR MACHINES

THE TOOL WORDS · the words an agent reads to pick a tool

WAKES WHEN an agent picks the wrong tool, or someone writes or reviews a connector's tool words

THE LOOP

  1. export tools/list as a JSON file
  2. toolwords.py lint · the seven checks
  3. route · real prompts, expected tools
  4. collide · the pairs that share too much
  5. rewrite the not-for lines; route again

NEVER

  • Open a tool description on "a utility"
  • Leave a parameter undescribed
  • Ship two tools with twin names

IT MAKES lint — every tool against the seven checks, a mark out of 7; route — which tool each prompt lands on; mis-picks named; collide — pairs whose distinctive words overlap past the line.

THE STANDARD the first verb is the first match; say what it is not for; every parameter is described; twin names are a coin toss; route on real prompts; a thin margin is a mis-pick waiting to happen.

IN THE BOX SKILL.md · CARD.md · TIN.md · START-HERE.md · LICENSE-NOTE.md · THE-CLAUSES.md · MY-LEDGER.md · WITNESS.md · SELFTEST.md · AUDIT.md · MANIFEST.md · HOSTS.md · scripts/toolwords.py · references/HOW-A-TOOL-GETS-PICKED.md · rules/ (4 doors) · system/ (2 prompts) · mcp/mcp_card.py · card.json · card.svg · card-machine.svg · card.html.

PROOF SELFTEST 10/10 · witnessed in Claude 2026-10-09 · Edition 1.

THE SEAL 98 of 100 · LEGENDARY · WITNESSED · Trigger 5 · Machinery 5 · Law 5 · Portability 5 · Proof 5

IT CAN BE WRONG an AI reading a text file: it can be wrong and can invent a number, a rule, a name or a date; check what matters against your own records and the source; the risk is yours. THE-CLAUSES.md rides in the packet and is part of the licence.

THE PUNCH · SHA-256 OF SKILL.MD · 157AF4CD4C24A26282D08DAF

THE FACE, FULL SIZE → · THE MACHINE FACE → · card.json →

THE TOOL WORDS

the words an agent reads to pick a tool

LINT · ROUTE · COLLIDE

98LEGENDARYWITNESSEDIN CLAUDEIN LUNDRIN CHATGPT

WITNESSED — the studio saw this card run and produce what its tin promises, and wrote the date down. What the marks mean →

THE SPEC SHEET · READ BEFORE YOU BUY · THE STANDARD EVERY CARD MEETS →

SEAL
98 of 100 · LEGENDARY · WITNESSED
EDITION
E1 · witnessed 2026-10-09
MACHINE
scripts/toolwords.py · 3 commands · selftest 10/10
RUNS
On your own computer. Standard library only, offline; no account, no key, no telemetry.
HOSTS
Claude · Claude Code · ChatGPT · Gemini · any AI that reads a file (HOSTS.md names each door)
LICENCE
One person, any number of their own AIs and computers · editions replace files · nothing renews · freeze, not loss
PUNCH
157AF4CD4C24A26282D08DAF · sha-256 of SKILL.md · check any file against it →

CITE THIS CARDTHE TOOL WORDS, Edition 1. Lund Studio LLC, Westminster, Colorado. https://lundr.tech/?view=tool-words-card. Punch 157AF4CD4C24A26282D08DAF. Retrieved 2026-10-10.

What it is.

Lints the tool descriptions a connector or MCP server exposes (the shape tools/list returns: name, description, inputSchema) against seven checks — present, sized, opens on its verb, says when and when not to use it, no vague words, every parameter described, no near-twin names — routes a set of prompts across the tool list by the words they share and reports which prompts land on the wrong tool, and names the pairs of tools whose descriptions overlap.

It carries a machine that shows its working: lint — every tool against the seven checks, a mark out of 7; route — which tool each prompt lands on; mis-picks named; collide — pairs whose distinctive words overlap past the line — 10 checks in its selftest, every command on the record. It will never open a tool description on "a utility"; never leave a parameter undescribed; never ship two tools with twin names.

Six laws, written into the card.

They are in the card itself, so the AI follows them.

THE FIRST VERB IS THE FIRST MATCHA description opens on what the tool does.
SAY WHAT IT IS NOT FORThe not-for line keeps neighbours apart and costs no false picks: the router strips it before matching.
EVERY PARAMETER IS DESCRIBEDEvery parameter is described, or the agent fills it by guessing.
TWIN NAMES ARE A COIN TOSSsearch_order beside search_orders is one tool in the router's eyes.
ROUTE ON REAL PROMPTSTwenty prompts from real traffic, each with its expected tool, before the list ships.
A THIN MARGIN IS A MIS-PICK WAITING TO HAPPENWiden it with words the other tool does not have.

What rides in the card.

In the card’s own voice, with a machine that shows its working.

THE GUIDEreferences/HOW-A-TOOL-GETS-PICKED.md
THE MACHINEtoolwords.py · three commandslint — every tool against the seven checks, a mark out of 7; route — which tool each prompt lands on; mis-picks named; collide — pairs whose distinctive words overlap past the line. Every command prints its working and refuses a bad input; 10 checks in its selftest, every command on the record.

What it does once your AI has it.

  • lint Every tool against the seven checks, a mark out of 7
  • route Which tool each prompt lands on; mis-picks named
  • collide Pairs whose distinctive words overlap past the line
  • On the record Three tools linted — the two real ones 7/7, the "powerful general purpose utility" 2/7 with its undescribed parameter named; three prompts routed to the expected tools with their margins; no collisions among the three, then a near-twin find_orders added and found colliding with search_orders at 0.9.

What it will never do.

It will never open a tool description on "a utility"; never leave a parameter undescribed; never ship two tools with twin names.

The router is word overlap with light stemming: the floor of routing, not the model's judgement. A prompt that routes right here can still mis-route in a model, and the reverse; the margin is the useful number. The checks are form, not truth. It is an AI reading a text file: it can be wrong, so check what matters against your own records and the source.

What’s in the buy.

  • CARD.md — the whole card: who it is, its laws, when it says no, what it carries · SKILL.md — the door your AI reads first · START-HERE.md — the first five minutes, for you
  • HOW-A-TOOL-GETS-PICKED.md — the guide in references/, in the card's own voice
  • scripts/toolwords.py — the machine: lint · route · collide, standard library only, selftest 10/10
  • WITNESS.md + SELFTEST.md — every command on the record, as it printed · MANIFEST.md, every file hashed · AUDIT.md, the twelve checks
  • MY-LEDGER.md — the card's memory, on your own machine · TIN.md · LICENSE-NOTE.md · THE-CLAUSES.md · HOSTS.md
  • card.svg + card-machine.svg + card.json · card.html, the card as one offline file · the doors for ChatGPT, Gemini, Cursor, Claude Code and MCP hosts (rules/, system/, mcp/)

PROOF · SELFTEST 10/10 · 3 COMMANDS ON THE RECORD · WITNESSED IN CLAUDE 2026-10-09 · EDITION 1 · PUNCH 157AF4CD4C24A26282D08DAF

ON EVERY DOOR · A CARD FOR YOUR AI, A FILE FOR YOUR COMPUTER

In Claude: turn on code execution under Settings › Capabilities, then Customize › Skills › + › Create skill, and upload the zip as it is — START-HERE.md in the box walks you through it, and tells you how to keep the ledger. In ChatGPT, Gemini and the rest: a Project, a GPT or a Gem with the card’s files attached and the short door in the box pasted as its instructions. The words run anywhere an AI reads Markdown; the machines run wherever the host runs Python. Witnessed in Claude only. The host marks →

Take it.

Nº 906 PROPOSED — LAUNCHING SOON

Sold as is under the term printed. A card instructs an AI you operate; results depend on your model, your files and your judgement. Not medical, legal, tax or financial advice, never the person’s boss, and not a licence to practise. The terms →

ONE PAYMENT · NOTHING RENEWS ITSELF

OFFLINE · ONE LICENCE · PUNCH-CHECKABLE · THE STANDARD

One payment. The file is yours to keep and keeps working at its edition; new editions issued in the year after you buy reach you by email as replacement files. Tax is added at checkout where it applies. Nothing auto-renews.

One email when it is on sale, from the studio; nothing else, ever.

A TERM, NOT A SUBSCRIPTION: NOTHING RENEWS ITSELF AND NOBODY IS CHARGED AGAIN. WHEN A TERM ENDS THE FILES STAY ON YOUR COMPUTER AND STAY READABLE — FREEZE, NOT LOSS.

THE MACHINE · IN THE OPEN · FROM THE WITNESSED RUN OF 2026-10-09

toolwords.py, every command showing its working.

A small Python program, standard library only. Your AI runs it; you can too. Every block below is pasted from the card’s own WITNESS.md, as printed.

lintevery tool against the seven checks, a mark out of 7
routewhich tool each prompt lands on; mis-picks named
collidepairs whose distinctive words overlap past the line
selftest10 checks that prove the machine; it must print 10/10
lint · EVERY TOOL AGAINST THE SEVEN CHECKS, A MARK OUT OF 7
$ python3 scripts/toolwords.py lint tools.json
search_orders · 7/7
search_products · 7/7
helper · 3/7
  FAIL · opens on the verb of what it does (Lists…, Returns…, Searches…)
  FAIL · says when to use it — and better, when not to
  FAIL · no vague words (general purpose, helps with, powerful, utility, various)
  FAIL · every parameter has a description (1 parameter)
3 tools · worst 3/7
route · WHICH TOOL EACH PROMPT LANDS ON; MIS-PICKS NAMED
$ python3 scripts/toolwords.py route tools.json prompts.jsonl --report routing.md
RIGHT · search_orders · margin 0.25 · "did order 1183 ship yet?"
RIGHT · search_products · margin 0.28 · "is the blue bottle in stock and what does it cost"
RIGHT · search_orders · margin 0.50 · "show the orders the customer Sam placed last month"
3 of 3 judged prompts landed on the expected tool
wrote routing.md
collide · PAIRS WHOSE DISTINCTIVE WORDS OVERLAP PAST THE LINE
$ python3 scripts/toolwords.py collide tools.json
3 tools · 3 pairs · 0 past the line at 0.50
(a fourth tool, find_orders, is added beside search_orders)
$ (a fourth tool, find_orders, is added beside search_orders)
collide · PAIRS WHOSE DISTINCTIVE WORDS OVERLAP PAST THE LINE
$ python3 scripts/toolwords.py collide tools-with-twin.json
4 tools · 6 pairs · 1 past the line at 0.50
  search_orders ↔ find_orders · containment 0.92 · shared: asks, customer, date, match, name, number, order, shop

THE NUMBERS, NAMES AND DATES IN THESE RUNS ARE THE STUDIO’S OWN EXAMPLES, INVENTED FOR THE RECORD; NO REAL COMPANY, PERSON OR PROPERTY IS NAMED.

QUESTIONS AT THE TABLE

Asked before the wire.

What does it need from me?

Export tools/list as a JSON file. It asks first for the tools/list JSON, and twenty real prompts with the tool each should land on.

Does it send anything anywhere?

No. The machine is a standard-library Python program that runs on your own computer and sends nothing anywhere; the words run wherever an AI reads Markdown. No server, no account, no key.

What is on the record?

The self-test (10/10) and every command run on real example inputs, pasted into WITNESS.md as they printed; the punch on the face is the SHA-256 of SKILL.md, so a downloaded copy can be checked against this room.

Can it be wrong?

Yes — it is an AI reading a text file. The router is word overlap with light stemming: the floor of routing, not the model's judgement. A prompt that routes right here can still mis-route in a model, and the reverse; the margin is the useful number. The checks are form, not truth.

What will it never do?

It will never open a tool description on "a utility"; never leave a parameter undescribed; never ship two tools with twin names.

← THE INSTRUMENTS · THE FLOOR →

AT YOUR ELBOW, NEVER THE BOSS · NOT LEGAL, MEDICAL, TAX OR FINANCIAL ADVICE · NOT A PAYMENT CARD · © 2026 LUND STUDIO LLC

PAY BYAmerican Express Apple Pay Diners ClubDiscoverGoogle Pay Mastercard PayPalShop Pay Visa
CART · 0