JuliusBrussee/caveman · error · Error
tool search response contained an unknown or duplicate tool
Error message
tool search response contained an unknown or duplicate tool
What it means
Error "tool search response contained an unknown or duplicate tool" thrown in JuliusBrussee/caveman.
Source
Thrown at packages/sdk/typescript/src/index.ts:1631
const fullSchemaTokens = validCounts ? rawFull : 0;
const savedTokens = fullSchemaTokens - sentSchemaTokens;
const reductionPct = fullSchemaTokens === 0 ? 0 : Math.round((savedTokens / fullSchemaTokens) * 1000) / 10;
const catalogByName = new Map<string, CaveTool>();
for (const tool of catalog) {
if (typeof tool.name !== "string" || tool.name.trim() === "" || catalogByName.has(tool.name)) {
throw new Error("tool catalog names must be non-empty and unique");
}
catalogByName.set(tool.name, tool);
}
if (!Array.isArray(data.tools)) throw new Error("tool search response tools must be an array");
const returnedNames = new Set<string>();
const selectedTools = data.tools.map((wire: unknown) => {
const name = wire !== null && typeof wire === "object" && typeof (wire as Record<string, unknown>)["name"] === "string"
? (wire as Record<string, unknown>)["name"] as string
: "";
const local = catalogByName.get(name);
if (!local || returnedNames.has(name)) throw new Error("tool search response contained an unknown or duplicate tool");
returnedNames.add(name);
return local;
});
return {
sessionId: typeof data.session_id === "string" ? data.session_id : undefined,
tools: selectedTools,
sentSchemaTokens,
fullSchemaTokens,
deferredCount: strictNonNegativeInt(data.deferred_count) ?? 0,
method: data.method ?? "unknown",
tokenBasis: typeof data.token_basis === "string" && data.token_basis.trim() ? data.token_basis : "unavailable",
basis: "inferred",
savedTokens,
reductionPct
};
}
View on GitHub (pinned to 27d5a3981a)
Solutions
- The search returned an unknown or duplicate tool; refresh the catalog and retry.
When it happens
Trigger: Thrown at packages/sdk/typescript/src/index.ts:1631 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of JuliusBrussee/caveman@27d5a3981a (2026-08-15).
Data as JSON: /api/errors/c45f8499972d3c1f.
Report an issue: GitHub.