The Model Context Protocol has made tool integration substantially easier, which means most agents now consume tools from servers their team did not write.
Everything above applies, with one addition specific to the protocol: the server controls both the tool descriptions and the results, so it supplies leg two of chapter 3's trifecta and a write into your prompt. A third-party MCP server is a trusted component in the precise sense that it can change your agent's behaviour without changing your code.
That is not an argument against using them. It is an argument for knowing which ones you run, who maintains them, whether their descriptions are pinned, and what capabilities they hold under chapter 8. Most teams cannot currently answer the first of those.
Everything in this chapter reduces to one artifact, and it is a file rather than a platform.
- tool: lookup_order
source: internal
maintainer: orders-team
capabilities: [read:order]
description_hash: 9f2a...
- tool: web_fetch
source: mcp://example-tools.dev
maintainer: third-party
pinned: sha256:41c8...
capabilities: [read:public-web]
description_hash: 7b10...
reviewed: 2026-09-02Five fields per tool and the chapter is mostly implemented. The hash of the description is what turns a silent change into a failing build. The capability list is chapter 8 arriving at the point where someone has to write it down. The review date is what an auditor asks for, and what tells you which entries nobody has looked at since they were added in a hurry.
Generate the descriptions hash at startup and fail if it has moved. That single check catches description injection, rug-pulls in the metadata, and a surprising number of ordinary mistakes.
The reason to keep it in the repository rather than a wiki is that it then moves through review with the code that depends on it, and a pull request that adds a tool is visibly a pull request that adds a tool.
Friction, and the friction is the point.
The 72-hour delay means you are never on the newest release, which occasionally matters and usually does not. Hash pinning means updates are a deliberate act rather than a lock-file refresh. Description pinning means adding a tool has a review step.
The larger cost is organisational. Somebody has to own the list of tools the agent can reach, and in most teams that list is currently owned by whoever last needed something. The register does not have to be sophisticated. A file naming each tool, its source, its maintainer, its pinned hash and its capability set is enough, and it is the artifact chapter 18 will ask you for.
Chapter 14 turns to the last surface the primitives do not cover: the person you interrupt for approval.
| Claim | Source | Status |
|---|---|---|
LiteLLM 1.82.7/1.82.8 published 24 Mar 2026 10:39-16:00 UTC; compromise originated from the Trivy dependency in CI; payload harvested env vars, SSH keys, cloud credentials, Kubernetes tokens, database passwords; remediation was rotate secrets, remove litellm_init.pth, pin to v1.82.6 or later verified | LiteLLM security advisory, https://docs.litellm.ai/blog/security-update-march-2026 | PRIMARY |
Trivy pulled from apt without a pinned version; PYPI_PUBLISH token exfiltrated from the GitHub Actions runner; TeamPCP also behind Trivy and KICS compromises | https://securitylabs.datadoghq.com/articles/litellm-compromised-pypi-teampcp-supply-chain-campaign/ · https://snyk.io/blog/poisoned-security-scanner-backdooring-litellm/ | VENDOR (research arms, independently corroborating) |
.pth persistence surviving upgrade; three-stage payload; ~3 hours live | https://thehackernews.com/2026/03/teampcp-backdoors-litellm-versions.html · https://cycode.com/blog/lite-llm-supply-chain-attack/ | SECONDARY / VENDOR |
| ~3.4 million downloads per day | Secondary reporting; see UNVERIFIED-CLAIMS.md #13 | SECONDARY |
| Improper Supply Chain as OWASP LLM05 (2026) | https://cybersecuritynews.com/owasp-genai-llm-top-10-2026/ | SECONDARY |
| Advisory counts re-counted 14 Sep 2026 (n8n 180, AutoGPT 40, Claude Code 30, Dify 21, Roo-Code 11) | GitHub public advisory API; assets/replication/advisory_counts.py | PRIMARY (counted) |
The four-failure taxonomy, the treatment of tool descriptions as part of the system prompt, the 72-hour adoption delay, and the tool register are the author's. The claim that "most malicious releases are caught in hours" generalises from this incident and a handful of others and has not been measured across the population of malicious packages; it is the weakest quantitative statement in the chapter and is offered as a rule of thumb. The assertion that most teams cannot enumerate their MCP servers is experience, not survey data.
Download the full PDF for free?
Free download — no account required