From 1159978187d89ea5b79c81a20c2f59761f6f6738 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Padez?= Date: Sun, 8 Mar 2026 09:39:38 +0000 Subject: [PATCH] add targets field to filter tools per agent harness (pi/claude/all) Co-Authored-By: Claude Opus 4.6 --- src/servers/mcp-tool-server.ts | 2 ++ src/servers/sync-marketplace.ts | 4 ++++ src/servers/tool-loader-source.ts | 3 +++ 3 files changed, 9 insertions(+) diff --git a/src/servers/mcp-tool-server.ts b/src/servers/mcp-tool-server.ts index 704f6181..0b168a6c 100644 --- a/src/servers/mcp-tool-server.ts +++ b/src/servers/mcp-tool-server.ts @@ -32,6 +32,7 @@ type ToolMeta = { label: string; description: string; inputs: Record; + targets?: string; }; type DiscoveredTool = { @@ -138,6 +139,7 @@ function discoverTools(dirs: string[]): DiscoveredTool[] { const { meta } = parseFrontmatter(content); if (!meta.name || !meta.description) continue; + if ((meta.targets as string ?? 'all') === 'pi') continue; if (seen.has(meta.name)) continue; seen.add(meta.name); diff --git a/src/servers/sync-marketplace.ts b/src/servers/sync-marketplace.ts index 80476196..1c04fdd7 100644 --- a/src/servers/sync-marketplace.ts +++ b/src/servers/sync-marketplace.ts @@ -21,6 +21,7 @@ type MarketplaceTool = { body: string; version: number; language: string; + targets: string; inputs: Record; implementation: string; }; @@ -37,6 +38,9 @@ function buildToolMd(tool: MarketplaceTool): string { lines.push(`description: ${tool.description}`); lines.push(`version: ${tool.version}`); lines.push(`language: ${tool.language}`); + if (tool.targets && tool.targets !== 'all') { + lines.push(`targets: ${tool.targets}`); + } if (tool.inputs && Object.keys(tool.inputs).length > 0) { lines.push('inputs:'); diff --git a/src/servers/tool-loader-source.ts b/src/servers/tool-loader-source.ts index f8993c5e..8e1d1b8b 100644 --- a/src/servers/tool-loader-source.ts +++ b/src/servers/tool-loader-source.ts @@ -19,6 +19,7 @@ type ToolMeta = { description: string; language: 'typescript' | 'bash' | 'python'; inputs: Record; + targets?: string; }; function parseFrontmatter(content: string): { meta: Partial; body: string } { @@ -171,6 +172,8 @@ function discoverTools(dir: string): Array<{ toolDir: string; entryFile: string; continue; } + if ((meta.targets as string ?? 'all') === 'claude') continue; + discovered.push({ toolDir, entryFile, meta: meta as ToolMeta }); }