MCPcopy Create free account
hub / github.com/UsefulSoftwareCo/executor / toolSchema

Function toolSchema

packages/core/sdk/src/executor.ts:3288–3406  ·  view source on GitHub ↗
(
      address: ToolAddress,
    )

Source from the content-addressed store, hash-verified

3286 });
3287
3288 const toolSchema = (
3289 address: ToolAddress,
3290 ): Effect.Effect<ToolSchemaView | null, StorageFailure> =>
3291 Effect.gen(function* () {
3292 const policyRules = yield* listActivePolicyRuleSet();
3293 const staticEntry = staticTools.get(String(address));
3294 if (staticEntry) {
3295 const tool = staticToolToTool(staticEntry);
3296 const effective = yield* resolvePolicyFromRuleSet(
3297 normalizedPolicyId(tool),
3298 policyRules,
3299 tool.annotations?.requiresApproval,
3300 );
3301 if (effective.action === "block") return null;
3302 const preview = yield* Effect.tryPromise({
3303 try: () =>
3304 buildToolTypeScriptPreview({
3305 inputSchema: tool.inputSchema,
3306 outputSchema: tool.outputSchema,
3307 defs: new Map(),
3308 }),
3309 catch: (cause) =>
3310 storageFailureFromUnknown("Failed to build static tool TypeScript preview", cause),
3311 }).pipe(Effect.option);
3312 return ToolSchemaView.make({
3313 address,
3314 name: tool.name,
3315 description: tool.description,
3316 inputSchema: tool.inputSchema,
3317 outputSchema: tool.outputSchema,
3318 inputTypeScript: Option.getOrUndefined(preview)?.inputTypeScript,
3319 outputTypeScript: Option.getOrUndefined(preview)?.outputTypeScript,
3320 typeScriptDefinitions: Option.getOrUndefined(preview)?.typeScriptDefinitions,
3321 });
3322 }
3323
3324 const parsed = parseToolAddress(String(address));
3325 if (!parsed) return null;
3326 const row = yield* core.findFirst("tool", {
3327 where: (b: AnyCb) =>
3328 b.and(
3329 byOwner(parsed.owner)(b),
3330 b("integration", "=", String(parsed.integration)),
3331 b("connection", "=", String(parsed.connection)),
3332 b("name", "=", String(parsed.tool)),
3333 ),
3334 });
3335 if (!row) return null;
3336 const tool = rowToTool(row);
3337 const effective = yield* resolvePolicyFromRuleSet(
3338 normalizedPolicyId(tool),
3339 policyRules,
3340 tool.annotations?.requiresApproval,
3341 );
3342 if (effective.action === "block") return null;
3343
3344 const runtime = runtimes.get(row.plugin_id);
3345 const projected = runtime?.plugin.projectToolSchema

Callers

nothing calls this directly

Calls 15

listActivePolicyRuleSetFunction · 0.85
staticToolToToolFunction · 0.85
resolvePolicyFromRuleSetFunction · 0.85
normalizedPolicyIdFunction · 0.85
parseToolAddressFunction · 0.85
byOwnerFunction · 0.85
rowToToolFunction · 0.85
pluginStorageFailureFunction · 0.85
decodeJsonColumnFunction · 0.85

Tested by

no test coverage detected