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

Function toolSchema

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

Source from the content-addressed store, hash-verified

4416 });
4417
4418 const toolSchema = (
4419 address: ToolAddress,
4420 ): Effect.Effect<ToolSchemaView | null, StorageFailure> =>
4421 Effect.gen(function* () {
4422 const policyRules = yield* listActivePolicyRuleSet();
4423 const staticEntry = staticTools.get(String(address));
4424 if (staticEntry) {
4425 const tool = staticToolToTool(staticEntry);
4426 const effective = yield* resolvePolicyFromRuleSet(
4427 normalizedPolicyId(tool),
4428 policyRules,
4429 tool.annotations?.requiresApproval,
4430 );
4431 if (effective.action === "block") return null;
4432 const preview = yield* Effect.tryPromise({
4433 try: () =>
4434 buildToolTypeScriptPreview({
4435 inputSchema: tool.inputSchema,
4436 outputSchema: tool.outputSchema,
4437 defs: new Map(),
4438 }),
4439 catch: (cause) =>
4440 storageFailureFromUnknown("Failed to build static tool TypeScript preview", cause),
4441 }).pipe(Effect.option);
4442 return ToolSchemaView.make({
4443 address,
4444 name: tool.name,
4445 description: tool.description,
4446 inputSchema: tool.inputSchema,
4447 outputSchema: tool.outputSchema,
4448 inputTypeScript: Option.getOrUndefined(preview)?.inputTypeScript,
4449 outputTypeScript: Option.getOrUndefined(preview)?.outputTypeScript,
4450 typeScriptDefinitions: Option.getOrUndefined(preview)?.typeScriptDefinitions,
4451 });
4452 }
4453
4454 const parsed = parseToolAddress(String(address));
4455 if (!parsed) return null;
4456 const row = yield* core.findFirst("tool", {
4457 where: (b: AnyCb) =>
4458 b.and(
4459 byOwner(parsed.owner)(b),
4460 b("integration", "=", String(parsed.integration)),
4461 b("connection", "=", String(parsed.connection)),
4462 b("name", "=", String(parsed.tool)),
4463 ),
4464 });
4465 if (!row) return null;
4466 const tool = rowToTool(row);
4467 const effective = yield* resolvePolicyFromRuleSet(
4468 normalizedPolicyId(tool),
4469 policyRules,
4470 tool.annotations?.requiresApproval,
4471 );
4472 if (effective.action === "block") return null;
4473
4474 const runtime = runtimes.get(row.plugin_id);
4475 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

Tested by

no test coverage detected