MCP Tool Poisoning: Detect and Safely Validate It with AgentHound AgentHound, a security tool from an unspecified vendor, detects and validates MCP tool poisoning by separating four claims: injection signal, agent context with high-impact capabilities, authorized description change, and restore verification. It uses passive collection and active scans with reversible probes, requiring explicit authorization, and maps poisoned contexts through TRUSTS_SERVER edges to avoid false positives. MCP tool descriptions are part of the model's decision surface. A description can explain when a tool should be used, what data it expects, and how its output should be interpreted. If that metadata contains hidden or adversarial instructions, it can steer the agent before any tool is invoked. A rigorous assessment separates four claims: - The description contains an injection signal. - An agent loads the tool into a context that also contains high-impact capabilities. - The provider permits an authorized description change. - The exact original state can be restored and verified. AgentHound represents these claims separately. Passive collection and server-side processors handle the first two. When an active scan finds an eligible ContextForge-managed tool and an associated bearer credential, the autonomous planner can test the last two with a scan-specific marker and immediate recovery. Start with a current scan Put the in-scope ContextForge MCP endpoint in a supported local agent configuration, along with the authorized credential the client uses. AgentHound always collects local configurations and configured endpoints, so no protocol-specific collector flag is required: agenthound scan --output contextforge-scan.json If a hostname or network range must be added to the scope, pass one positional target without disabling local collection: agenthound scan gateway.example \ --exclude admin.gateway.example \ --output contextforge-scan.json The normal scan is active. It can reuse compatible credentials, verify MCP resource access, and run eligible reversible ContextForge probes. Run it only in an environment you own or are explicitly authorized to assess. For detection without cross-target credential reuse, tool or model invocation, or mutation, use stealth mode: agenthound scan --stealth --output contextforge-readonly.json Stealth still performs anonymous and exact configured read-only collection. Protocol operations may use POST where MCP requires it, but the workflow does not invoke tools or change their metadata. Detect suspicious tool descriptions During MCP enumeration, AgentHound evaluates tool descriptions with its compiled detection rules. Signals include override language, instructions to ignore other guidance, exfiltration-oriented text, hidden Unicode, embedded URLs, and encoded payload indicators. After moving the artifact to the analysis system, ingest and query the published projection: agenthound-server ingest contextforge-scan.json agenthound-server query --prebuilt poisoned-tools A matching tool receives a POISONED DESCRIPTION relationship. This means its description matched a detection condition. It does not mean a model read the description, followed it, or invoked another tool. Map the poisoned context to capability The next question is whether an agent trusts both the server exposing the injection-bearing tool and a server exposing a high-impact sibling. AgentHound's POISONS CONTEXT processor scopes the relationship through those TRUSTS SERVER edges. injection-bearing tool | | shared agent context v shell, code, credential, or email capability That scope avoids treating every suspicious tool as if it could influence every capability in the environment. Review the finding's persisted evidence subgraph, confidence, source collector, and coverage before describing the path as reachable. The graph evidence is enough to prioritize remediation. It is not proof that a model executed the sink. Understand when the active round trip is eligible MCP standardizes tool discovery and invocation, not a universal API for rewriting tool metadata. AgentHound therefore limits active description validation to a concrete ContextForge management contract. The planner requires all of the following before it creates a round-trip candidate: | Requirement | Why it matters | |---|---| | An HTTP MCP server with the supported ContextForge server-scoped endpoint | Binds the MCP observation to the provider's management object | | At least one tool observed from that server | Selects an exact tool name and graph identity | | Concrete bearer material associated with the server | Prevents masked, hashed, unresolved, or arbitrary strings from becoming credentials | | Active mode and an admitted endpoint | Honors --stealth and the scan's hard exclusions | | Provider identity and authorization checks | Prevents the adapter from treating a generic MCP server as a writable ContextForge target | If the MCP and management surfaces require different authorized bearer tokens, AgentHound supports these environment overrides: export AGENTHOUND MCP TOKEN='