The eight tools
What each one answers from, which releases it holds for, and how it last answered.
A tool declares the sources it may answer from. The answer carries the one that answered, the releases it holds for, and what it leaves out — and a result that cannot name its source is not returned at all.
The five differ in how much of the machine has to be running before they can answer. Bundled knowledge and the server’s own checkout answer with nothing running; installed packages need files on disk; the installation source needs a booted installation; network sources need outbound reach.
Named as the result names them. What a tool returns in answeredBy is one of these five strings and never a sentence about one.
| Source | What it reads | Required machine state | Versions |
|---|---|---|---|
| knowledge | Curated rules and hints, shipped with the server | nothing running | 12.4 · 13.4 · 14.3 · main |
| checkout | This server’s own repository | nothing running | follows the checkout |
| packages | Files on disk, read and never executed | files on disk | follows the installation |
| installation | Assembled runtime state | a booted installation | follows the installation |
| network | Official documentation and core services | outbound reach | requested release |
Four fields beside the answer, and each of them is there to make a claim checkable: which source answered, which were declared, which releases it holds for, and what the answer does not cover.
{
"answeredBy": "packages",
"declared": ["installation", "packages"],
"versions": ["13.4", "main"],
"omitted": "dynamically registered entries, never read"
}
declared is what the tool was allowed to read; answeredBy is what it reached. The two differing is the whole of what “degraded” means here.
The declaration is one line in a tool. What it buys is spread across every answer that tool ever gives.
A source is a statement about where an answer came from. It is not a statement about whether the answer is right, and the two are worth keeping apart.
What each one answers from, which releases it holds for, and how it last answered.
The five sources in full, and what the server does when one of them cannot be reached.
How a skill declares the sources it needs, so it fails at registration rather than mid-answer.
One command, and the client finds the server. PHP 8.2+, and a TYPO3 project it can read — nothing has to be running for the first answer to arrive.
# one command, and the client finds it $ composer require typo3/support-app ✓ registered 8 tools in .mcp.json
The tools register themselves with their declared sources. One that cannot reach any of them says so at registration rather than in the middle of an answer.