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

Function toolSchema

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

Source from the content-addressed store, hash-verified

5618 });
5619
5620 const toolSchema = (
5621 address: ToolAddress,
5622 ): Effect.Effect<ToolSchemaView | null, StorageFailure> =>
5623 Effect.gen(function* () {
5624 const policyRules = yield* listActivePolicyRuleSet();
5625 const staticEntry = staticTools.get(String(address));
5626 if (staticEntry) {
5627 const tool = staticToolToTool(staticEntry);
5628 const effective = yield* resolvePolicyFromRuleSet(
5629 normalizedPolicyId(tool),
5630 policyRules,
5631 tool.annotations?.requiresApproval,
5632 );
5633 if (effective.action === "block") return null;
5634 const preview = yield* Effect.tryPromise({
5635 try: () =>
5636 buildToolTypeScriptPreview({
5637 inputSchema: tool.inputSchema,
5638 outputSchema: tool.outputSchema,
5639 defs: new Map(),
5640 }),
5641 catch: (cause) =>
5642 storageFailureFromUnknown("Failed to build static tool TypeScript preview", cause),
5643 }).pipe(Effect.option);
5644 return ToolSchemaView.make({
5645 address,
5646 name: tool.name,
5647 description: tool.description,
5648 inputSchema: tool.inputSchema,
5649 outputSchema: tool.outputSchema,
5650 inputTypeScript: Option.getOrUndefined(preview)?.inputTypeScript,
5651 outputTypeScript: Option.getOrUndefined(preview)?.outputTypeScript,
5652 typeScriptDefinitions: Option.getOrUndefined(preview)?.typeScriptDefinitions,
5653 });
5654 }
5655
5656 const parsed = parseToolAddress(String(address));
5657 if (!parsed) return null;
5658 const row = yield* core.findFirst("tool", {
5659 where: (b: AnyCb) =>
5660 b.and(
5661 byOwner(parsed.owner)(b),
5662 b("integration", "=", String(parsed.integration)),
5663 b("connection", "=", String(parsed.connection)),
5664 b("name", "=", String(parsed.tool)),
5665 ),
5666 });
5667 if (!row) return null;
5668 const tool = rowToTool(row);
5669 const effective = yield* resolvePolicyFromRuleSet(
5670 normalizedPolicyId(tool),
5671 policyRules,
5672 tool.annotations?.requiresApproval,
5673 );
5674 if (effective.action === "block") return null;
5675
5676 const runtime = runtimes.get(row.plugin_id);
5677 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