@agentdiscuss/mcp-server 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/.env.example +4 -0
  2. package/README.md +387 -0
  3. package/dist/agentic-api/client.d.ts +34 -0
  4. package/dist/agentic-api/client.js +143 -0
  5. package/dist/agentic-api/client.js.map +1 -0
  6. package/dist/agentic-api/types.d.ts +125 -0
  7. package/dist/agentic-api/types.js +2 -0
  8. package/dist/agentic-api/types.js.map +1 -0
  9. package/dist/catalog/discovery.d.ts +5 -0
  10. package/dist/catalog/discovery.js +83 -0
  11. package/dist/catalog/discovery.js.map +1 -0
  12. package/dist/config/capabilities.d.ts +4 -0
  13. package/dist/config/capabilities.js +881 -0
  14. package/dist/config/capabilities.js.map +1 -0
  15. package/dist/config/constants.d.ts +13 -0
  16. package/dist/config/constants.js +79 -0
  17. package/dist/config/constants.js.map +1 -0
  18. package/dist/config/domains.d.ts +3 -0
  19. package/dist/config/domains.js +79 -0
  20. package/dist/config/domains.js.map +1 -0
  21. package/dist/config/env.d.ts +8 -0
  22. package/dist/config/env.js +26 -0
  23. package/dist/config/env.js.map +1 -0
  24. package/dist/http/app.d.ts +3 -0
  25. package/dist/http/app.js +81 -0
  26. package/dist/http/app.js.map +1 -0
  27. package/dist/http/routes/capabilities.d.ts +3 -0
  28. package/dist/http/routes/capabilities.js +55 -0
  29. package/dist/http/routes/capabilities.js.map +1 -0
  30. package/dist/http/routes/domains.d.ts +3 -0
  31. package/dist/http/routes/domains.js +17 -0
  32. package/dist/http/routes/domains.js.map +1 -0
  33. package/dist/http/routes/health.d.ts +2 -0
  34. package/dist/http/routes/health.js +15 -0
  35. package/dist/http/routes/health.js.map +1 -0
  36. package/dist/http/routes/manifest.d.ts +3 -0
  37. package/dist/http/routes/manifest.js +16 -0
  38. package/dist/http/routes/manifest.js.map +1 -0
  39. package/dist/http/routes/root.d.ts +3 -0
  40. package/dist/http/routes/root.js +338 -0
  41. package/dist/http/routes/root.js.map +1 -0
  42. package/dist/index.d.ts +2 -0
  43. package/dist/index.js +43 -0
  44. package/dist/index.js.map +1 -0
  45. package/dist/mcp/server.d.ts +4 -0
  46. package/dist/mcp/server.js +41 -0
  47. package/dist/mcp/server.js.map +1 -0
  48. package/dist/mcp/tool-catalog.d.ts +27 -0
  49. package/dist/mcp/tool-catalog.js +204 -0
  50. package/dist/mcp/tool-catalog.js.map +1 -0
  51. package/dist/mcp/tools/execute-capability.d.ts +3 -0
  52. package/dist/mcp/tools/execute-capability.js +50 -0
  53. package/dist/mcp/tools/execute-capability.js.map +1 -0
  54. package/dist/mcp/tools/generated-capability-tool.d.ts +4 -0
  55. package/dist/mcp/tools/generated-capability-tool.js +51 -0
  56. package/dist/mcp/tools/generated-capability-tool.js.map +1 -0
  57. package/dist/mcp/tools/get-capability-contract.d.ts +3 -0
  58. package/dist/mcp/tools/get-capability-contract.js +20 -0
  59. package/dist/mcp/tools/get-capability-contract.js.map +1 -0
  60. package/dist/mcp/tools/list-capability-tools.d.ts +3 -0
  61. package/dist/mcp/tools/list-capability-tools.js +36 -0
  62. package/dist/mcp/tools/list-capability-tools.js.map +1 -0
  63. package/dist/mcp/tools/list-domains.d.ts +3 -0
  64. package/dist/mcp/tools/list-domains.js +24 -0
  65. package/dist/mcp/tools/list-domains.js.map +1 -0
  66. package/dist/mcp/tools/recommend-capability-route.d.ts +3 -0
  67. package/dist/mcp/tools/recommend-capability-route.js +50 -0
  68. package/dist/mcp/tools/recommend-capability-route.js.map +1 -0
  69. package/dist/mcp/tools/schemas.d.ts +56 -0
  70. package/dist/mcp/tools/schemas.js +141 -0
  71. package/dist/mcp/tools/schemas.js.map +1 -0
  72. package/dist/mcp/tools/utils.d.ts +58 -0
  73. package/dist/mcp/tools/utils.js +194 -0
  74. package/dist/mcp/tools/utils.js.map +1 -0
  75. package/package.json +49 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-catalog.js","sourceRoot":"","sources":["../../src/mcp/tool-catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { AgenticApiClient } from "../../agentic-api/client.js";
3
+ export declare function registerExecuteCapabilityTool(server: McpServer, client: AgenticApiClient): void;
@@ -0,0 +1,50 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { AgenticApiClient } from "../../agentic-api/client.js";
3
+ import { EXECUTE_CAPABILITY_INPUT_SCHEMA, EXECUTE_INPUT_EXAMPLES, } from "./schemas.js";
4
+ import { loadCapabilityOperationContext, toCapabilityPreflightError, toCapabilityToolError, toToolSuccess, } from "./utils.js";
5
+ export function registerExecuteCapabilityTool(server, client) {
6
+ server.registerTool("execute_capability", {
7
+ title: "Execute capability",
8
+ description: `Fallback generic tool that proxies an execute request to /domains/{domain}/capabilities/{capabilityId}/execute.\n\nUse explicit capability tools first when they are available. In inspector form mode:\n- put the domain in the domain field\n- put the capabilityId in the capabilityId field\n- put only the inner upstream body in input\n- do not nest { "domain": ..., "capabilityId": ..., "input": ... } inside input\n\nFull tool-call example:\n${JSON.stringify(EXECUTE_INPUT_EXAMPLES[0], null, 2)}`,
9
+ inputSchema: EXECUTE_CAPABILITY_INPUT_SCHEMA,
10
+ }, async ({ domain, capabilityId, input }) => {
11
+ const contractContext = await loadCapabilityOperationContext(client, domain, capabilityId, "execute");
12
+ const missingRequiredFields = contractContext.operationContract
13
+ ? contractContext.operationContract.requiredFields.filter((field) => {
14
+ const value = input[field];
15
+ if (typeof value === "string") {
16
+ return value.trim().length === 0;
17
+ }
18
+ return value === undefined || value === null;
19
+ })
20
+ : [];
21
+ if (missingRequiredFields.length > 0) {
22
+ return toCapabilityPreflightError({
23
+ client,
24
+ domain,
25
+ capability: capabilityId,
26
+ operation: "execute",
27
+ payload: input,
28
+ contract: contractContext.contract,
29
+ operationContract: contractContext.operationContract,
30
+ missingRequiredFields,
31
+ });
32
+ }
33
+ try {
34
+ const result = await client.executeCapability(domain, capabilityId, input);
35
+ return toToolSuccess(result);
36
+ }
37
+ catch (error) {
38
+ return toCapabilityToolError(error, {
39
+ client,
40
+ domain,
41
+ capability: capabilityId,
42
+ operation: "execute",
43
+ payload: input,
44
+ contract: contractContext.contract,
45
+ operationContract: contractContext.operationContract,
46
+ });
47
+ }
48
+ });
49
+ }
50
+ //# sourceMappingURL=execute-capability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute-capability.js","sourceRoot":"","sources":["../../../src/mcp/tools/execute-capability.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EACL,+BAA+B,EAC/B,sBAAsB,GACvB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,8BAA8B,EAC9B,0BAA0B,EAC1B,qBAAqB,EACrB,aAAa,GACd,MAAM,YAAY,CAAC;AAEpB,MAAM,UAAU,6BAA6B,CAC3C,MAAiB,EACjB,MAAwB;IAExB,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;QACE,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EACT,6bAA6b,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;QACnf,WAAW,EAAE,+BAA+B;KAC7C,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,EAAE;QACxC,MAAM,eAAe,GAAG,MAAM,8BAA8B,CAC1D,MAAM,EACN,MAAM,EACN,YAAY,EACZ,SAAS,CACV,CAAC;QACF,MAAM,qBAAqB,GAAG,eAAe,CAAC,iBAAiB;YAC7D,CAAC,CAAC,eAAe,CAAC,iBAAiB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;gBAChE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;gBAE3B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBAC9B,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC;gBACnC,CAAC;gBAED,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;YAC/C,CAAC,CAAC;YACJ,CAAC,CAAC,EAAE,CAAC;QAEP,IAAI,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrC,OAAO,0BAA0B,CAAC;gBAChC,MAAM;gBACN,MAAM;gBACN,UAAU,EAAE,YAAY;gBACxB,SAAS,EAAE,SAAS;gBACpB,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,eAAe,CAAC,QAAQ;gBAClC,iBAAiB,EAAE,eAAe,CAAC,iBAAiB;gBACpD,qBAAqB;aACtB,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAC3C,MAAM,EACN,YAAY,EACZ,KAAK,CACN,CAAC;YAEF,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,qBAAqB,CAAC,KAAK,EAAE;gBAClC,MAAM;gBACN,MAAM;gBACN,UAAU,EAAE,YAAY;gBACxB,SAAS,EAAE,SAAS;gBACpB,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,eAAe,CAAC,QAAQ;gBAClC,iBAAiB,EAAE,eAAe,CAAC,iBAAiB;aACrD,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { AgenticApiClient } from "../../agentic-api/client.js";
3
+ import type { CapabilityToolDefinition } from "../tool-catalog.js";
4
+ export declare function registerGeneratedCapabilityTool(server: McpServer, client: AgenticApiClient, tool: CapabilityToolDefinition): void;
@@ -0,0 +1,51 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { AgenticApiClient } from "../../agentic-api/client.js";
3
+ import { toCapabilityPreflightError, toCapabilityToolError, toToolSuccess, } from "./utils.js";
4
+ export function registerGeneratedCapabilityTool(server, client, tool) {
5
+ server.registerTool(tool.name, {
6
+ title: tool.title,
7
+ description: tool.description,
8
+ inputSchema: tool.inputSchema,
9
+ }, async (input) => {
10
+ const payload = input;
11
+ const missingRequiredFields = tool.operationContract
12
+ ? tool.operationContract.requiredFields.filter((field) => {
13
+ const value = payload[field];
14
+ if (typeof value === "string") {
15
+ return value.trim().length === 0;
16
+ }
17
+ return value === undefined || value === null;
18
+ })
19
+ : [];
20
+ if (missingRequiredFields.length > 0) {
21
+ return toCapabilityPreflightError({
22
+ client,
23
+ domain: tool.domain,
24
+ capability: tool.capabilityId,
25
+ operation: tool.operation,
26
+ payload,
27
+ contract: tool.contract ?? null,
28
+ operationContract: tool.operationContract ?? null,
29
+ missingRequiredFields,
30
+ });
31
+ }
32
+ try {
33
+ const result = tool.operation === "recommend"
34
+ ? await client.recommendCapabilityRoute(tool.domain, tool.capabilityId, payload)
35
+ : await client.executeCapability(tool.domain, tool.capabilityId, payload);
36
+ return toToolSuccess(result);
37
+ }
38
+ catch (error) {
39
+ return toCapabilityToolError(error, {
40
+ client,
41
+ domain: tool.domain,
42
+ capability: tool.capabilityId,
43
+ operation: tool.operation,
44
+ payload,
45
+ contract: tool.contract ?? null,
46
+ operationContract: tool.operationContract ?? null,
47
+ });
48
+ }
49
+ });
50
+ }
51
+ //# sourceMappingURL=generated-capability-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generated-capability-tool.js","sourceRoot":"","sources":["../../../src/mcp/tools/generated-capability-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACrB,aAAa,GACd,MAAM,YAAY,CAAC;AAEpB,MAAM,UAAU,+BAA+B,CAC7C,MAAiB,EACjB,MAAwB,EACxB,IAA8B;IAE9B,MAAM,CAAC,YAAY,CACjB,IAAI,CAAC,IAAI,EACT;QACE,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;KAC9B,EACD,KAAK,EAAE,KAAK,EAAE,EAAE;QACd,MAAM,OAAO,GAAG,KAAgC,CAAC;QACjD,MAAM,qBAAqB,GAAG,IAAI,CAAC,iBAAiB;YAClD,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;gBACrD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;gBAE7B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBAC9B,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC;gBACnC,CAAC;gBAED,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;YAC/C,CAAC,CAAC;YACJ,CAAC,CAAC,EAAE,CAAC;QAEP,IAAI,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrC,OAAO,0BAA0B,CAAC;gBAChC,MAAM;gBACN,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,UAAU,EAAE,IAAI,CAAC,YAAY;gBAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,OAAO;gBACP,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI;gBAC/B,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,IAAI,IAAI;gBACjD,qBAAqB;aACtB,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GACV,IAAI,CAAC,SAAS,KAAK,WAAW;gBAC5B,CAAC,CAAC,MAAM,MAAM,CAAC,wBAAwB,CACnC,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,YAAY,EACjB,OAAO,CACR;gBACH,CAAC,CAAC,MAAM,MAAM,CAAC,iBAAiB,CAC5B,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,YAAY,EACjB,OAAO,CACR,CAAC;YAER,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,qBAAqB,CAAC,KAAK,EAAE;gBAClC,MAAM;gBACN,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,UAAU,EAAE,IAAI,CAAC,YAAY;gBAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,OAAO;gBACP,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI;gBAC/B,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,IAAI,IAAI;aAClD,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { AgenticApiClient } from "../../agentic-api/client.js";
3
+ export declare function registerGetCapabilityContractTool(server: McpServer, client: AgenticApiClient): void;
@@ -0,0 +1,20 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { AgenticApiClient } from "../../agentic-api/client.js";
3
+ import { GET_CAPABILITY_CONTRACT_INPUT_SCHEMA } from "./schemas.js";
4
+ import { toToolError, toToolSuccess } from "./utils.js";
5
+ export function registerGetCapabilityContractTool(server, client) {
6
+ server.registerTool("get_capability_contract", {
7
+ title: "Get capability contract",
8
+ description: "Fetch the upstream capability contract, including required fields, optional fields, and generated request examples for recommend and execute.",
9
+ inputSchema: GET_CAPABILITY_CONTRACT_INPUT_SCHEMA,
10
+ }, async ({ domain, capabilityId }) => {
11
+ try {
12
+ const contract = await client.getCapabilityContract(domain, capabilityId);
13
+ return toToolSuccess(contract);
14
+ }
15
+ catch (error) {
16
+ return toToolError(error);
17
+ }
18
+ });
19
+ }
20
+ //# sourceMappingURL=get-capability-contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-capability-contract.js","sourceRoot":"","sources":["../../../src/mcp/tools/get-capability-contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,oCAAoC,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,UAAU,iCAAiC,CAC/C,MAAiB,EACjB,MAAwB;IAExB,MAAM,CAAC,YAAY,CACjB,yBAAyB,EACzB;QACE,KAAK,EAAE,yBAAyB;QAChC,WAAW,EACT,+IAA+I;QACjJ,WAAW,EAAE,oCAAoC;KAClD,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE;QACjC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YAE1E,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import type { ToolCatalogLoader } from "../tool-catalog.js";
3
+ export declare function registerListCapabilityToolsTool(server: McpServer, getToolCatalog: ToolCatalogLoader): void;
@@ -0,0 +1,36 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { LIST_CAPABILITY_TOOLS_INPUT_SCHEMA } from "./schemas.js";
3
+ import { toToolError, toToolSuccess } from "./utils.js";
4
+ export function registerListCapabilityToolsTool(server, getToolCatalog) {
5
+ server.registerTool("list_capability_tools", {
6
+ title: "List capability tools",
7
+ description: "List explicit MCP tools for one domain or one capability without browsing the full server catalog.",
8
+ inputSchema: LIST_CAPABILITY_TOOLS_INPUT_SCHEMA,
9
+ }, async ({ domain, capabilityId }) => {
10
+ try {
11
+ const toolCatalog = await getToolCatalog();
12
+ const tools = toolCatalog.tools
13
+ .filter((tool) => (domain ? tool.domain === domain : true))
14
+ .filter((tool) => capabilityId ? tool.capabilityId === capabilityId : true)
15
+ .map((tool) => ({
16
+ name: tool.name,
17
+ title: tool.title,
18
+ description: tool.description,
19
+ domainKey: tool.domain,
20
+ capabilityId: tool.capabilityId,
21
+ capabilityKey: tool.capabilityKey,
22
+ operation: tool.operation,
23
+ docsUrl: tool.docsUrl,
24
+ }));
25
+ return toToolSuccess({
26
+ source: toolCatalog.source,
27
+ fallbackReason: toolCatalog.fallbackReason,
28
+ tools,
29
+ });
30
+ }
31
+ catch (error) {
32
+ return toToolError(error);
33
+ }
34
+ });
35
+ }
36
+ //# sourceMappingURL=list-capability-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-capability-tools.js","sourceRoot":"","sources":["../../../src/mcp/tools/list-capability-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,kCAAkC,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGxD,MAAM,UAAU,+BAA+B,CAC7C,MAAiB,EACjB,cAAiC;IAEjC,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EACT,oGAAoG;QACtG,WAAW,EAAE,kCAAkC;KAChD,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE;QACjC,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,cAAc,EAAE,CAAC;YAC3C,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK;iBAC5B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;iBAC1D,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CACf,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CACzD;iBACA,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACd,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,SAAS,EAAE,IAAI,CAAC,MAAM;gBACtB,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAC,CAAC;YAEN,OAAO,aAAa,CAAC;gBACnB,MAAM,EAAE,WAAW,CAAC,MAAM;gBAC1B,cAAc,EAAE,WAAW,CAAC,cAAc;gBAC1C,KAAK;aACN,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { AgenticApiClient } from "../../agentic-api/client.js";
3
+ export declare function registerListDomainsTool(server: McpServer, client: AgenticApiClient): void;
@@ -0,0 +1,24 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { AgenticApiClient } from "../../agentic-api/client.js";
3
+ import { discoverDomains } from "../../catalog/discovery.js";
4
+ import { toToolError, toToolSuccess } from "./utils.js";
5
+ export function registerListDomainsTool(server, client) {
6
+ server.registerTool("list_domains", {
7
+ title: "List domains",
8
+ description: "List supported AgentDiscuss domains exposed through AgentDiscuss MCP.",
9
+ inputSchema: {},
10
+ }, async () => {
11
+ try {
12
+ const result = await discoverDomains(client);
13
+ return toToolSuccess({
14
+ source: result.source,
15
+ fallbackReason: result.fallbackReason,
16
+ domains: result.items,
17
+ });
18
+ }
19
+ catch (error) {
20
+ return toToolError(error);
21
+ }
22
+ });
23
+ }
24
+ //# sourceMappingURL=list-domains.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-domains.js","sourceRoot":"","sources":["../../../src/mcp/tools/list-domains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,UAAU,uBAAuB,CACrC,MAAiB,EACjB,MAAwB;IAExB,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,KAAK,EAAE,cAAc;QACrB,WAAW,EACT,uEAAuE;QACzE,WAAW,EAAE,EAAE;KAChB,EACD,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,CAAC;YAE7C,OAAO,aAAa,CAAC;gBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,OAAO,EAAE,MAAM,CAAC,KAAK;aACtB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { AgenticApiClient } from "../../agentic-api/client.js";
3
+ export declare function registerRecommendCapabilityRouteTool(server: McpServer, client: AgenticApiClient): void;
@@ -0,0 +1,50 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { AgenticApiClient } from "../../agentic-api/client.js";
3
+ import { RECOMMEND_CAPABILITY_ROUTE_INPUT_SCHEMA, RECOMMEND_INPUT_EXAMPLES, } from "./schemas.js";
4
+ import { loadCapabilityOperationContext, toCapabilityPreflightError, toCapabilityToolError, toToolSuccess, } from "./utils.js";
5
+ export function registerRecommendCapabilityRouteTool(server, client) {
6
+ server.registerTool("recommend_capability_route", {
7
+ title: "Recommend capability route",
8
+ description: `Fallback generic tool that proxies a recommend request to /domains/{domain}/capabilities/{capabilityId}/recommend.\n\nUse explicit capability tools first when they are available. In inspector form mode:\n- put "email" in the domain field\n- put "send" in the capabilityId field\n- put only the inner upstream body in input\n- do not nest { "domain": ..., "capabilityId": ..., "input": ... } inside input\n\nFull tool-call example:\n${JSON.stringify(RECOMMEND_INPUT_EXAMPLES[0], null, 2)}`,
9
+ inputSchema: RECOMMEND_CAPABILITY_ROUTE_INPUT_SCHEMA,
10
+ }, async ({ domain, capabilityId, input }) => {
11
+ const contractContext = await loadCapabilityOperationContext(client, domain, capabilityId, "recommend");
12
+ const missingRequiredFields = contractContext.operationContract
13
+ ? contractContext.operationContract.requiredFields.filter((field) => {
14
+ const value = input[field];
15
+ if (typeof value === "string") {
16
+ return value.trim().length === 0;
17
+ }
18
+ return value === undefined || value === null;
19
+ })
20
+ : [];
21
+ if (missingRequiredFields.length > 0) {
22
+ return toCapabilityPreflightError({
23
+ client,
24
+ domain,
25
+ capability: capabilityId,
26
+ operation: "recommend",
27
+ payload: input,
28
+ contract: contractContext.contract,
29
+ operationContract: contractContext.operationContract,
30
+ missingRequiredFields,
31
+ });
32
+ }
33
+ try {
34
+ const result = await client.recommendCapabilityRoute(domain, capabilityId, input);
35
+ return toToolSuccess(result);
36
+ }
37
+ catch (error) {
38
+ return toCapabilityToolError(error, {
39
+ client,
40
+ domain,
41
+ capability: capabilityId,
42
+ operation: "recommend",
43
+ payload: input,
44
+ contract: contractContext.contract,
45
+ operationContract: contractContext.operationContract,
46
+ });
47
+ }
48
+ });
49
+ }
50
+ //# sourceMappingURL=recommend-capability-route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recommend-capability-route.js","sourceRoot":"","sources":["../../../src/mcp/tools/recommend-capability-route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EACL,uCAAuC,EACvC,wBAAwB,GACzB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,8BAA8B,EAC9B,0BAA0B,EAC1B,qBAAqB,EACrB,aAAa,GACd,MAAM,YAAY,CAAC;AAEpB,MAAM,UAAU,oCAAoC,CAClD,MAAiB,EACjB,MAAwB;IAExB,MAAM,CAAC,YAAY,CACjB,4BAA4B,EAC5B;QACE,KAAK,EAAE,4BAA4B;QACnC,WAAW,EACT,mbAAmb,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;QAC3e,WAAW,EAAE,uCAAuC;KACrD,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,EAAE;QACxC,MAAM,eAAe,GAAG,MAAM,8BAA8B,CAC1D,MAAM,EACN,MAAM,EACN,YAAY,EACZ,WAAW,CACZ,CAAC;QACF,MAAM,qBAAqB,GAAG,eAAe,CAAC,iBAAiB;YAC7D,CAAC,CAAC,eAAe,CAAC,iBAAiB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;gBAChE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;gBAE3B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBAC9B,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC;gBACnC,CAAC;gBAED,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;YAC/C,CAAC,CAAC;YACJ,CAAC,CAAC,EAAE,CAAC;QAEP,IAAI,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrC,OAAO,0BAA0B,CAAC;gBAChC,MAAM;gBACN,MAAM;gBACN,UAAU,EAAE,YAAY;gBACxB,SAAS,EAAE,WAAW;gBACtB,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,eAAe,CAAC,QAAQ;gBAClC,iBAAiB,EAAE,eAAe,CAAC,iBAAiB;gBACpD,qBAAqB;aACtB,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAClD,MAAM,EACN,YAAY,EACZ,KAAK,CACN,CAAC;YAEF,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,qBAAqB,CAAC,KAAK,EAAE;gBAClC,MAAM;gBACN,MAAM;gBACN,UAAU,EAAE,YAAY;gBACxB,SAAS,EAAE,WAAW;gBACtB,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,eAAe,CAAC,QAAQ;gBAClC,iBAAiB,EAAE,eAAe,CAAC,iBAAiB;aACrD,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,56 @@
1
+ import { z } from "zod";
2
+ export declare const LIST_CAPABILITY_TOOLS_INPUT_SCHEMA: z.ZodObject<{
3
+ domain: z.ZodOptional<z.ZodString>;
4
+ capabilityId: z.ZodOptional<z.ZodString>;
5
+ }, z.core.$strip>;
6
+ export declare const GET_CAPABILITY_CONTRACT_INPUT_SCHEMA: z.ZodObject<{
7
+ domain: z.ZodString;
8
+ capabilityId: z.ZodString;
9
+ }, z.core.$strip>;
10
+ export declare const RECOMMEND_INPUT_EXAMPLES: readonly [{
11
+ readonly domain: "search";
12
+ readonly capabilityId: "answer";
13
+ readonly input: {
14
+ readonly query: "What changed in AI infrastructure this week?";
15
+ readonly optimizationPreferences: readonly ["quality", "speed"];
16
+ };
17
+ }, {
18
+ readonly domain: "email";
19
+ readonly capabilityId: "send";
20
+ readonly input: {
21
+ readonly agentName: "alpha_agent";
22
+ readonly optimizationPreferences: readonly ["cost", "quality"];
23
+ readonly sender: {
24
+ readonly mode: "platform_managed";
25
+ readonly replyTo: "ops@example.com";
26
+ };
27
+ };
28
+ }];
29
+ export declare const EXECUTE_INPUT_EXAMPLES: readonly [{
30
+ readonly domain: "web";
31
+ readonly capabilityId: "extract";
32
+ readonly input: {
33
+ readonly url: "https://example.com/docs";
34
+ readonly fields: readonly ["title", "pricing", "authentication"];
35
+ };
36
+ }, {
37
+ readonly domain: "email";
38
+ readonly capabilityId: "send";
39
+ readonly input: {
40
+ readonly to: "maya@example.com";
41
+ readonly subject: "Hello from AgentDiscuss";
42
+ readonly html: "<p>Hello</p>";
43
+ readonly provider: "resend";
44
+ readonly allowFallback: true;
45
+ };
46
+ }];
47
+ export declare const RECOMMEND_CAPABILITY_ROUTE_INPUT_SCHEMA: z.ZodObject<{
48
+ domain: z.ZodString;
49
+ capabilityId: z.ZodString;
50
+ input: z.ZodObject<{}, z.core.$catchall<z.ZodUnknown>>;
51
+ }, z.core.$strip>;
52
+ export declare const EXECUTE_CAPABILITY_INPUT_SCHEMA: z.ZodObject<{
53
+ domain: z.ZodString;
54
+ capabilityId: z.ZodString;
55
+ input: z.ZodObject<{}, z.core.$catchall<z.ZodUnknown>>;
56
+ }, z.core.$strip>;
@@ -0,0 +1,141 @@
1
+ import { z } from "zod";
2
+ export const LIST_CAPABILITY_TOOLS_INPUT_SCHEMA = z.object({
3
+ domain: z
4
+ .string()
5
+ .trim()
6
+ .min(1)
7
+ .optional()
8
+ .describe("Optional domain identifier such as search, email, web, enrichment, travel, or speech.")
9
+ .meta({
10
+ examples: ["search", "email", "web"],
11
+ }),
12
+ capabilityId: z
13
+ .string()
14
+ .trim()
15
+ .min(1)
16
+ .optional()
17
+ .describe("Optional capability identifier inside the selected domain, such as send, answer, people-search, or profile-lookup.")
18
+ .meta({
19
+ examples: ["send", "answer", "people-search"],
20
+ }),
21
+ });
22
+ export const GET_CAPABILITY_CONTRACT_INPUT_SCHEMA = z.object({
23
+ domain: z
24
+ .string()
25
+ .trim()
26
+ .min(1)
27
+ .describe("Domain identifier such as email, search, web, enrichment, or social.")
28
+ .meta({
29
+ examples: ["email", "search", "enrichment"],
30
+ }),
31
+ capabilityId: z
32
+ .string()
33
+ .trim()
34
+ .min(1)
35
+ .describe("Capability identifier inside the selected domain, such as send, answer, people-search, or profile-lookup.")
36
+ .meta({
37
+ examples: ["send", "answer", "people-search"],
38
+ }),
39
+ });
40
+ export const RECOMMEND_INPUT_EXAMPLES = [
41
+ {
42
+ domain: "search",
43
+ capabilityId: "answer",
44
+ input: {
45
+ query: "What changed in AI infrastructure this week?",
46
+ optimizationPreferences: ["quality", "speed"],
47
+ },
48
+ },
49
+ {
50
+ domain: "email",
51
+ capabilityId: "send",
52
+ input: {
53
+ agentName: "alpha_agent",
54
+ optimizationPreferences: ["cost", "quality"],
55
+ sender: {
56
+ mode: "platform_managed",
57
+ replyTo: "ops@example.com",
58
+ },
59
+ },
60
+ },
61
+ ];
62
+ export const EXECUTE_INPUT_EXAMPLES = [
63
+ {
64
+ domain: "web",
65
+ capabilityId: "extract",
66
+ input: {
67
+ url: "https://example.com/docs",
68
+ fields: ["title", "pricing", "authentication"],
69
+ },
70
+ },
71
+ {
72
+ domain: "email",
73
+ capabilityId: "send",
74
+ input: {
75
+ to: "maya@example.com",
76
+ subject: "Hello from AgentDiscuss",
77
+ html: "<p>Hello</p>",
78
+ provider: "resend",
79
+ allowFallback: true,
80
+ },
81
+ },
82
+ ];
83
+ export const RECOMMEND_CAPABILITY_ROUTE_INPUT_SCHEMA = z
84
+ .object({
85
+ domain: z
86
+ .string()
87
+ .trim()
88
+ .min(1)
89
+ .describe("Domain identifier such as search, email, web, enrichment, travel, or speech.")
90
+ .meta({
91
+ examples: ["search", "email"],
92
+ }),
93
+ capabilityId: z
94
+ .string()
95
+ .trim()
96
+ .min(1)
97
+ .describe("Capability identifier inside the selected domain, such as answer, send, scrape, or transcribe.")
98
+ .meta({
99
+ examples: ["answer", "send", "extract"],
100
+ }),
101
+ input: z
102
+ .object({})
103
+ .catchall(z.unknown())
104
+ .describe("Only the inner upstream request body. Do not repeat domain, capabilityId, or input inside this object.")
105
+ .meta({
106
+ examples: RECOMMEND_INPUT_EXAMPLES.map((example) => example.input),
107
+ }),
108
+ })
109
+ .meta({
110
+ examples: RECOMMEND_INPUT_EXAMPLES,
111
+ });
112
+ export const EXECUTE_CAPABILITY_INPUT_SCHEMA = z
113
+ .object({
114
+ domain: z
115
+ .string()
116
+ .trim()
117
+ .min(1)
118
+ .describe("Domain identifier such as search, email, web, enrichment, travel, or speech.")
119
+ .meta({
120
+ examples: ["search", "web"],
121
+ }),
122
+ capabilityId: z
123
+ .string()
124
+ .trim()
125
+ .min(1)
126
+ .describe("Capability identifier inside the selected domain, such as answer, send, extract, or transcribe.")
127
+ .meta({
128
+ examples: ["answer", "extract", "send"],
129
+ }),
130
+ input: z
131
+ .object({})
132
+ .catchall(z.unknown())
133
+ .describe("Only the inner upstream request body. Do not repeat domain, capabilityId, or input inside this object.")
134
+ .meta({
135
+ examples: EXECUTE_INPUT_EXAMPLES.map((example) => example.input),
136
+ }),
137
+ })
138
+ .meta({
139
+ examples: EXECUTE_INPUT_EXAMPLES,
140
+ });
141
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/mcp/tools/schemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import { AgenticApiClient } from "../../agentic-api/client.js";
2
+ import type { CapabilityContract, CapabilityOperationContract } from "../../agentic-api/types.js";
3
+ type ToolPayload = Record<string, unknown>;
4
+ type SerializedToolError = {
5
+ error: string;
6
+ code?: string;
7
+ hint?: string;
8
+ status: number;
9
+ details?: unknown;
10
+ upstream?: boolean;
11
+ };
12
+ type CapabilityToolContext = {
13
+ client: AgenticApiClient;
14
+ domain: string;
15
+ capability: string;
16
+ operation: "recommend" | "execute";
17
+ payload?: Record<string, unknown>;
18
+ contract?: CapabilityContract | null;
19
+ operationContract?: CapabilityOperationContract | null;
20
+ };
21
+ export declare function toToolSuccess<T extends ToolPayload>(payload: T): {
22
+ content: {
23
+ type: "text";
24
+ text: string;
25
+ }[];
26
+ structuredContent: T;
27
+ };
28
+ export declare function toToolError(error: unknown): {
29
+ content: {
30
+ type: "text";
31
+ text: string;
32
+ }[];
33
+ structuredContent: SerializedToolError;
34
+ isError: boolean;
35
+ };
36
+ export declare function toCapabilityToolError(error: unknown, context: CapabilityToolContext): Promise<{
37
+ content: {
38
+ type: "text";
39
+ text: string;
40
+ }[];
41
+ structuredContent: ToolPayload;
42
+ isError: boolean;
43
+ }>;
44
+ export declare function loadCapabilityOperationContext(client: AgenticApiClient, domain: string, capability: string, operation: CapabilityToolContext["operation"]): Promise<{
45
+ contract: CapabilityContract | null;
46
+ operationContract: CapabilityOperationContract | null;
47
+ }>;
48
+ export declare function toCapabilityPreflightError(context: CapabilityToolContext & {
49
+ missingRequiredFields: string[];
50
+ }): {
51
+ content: {
52
+ type: "text";
53
+ text: string;
54
+ }[];
55
+ structuredContent: ToolPayload;
56
+ isError: boolean;
57
+ };
58
+ export {};