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

Function toolSchema

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

Source from the content-addressed store, hash-verified

5146 });
5147
5148 const toolSchema = (
5149 address: ToolAddress,
5150 ): Effect.Effect<ToolSchemaView | null, StorageFailure> =>
5151 Effect.gen(function* () {
5152 const policyRules = yield* listActivePolicyRuleSet();
5153 const staticEntry = staticTools.get(String(address));
5154 if (staticEntry) {
5155 const tool = staticToolToTool(staticEntry);
5156 const effective = yield* resolvePolicyFromRuleSet(
5157 normalizedPolicyId(tool),
5158 policyRules,
5159 tool.annotations?.requiresApproval,
5160 );
5161 if (effective.action === "block") return null;
5162 const preview = yield* Effect.tryPromise({
5163 try: () =>
5164 buildToolTypeScriptPreview({
5165 inputSchema: tool.inputSchema,
5166 outputSchema: tool.outputSchema,
5167 defs: new Map(),
5168 }),
5169 catch: (cause) =>
5170 storageFailureFromUnknown("Failed to build static tool TypeScript preview", cause),
5171 }).pipe(Effect.option);
5172 return ToolSchemaView.make({
5173 address,
5174 name: tool.name,
5175 description: tool.description,
5176 inputSchema: tool.inputSchema,
5177 outputSchema: tool.outputSchema,
5178 inputTypeScript: Option.getOrUndefined(preview)?.inputTypeScript,
5179 outputTypeScript: Option.getOrUndefined(preview)?.outputTypeScript,
5180 typeScriptDefinitions: Option.getOrUndefined(preview)?.typeScriptDefinitions,
5181 });
5182 }
5183
5184 const parsed = parseToolAddress(String(address));
5185 if (!parsed) return null;
5186 const row = yield* core.findFirst("tool", {
5187 where: (b: AnyCb) =>
5188 b.and(
5189 byOwner(parsed.owner)(b),
5190 b("integration", "=", String(parsed.integration)),
5191 b("connection", "=", String(parsed.connection)),
5192 b("name", "=", String(parsed.tool)),
5193 ),
5194 });
5195 if (!row) return null;
5196 const tool = rowToTool(row);
5197 const effective = yield* resolvePolicyFromRuleSet(
5198 normalizedPolicyId(tool),
5199 policyRules,
5200 tool.annotations?.requiresApproval,
5201 );
5202 if (effective.action === "block") return null;
5203
5204 const runtime = runtimes.get(row.plugin_id);
5205 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