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

Function toolSchema

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

Source from the content-addressed store, hash-verified

3616 });
3617
3618 const toolSchema = (
3619 address: ToolAddress,
3620 ): Effect.Effect<ToolSchemaView | null, StorageFailure> =>
3621 Effect.gen(function* () {
3622 const policyRules = yield* listActivePolicyRuleSet();
3623 const staticEntry = staticTools.get(String(address));
3624 if (staticEntry) {
3625 const tool = staticToolToTool(staticEntry);
3626 const effective = yield* resolvePolicyFromRuleSet(
3627 normalizedPolicyId(tool),
3628 policyRules,
3629 tool.annotations?.requiresApproval,
3630 );
3631 if (effective.action === "block") return null;
3632 const preview = yield* Effect.tryPromise({
3633 try: () =>
3634 buildToolTypeScriptPreview({
3635 inputSchema: tool.inputSchema,
3636 outputSchema: tool.outputSchema,
3637 defs: new Map(),
3638 }),
3639 catch: (cause) =>
3640 storageFailureFromUnknown("Failed to build static tool TypeScript preview", cause),
3641 }).pipe(Effect.option);
3642 return ToolSchemaView.make({
3643 address,
3644 name: tool.name,
3645 description: tool.description,
3646 inputSchema: tool.inputSchema,
3647 outputSchema: tool.outputSchema,
3648 inputTypeScript: Option.getOrUndefined(preview)?.inputTypeScript,
3649 outputTypeScript: Option.getOrUndefined(preview)?.outputTypeScript,
3650 typeScriptDefinitions: Option.getOrUndefined(preview)?.typeScriptDefinitions,
3651 });
3652 }
3653
3654 const parsed = parseToolAddress(String(address));
3655 if (!parsed) return null;
3656 const row = yield* core.findFirst("tool", {
3657 where: (b: AnyCb) =>
3658 b.and(
3659 byOwner(parsed.owner)(b),
3660 b("integration", "=", String(parsed.integration)),
3661 b("connection", "=", String(parsed.connection)),
3662 b("name", "=", String(parsed.tool)),
3663 ),
3664 });
3665 if (!row) return null;
3666 const tool = rowToTool(row);
3667 const effective = yield* resolvePolicyFromRuleSet(
3668 normalizedPolicyId(tool),
3669 policyRules,
3670 tool.annotations?.requiresApproval,
3671 );
3672 if (effective.action === "block") return null;
3673
3674 const runtime = runtimes.get(row.plugin_id);
3675 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