@inkeep/agents-manage-api 0.35.3 → 0.35.5

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 (2) hide show
  1. package/dist/index.js +646 -142
  2. package/package.json +3 -2
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { F, u, R, x, T, h, U, L, or, C, Vr, ce, ur, P } from './chunk-SBJLXGYG.js';
2
- import { loadEnvironmentFiles, getLogger, createDatabaseClient, commonGetErrorResponses, AgentListResponse, PaginationQueryParamsSchema, TenantProjectParamsSchema, listAgents, AgentResponse, TenantProjectIdParamsSchema, getAgentById, createApiError, RelatedAgentInfoListResponse, TenantProjectAgentSubAgentParamsSchema, getAgentSubAgentInfos, AgentWithinContextOfProjectResponse, TenantProjectAgentParamsSchema, getFullAgentDefinition, AgentApiInsertSchema, createAgent, generateId, AgentApiUpdateSchema, updateAgent, ErrorResponseSchema, deleteAgent, AgentWithinContextOfProjectSchema, createFullAgentServerSide, getFullAgent, updateFullAgentServerSide, deleteFullAgent, ApiKeyListResponse, listApiKeysPaginated, ApiKeyResponse, getApiKeyById, ApiKeyApiCreationResponseSchema, ApiKeyApiInsertSchema, generateApiKey, createApiKey, ApiKeyApiUpdateSchema, updateApiKey, deleteApiKey, ArtifactComponentListResponse, listArtifactComponentsPaginated, ArtifactComponentResponse, getArtifactComponentById, ArtifactComponentApiInsertSchema, validatePropsAsJsonSchema, createArtifactComponent, ArtifactComponentApiUpdateSchema, updateArtifactComponent, deleteArtifactComponent, ContextConfigListResponse, listContextConfigsPaginated, ContextConfigResponse, TenantProjectAgentIdParamsSchema, getContextConfigById, ContextConfigApiInsertSchema, createContextConfig, commonUpdateErrorResponses, ContextConfigApiUpdateSchema, updateContextConfig, commonDeleteErrorResponses, deleteContextConfig, CredentialStoreListResponseSchema, CreateCredentialInStoreResponseSchema, CreateCredentialInStoreRequestSchema, CredentialReferenceListResponse, listCredentialReferencesPaginated, ListResponseSchema, CredentialReferenceApiSelectSchema, CredentialReferenceResponse, getCredentialReferenceWithResources, CredentialReferenceApiInsertSchema, createCredentialReference, CredentialReferenceApiUpdateSchema, updateCredentialReference, getCredentialReferenceById, getCredentialStoreLookupKeyFromRetrievalParams, deleteCredentialReference, DataComponentListResponse, listDataComponentsPaginated, DataComponentResponse, getDataComponent, DataComponentApiInsertSchema, createDataComponent, DataComponentApiUpdateSchema, updateDataComponent, deleteDataComponent, ExternalAgentListResponse, listExternalAgentsPaginated, ExternalAgentResponse, getExternalAgent, ExternalAgentApiInsertSchema, createExternalAgent, ExternalAgentApiUpdateSchema, updateExternalAgent, deleteExternalAgent, FunctionListResponse, listFunctions, FunctionResponse, getFunction, FunctionApiInsertSchema, upsertFunction, FunctionApiUpdateSchema, deleteFunction, FunctionToolListResponse, listFunctionTools, FunctionToolResponse, getFunctionToolById, FunctionToolApiInsertSchema, createFunctionTool, FunctionToolApiUpdateSchema, updateFunctionTool, deleteFunctionTool, ProjectListResponse, TenantParamsSchema, listProjectsPaginated, ProjectResponse, TenantIdParamsSchema, getProject, ProjectApiInsertSchema, createProject, ProjectApiUpdateSchema, updateProject, deleteProject, ArtifactComponentArrayResponse, getArtifactComponentsForAgent, ComponentAssociationListResponse, getAgentsUsingArtifactComponent, SubAgentArtifactComponentResponse, SubAgentArtifactComponentApiInsertSchema, getSubAgentById, isArtifactComponentAssociatedWithAgent, associateArtifactComponentWithAgent, RemovedResponseSchema, removeArtifactComponentFromAgent, ExistsResponseSchema, DataComponentArrayResponse, getDataComponentsForAgent, getAgentsUsingDataComponent, SubAgentDataComponentResponse, SubAgentDataComponentApiInsertSchema, isDataComponentAssociatedWithAgent, associateDataComponentWithAgent, removeDataComponentFromAgent, SubAgentExternalAgentRelationListResponse, listSubAgentExternalAgentRelations, SubAgentExternalAgentRelationResponse, TenantProjectAgentSubAgentIdParamsSchema, getSubAgentExternalAgentRelationById, SubAgentExternalAgentRelationApiInsertSchema, createSubAgentExternalAgentRelation, SubAgentExternalAgentRelationApiUpdateSchema, updateSubAgentExternalAgentRelation, deleteSubAgentExternalAgentRelation, SubAgentRelationListResponse, SubAgentRelationQuerySchema, getAgentRelationsBySource, getSubAgentRelationsByTarget, listAgentRelations, SubAgentRelationResponse, getAgentRelationById, SubAgentRelationApiInsertSchema, validateSubAgent, createSubAgentRelation, SubAgentRelationApiUpdateSchema, updateAgentRelation, deleteSubAgentRelation, SubAgentListResponse, listSubAgentsPaginated, SubAgentResponse, SubAgentApiInsertSchema, createSubAgent, SubAgentApiUpdateSchema, updateSubAgent, deleteSubAgent, SubAgentTeamAgentRelationListResponse, listSubAgentTeamAgentRelations, SubAgentTeamAgentRelationResponse, getSubAgentTeamAgentRelationById, SubAgentTeamAgentRelationApiInsertSchema, createSubAgentTeamAgentRelation, SubAgentTeamAgentRelationApiUpdateSchema, updateSubAgentTeamAgentRelation, deleteSubAgentTeamAgentRelation, SubAgentToolRelationListResponse, getAgentToolRelationByAgent, getAgentToolRelationByTool, listAgentToolRelations, SubAgentToolRelationResponse, getAgentToolRelationById, getAgentsForTool, SubAgentToolRelationApiInsertSchema, createAgentToolRelation, SubAgentToolRelationApiUpdateSchema, updateAgentToolRelation, deleteAgentToolRelation, McpToolListResponse, ToolStatusSchema, listTools, dbResultToMcpTool, McpToolResponse, getToolById, ToolApiInsertSchema, createTool, ToolApiUpdateSchema, updateTool, deleteTool, getPendingInvitationsByEmail, OAuthLoginQuerySchema, OAuthCallbackQuerySchema, CredentialStoreType, FullProjectDefinitionResponse, FullProjectDefinitionSchema, createFullProjectServerSide, getFullProject, updateFullProjectServerSide, deleteFullProject, getUserOrganizations, addUserToOrganization, createDefaultCredentialStores, CredentialStoreRegistry, initiateMcpOAuthFlow, exchangeMcpAuthorizationCode, handleApiError, organization, getUserByEmail, member } from '@inkeep/agents-core';
2
+ import { loadEnvironmentFiles, getLogger, createDatabaseClient, commonGetErrorResponses, AgentListResponse, PaginationQueryParamsSchema, TenantProjectParamsSchema, listAgents, AgentResponse, TenantProjectIdParamsSchema, getAgentById, createApiError, RelatedAgentInfoListResponse, TenantProjectAgentSubAgentParamsSchema, getAgentSubAgentInfos, AgentWithinContextOfProjectResponse, TenantProjectAgentParamsSchema, getFullAgentDefinition, AgentApiInsertSchema, createAgent, generateId, AgentApiUpdateSchema, updateAgent, ErrorResponseSchema, deleteAgent, AgentWithinContextOfProjectSchema, createFullAgentServerSide, getFullAgent, updateFullAgentServerSide, deleteFullAgent, ApiKeyListResponse, listApiKeysPaginated, ApiKeyResponse, getApiKeyById, ApiKeyApiCreationResponseSchema, ApiKeyApiInsertSchema, generateApiKey, createApiKey, ApiKeyApiUpdateSchema, updateApiKey, deleteApiKey, ArtifactComponentListResponse, listArtifactComponentsPaginated, ArtifactComponentResponse, getArtifactComponentById, ArtifactComponentApiInsertSchema, validatePropsAsJsonSchema, createArtifactComponent, ArtifactComponentApiUpdateSchema, updateArtifactComponent, deleteArtifactComponent, ContextConfigListResponse, listContextConfigsPaginated, ContextConfigResponse, TenantProjectAgentIdParamsSchema, getContextConfigById, ContextConfigApiInsertSchema, createContextConfig, commonUpdateErrorResponses, ContextConfigApiUpdateSchema, updateContextConfig, commonDeleteErrorResponses, deleteContextConfig, CredentialStoreListResponseSchema, CreateCredentialInStoreResponseSchema, CreateCredentialInStoreRequestSchema, CredentialReferenceListResponse, listCredentialReferencesPaginated, ListResponseSchema, CredentialReferenceApiSelectSchema, CredentialReferenceResponse, getCredentialReferenceWithResources, CredentialReferenceApiInsertSchema, createCredentialReference, CredentialReferenceApiUpdateSchema, updateCredentialReference, getCredentialReferenceById, getCredentialStoreLookupKeyFromRetrievalParams, deleteCredentialReference, DataComponentListResponse, listDataComponentsPaginated, DataComponentResponse, getDataComponent, DataComponentApiInsertSchema, createDataComponent, DataComponentApiUpdateSchema, updateDataComponent, deleteDataComponent, ExternalAgentListResponse, listExternalAgentsPaginated, ExternalAgentResponse, getExternalAgent, ExternalAgentApiInsertSchema, createExternalAgent, ExternalAgentApiUpdateSchema, updateExternalAgent, deleteExternalAgent, FunctionListResponse, listFunctions, FunctionResponse, getFunction, FunctionApiInsertSchema, upsertFunction, FunctionApiUpdateSchema, deleteFunction, FunctionToolListResponse, listFunctionTools, FunctionToolResponse, getFunctionToolById, FunctionToolApiInsertSchema, createFunctionTool, FunctionToolApiUpdateSchema, updateFunctionTool, deleteFunctionTool, MCPCatalogListResponse, fetchComposioServers, MCPTransportType, ProjectListResponse, TenantParamsSchema, listProjectsPaginated, ProjectResponse, TenantIdParamsSchema, getProject, ProjectApiInsertSchema, createProject, ProjectApiUpdateSchema, updateProject, deleteProject, ArtifactComponentArrayResponse, getArtifactComponentsForAgent, ComponentAssociationListResponse, getAgentsUsingArtifactComponent, SubAgentArtifactComponentResponse, SubAgentArtifactComponentApiInsertSchema, getSubAgentById, isArtifactComponentAssociatedWithAgent, associateArtifactComponentWithAgent, RemovedResponseSchema, removeArtifactComponentFromAgent, ExistsResponseSchema, DataComponentArrayResponse, getDataComponentsForAgent, getAgentsUsingDataComponent, SubAgentDataComponentResponse, SubAgentDataComponentApiInsertSchema, isDataComponentAssociatedWithAgent, associateDataComponentWithAgent, removeDataComponentFromAgent, SubAgentExternalAgentRelationListResponse, listSubAgentExternalAgentRelations, SubAgentExternalAgentRelationResponse, TenantProjectAgentSubAgentIdParamsSchema, getSubAgentExternalAgentRelationById, SubAgentExternalAgentRelationApiInsertSchema, createSubAgentExternalAgentRelation, SubAgentExternalAgentRelationApiUpdateSchema, updateSubAgentExternalAgentRelation, deleteSubAgentExternalAgentRelation, SubAgentRelationListResponse, SubAgentRelationQuerySchema, getAgentRelationsBySource, getSubAgentRelationsByTarget, listAgentRelations, SubAgentRelationResponse, getAgentRelationById, SubAgentRelationApiInsertSchema, validateSubAgent, createSubAgentRelation, SubAgentRelationApiUpdateSchema, updateAgentRelation, deleteSubAgentRelation, SubAgentListResponse, listSubAgentsPaginated, SubAgentResponse, SubAgentApiInsertSchema, createSubAgent, SubAgentApiUpdateSchema, updateSubAgent, deleteSubAgent, SubAgentTeamAgentRelationListResponse, listSubAgentTeamAgentRelations, SubAgentTeamAgentRelationResponse, getSubAgentTeamAgentRelationById, SubAgentTeamAgentRelationApiInsertSchema, createSubAgentTeamAgentRelation, SubAgentTeamAgentRelationApiUpdateSchema, updateSubAgentTeamAgentRelation, deleteSubAgentTeamAgentRelation, SubAgentToolRelationListResponse, getAgentToolRelationByAgent, getAgentToolRelationByTool, listAgentToolRelations, SubAgentToolRelationResponse, getAgentToolRelationById, getAgentsForTool, SubAgentToolRelationApiInsertSchema, createAgentToolRelation, SubAgentToolRelationApiUpdateSchema, updateAgentToolRelation, deleteAgentToolRelation, ThirdPartyMCPServerResponse, fetchSingleComposioServer, McpToolListResponse, ToolStatusSchema, listTools, dbResultToMcpTool, McpToolResponse, getToolById, ToolApiInsertSchema, createTool, ToolApiUpdateSchema, updateTool, deleteTool, getPendingInvitationsByEmail, OAuthLoginQuerySchema, OAuthCallbackQuerySchema, CredentialStoreType, FullProjectDefinitionResponse, FullProjectDefinitionSchema, createFullProjectServerSide, getFullProject, updateFullProjectServerSide, deleteFullProject, getUserOrganizations, addUserToOrganization, createDefaultCredentialStores, CredentialStoreRegistry, initiateMcpOAuthFlow, exchangeMcpAuthorizationCode, handleApiError, organization, getUserByEmail, member } from '@inkeep/agents-core';
3
3
  import { createAuth } from '@inkeep/agents-core/auth';
4
4
  import { OpenAPIHono, createRoute, z as z$1 } from '@hono/zod-openapi';
5
5
  import { Hono } from 'hono';
@@ -5195,11 +5195,11 @@ var requireTenantAccess = () => createMiddleware(async (c, next) => {
5195
5195
  });
5196
5196
  }
5197
5197
  });
5198
- function setupOpenAPIRoutes(app25) {
5199
- app25.get("/openapi.json", (c) => {
5198
+ function setupOpenAPIRoutes(app27) {
5199
+ app27.get("/openapi.json", (c) => {
5200
5200
  try {
5201
5201
  const serverUrl = process.env.VERCEL_ENV === "production" && process.env.VERCEL_PROJECT_PRODUCTION_URL ? `https://${process.env.VERCEL_PROJECT_PRODUCTION_URL}` : process.env.VERCEL_ENV === "preview" && process.env.VERCEL_URL ? `https://${process.env.VERCEL_URL}` : env.INKEEP_AGENTS_MANAGE_API_URL;
5202
- const document2 = app25.getOpenAPIDocument({
5202
+ const document2 = app27.getOpenAPIDocument({
5203
5203
  openapi: "3.0.0",
5204
5204
  info: {
5205
5205
  title: "Inkeep Agents Manage API",
@@ -5314,7 +5314,7 @@ function setupOpenAPIRoutes(app25) {
5314
5314
  return c.json({ error: "Failed to generate OpenAPI document", details: errorDetails }, 500);
5315
5315
  }
5316
5316
  });
5317
- app25.get(
5317
+ app27.get(
5318
5318
  "/docs",
5319
5319
  swaggerUI({
5320
5320
  url: "/openapi.json",
@@ -8030,13 +8030,471 @@ app11.openapi(
8030
8030
  );
8031
8031
  var functionTools_default = app11;
8032
8032
  var app12 = new OpenAPIHono();
8033
- app12.use("/", async (c, next) => {
8033
+ var PREBUILT_MCP_SERVERS = [
8034
+ {
8035
+ id: "apify",
8036
+ name: "Apify",
8037
+ url: "https://mcp.apify.com",
8038
+ transport: MCPTransportType.streamableHttp,
8039
+ imageUrl: "https://apify.com/img/apify-logo/logomark-32x32.svg",
8040
+ category: "automation",
8041
+ description: "Web scraping and automation platform"
8042
+ },
8043
+ {
8044
+ id: "asana",
8045
+ name: "Asana",
8046
+ url: "https://mcp.asana.com/sse",
8047
+ transport: MCPTransportType.sse,
8048
+ category: "project_management",
8049
+ description: "Project management and team collaboration"
8050
+ },
8051
+ {
8052
+ id: "atlassian",
8053
+ name: "Atlassian",
8054
+ url: "https://mcp.atlassian.com/v1/sse",
8055
+ transport: MCPTransportType.sse,
8056
+ category: "project_management",
8057
+ description: "Jira, Confluence, and other Atlassian products"
8058
+ },
8059
+ {
8060
+ id: "buildkite",
8061
+ name: "Buildkite",
8062
+ url: "https://mcp.buildkite.com/mcp",
8063
+ transport: MCPTransportType.streamableHttp,
8064
+ imageUrl: "https://buildkite.com/_astro/buildkite-mark.D56ywXpU.svg",
8065
+ category: "ci_cd",
8066
+ description: "Continuous integration and deployment"
8067
+ },
8068
+ {
8069
+ id: "canva",
8070
+ name: "Canva",
8071
+ url: "https://mcp.canva.com/mcp",
8072
+ transport: MCPTransportType.streamableHttp,
8073
+ category: "design",
8074
+ description: "Graphic design and visual content creation"
8075
+ },
8076
+ {
8077
+ id: "carbon-voice",
8078
+ name: "Carbon Voice",
8079
+ url: "https://mcp.carbonvoice.app",
8080
+ transport: MCPTransportType.streamableHttp,
8081
+ imageUrl: "https://static.wixstatic.com/shapes/e97c23_633874d233a944aea7b424ae16e9efec.svg",
8082
+ category: "communication",
8083
+ description: "Voice and audio communication"
8084
+ },
8085
+ {
8086
+ id: "close",
8087
+ name: "Close (CRM)",
8088
+ url: "https://mcp.close.com/mcp",
8089
+ transport: MCPTransportType.streamableHttp,
8090
+ imageUrl: "https://cdn.prod.website-files.com/61717799a852418a278cfa9b/68793d8479790aec5ed95512_close-logo-color-atom.svg",
8091
+ category: "crm",
8092
+ description: "Customer relationship management"
8093
+ },
8094
+ {
8095
+ id: "cloudflare-docs",
8096
+ name: "Cloudflare Docs",
8097
+ url: "https://docs.mcp.cloudflare.com/sse",
8098
+ transport: MCPTransportType.sse,
8099
+ isOpen: true,
8100
+ imageUrl: "https://www.cloudflare.com/favicon.ico",
8101
+ category: "documentation",
8102
+ description: "Cloudflare documentation search"
8103
+ },
8104
+ {
8105
+ id: "cloudflare-observability",
8106
+ name: "Cloudflare Observability",
8107
+ url: "https://observability.mcp.cloudflare.com/sse",
8108
+ transport: MCPTransportType.sse,
8109
+ imageUrl: "https://www.cloudflare.com/favicon.ico",
8110
+ category: "monitoring",
8111
+ description: "Cloudflare observability and monitoring"
8112
+ },
8113
+ {
8114
+ id: "cloudflare-workers",
8115
+ name: "Cloudflare Workers Bindings",
8116
+ url: "https://bindings.mcp.cloudflare.com/sse",
8117
+ transport: MCPTransportType.sse,
8118
+ imageUrl: "https://www.cloudflare.com/favicon.ico",
8119
+ category: "infrastructure",
8120
+ description: "Cloudflare Workers and serverless functions"
8121
+ },
8122
+ {
8123
+ id: "cloudinary",
8124
+ name: "Cloudinary (Asset Management)",
8125
+ url: "https://asset-management.mcp.cloudinary.com/sse",
8126
+ transport: MCPTransportType.sse,
8127
+ imageUrl: "https://cloudinary.com/wp-content/uploads/sites/6/2020/09/favicon-32x32-1.png",
8128
+ category: "media",
8129
+ description: "Digital asset management and media optimization"
8130
+ },
8131
+ {
8132
+ id: "deepwiki",
8133
+ name: "DeepWiki",
8134
+ url: "https://mcp.deepwiki.com/mcp",
8135
+ transport: MCPTransportType.streamableHttp,
8136
+ imageUrl: "https://deepwiki.org/apple-icon.png?a4f658907db0ab87",
8137
+ isOpen: true,
8138
+ category: "knowledge",
8139
+ description: "Knowledge base and documentation search"
8140
+ },
8141
+ {
8142
+ id: "dodo-payments",
8143
+ name: "Dodo Payments",
8144
+ url: "https://mcp.dodopayments.com/sse",
8145
+ transport: MCPTransportType.sse,
8146
+ imageUrl: "https://docs.dodopayments.com/mintlify-assets/_mintlify/favicons/dodopayments/O4gqzjfBTOvqqqpw/_generated/favicon/favicon-32x32.png",
8147
+ category: "payments",
8148
+ description: "Payment processing and billing"
8149
+ },
8150
+ {
8151
+ id: "egnyte",
8152
+ name: "Egnyte",
8153
+ url: "https://mcp-server.egnyte.com/sse",
8154
+ transport: MCPTransportType.sse,
8155
+ category: "storage",
8156
+ description: "Enterprise file sharing and collaboration"
8157
+ },
8158
+ {
8159
+ id: "fireflies",
8160
+ name: "Fireflies",
8161
+ url: "https://api.fireflies.ai/mcp",
8162
+ transport: MCPTransportType.streamableHttp,
8163
+ category: "communication",
8164
+ description: "Meeting notes and transcription"
8165
+ },
8166
+ {
8167
+ id: "globalping",
8168
+ name: "Globalping",
8169
+ url: "https://mcp.globalping.dev/mcp",
8170
+ transport: MCPTransportType.streamableHttp,
8171
+ imageUrl: "https://globalping.io/icons/favicon-32x32.png",
8172
+ category: "monitoring",
8173
+ description: "Global network monitoring and testing"
8174
+ },
8175
+ {
8176
+ id: "huggingface",
8177
+ name: "Hugging Face",
8178
+ url: "https://huggingface.co/mcp?login",
8179
+ transport: MCPTransportType.streamableHttp,
8180
+ imageUrl: "https://huggingface.co/front/assets/huggingface_logo-noborder.svg",
8181
+ category: "ai",
8182
+ description: "Machine learning models and datasets"
8183
+ },
8184
+ {
8185
+ id: "instant",
8186
+ name: "Instant (InstantDB)",
8187
+ url: "https://mcp.instantdb.com/mcp",
8188
+ transport: MCPTransportType.streamableHttp,
8189
+ imageUrl: "https://www.instantdb.com/img/icon/logo-512.svg",
8190
+ category: "database",
8191
+ description: "Real-time database"
8192
+ },
8193
+ {
8194
+ id: "intercom",
8195
+ name: "Intercom",
8196
+ url: "https://mcp.intercom.com/mcp",
8197
+ transport: MCPTransportType.streamableHttp,
8198
+ category: "communication",
8199
+ description: "Customer messaging and support"
8200
+ },
8201
+ {
8202
+ id: "invideo",
8203
+ name: "Invideo",
8204
+ url: "https://mcp.invideo.io/sse",
8205
+ transport: MCPTransportType.sse,
8206
+ isOpen: true,
8207
+ imageUrl: "https://web-assets.invideo.io/favicons/prod/black_favicon.ico",
8208
+ category: "media",
8209
+ description: "Video creation and editing"
8210
+ },
8211
+ {
8212
+ id: "jam-dev",
8213
+ name: "Jam.dev",
8214
+ url: "https://mcp.jam.dev/mcp",
8215
+ transport: MCPTransportType.streamableHttp,
8216
+ imageUrl: "https://jam.dev/favicon.ico?cache-bust=2",
8217
+ category: "development",
8218
+ description: "Bug reporting and debugging"
8219
+ },
8220
+ {
8221
+ id: "linear",
8222
+ name: "Linear",
8223
+ url: "https://mcp.linear.app/mcp",
8224
+ transport: MCPTransportType.streamableHttp,
8225
+ category: "project_management",
8226
+ description: "Issue tracking and project management"
8227
+ },
8228
+ {
8229
+ id: "monday",
8230
+ name: "Monday",
8231
+ url: "https://mcp.monday.com/sse",
8232
+ transport: MCPTransportType.sse,
8233
+ category: "project_management",
8234
+ description: "Work operating system and project management"
8235
+ },
8236
+ {
8237
+ id: "needle",
8238
+ name: "Needle",
8239
+ url: "https://mcp.needle-ai.com/mcp",
8240
+ transport: MCPTransportType.streamableHttp,
8241
+ imageUrl: "https://needle.app/images/favicon.png",
8242
+ category: "ai",
8243
+ description: "AI-powered search and insights"
8244
+ },
8245
+ {
8246
+ id: "neon",
8247
+ name: "Neon",
8248
+ url: "https://mcp.neon.tech/mcp",
8249
+ transport: MCPTransportType.streamableHttp,
8250
+ imageUrl: "https://neon.com/favicon/favicon.png",
8251
+ category: "database",
8252
+ description: "Serverless Postgres database"
8253
+ },
8254
+ {
8255
+ id: "netlify",
8256
+ name: "Netlify",
8257
+ url: "https://netlify-mcp.netlify.app/mcp",
8258
+ transport: MCPTransportType.streamableHttp,
8259
+ imageUrl: "https://www.netlify.com/favicon/apple-touch-icon.png",
8260
+ category: "infrastructure",
8261
+ description: "Web hosting and deployment"
8262
+ },
8263
+ {
8264
+ id: "notion",
8265
+ name: "Notion",
8266
+ url: "https://mcp.notion.com/mcp",
8267
+ transport: MCPTransportType.streamableHttp,
8268
+ category: "knowledge",
8269
+ description: "Notes, docs, and knowledge management"
8270
+ },
8271
+ {
8272
+ id: "octagon-agents",
8273
+ name: "Octagon Agents (Market Intel)",
8274
+ url: "https://mcp.octagonagents.com/mcp",
8275
+ transport: MCPTransportType.streamableHttp,
8276
+ imageUrl: "https://cdn.prod.website-files.com/67e20964923f8dc825a5dbd0/67e20964923f8dc825a5dc20_favico.png",
8277
+ category: "analytics",
8278
+ description: "Market intelligence and analytics"
8279
+ },
8280
+ {
8281
+ id: "paypal",
8282
+ name: "PayPal",
8283
+ url: "https://mcp.paypal.com",
8284
+ transport: MCPTransportType.streamableHttp,
8285
+ category: "payments",
8286
+ description: "Payment processing"
8287
+ },
8288
+ {
8289
+ id: "pipeboard-meta-ads",
8290
+ name: "Pipeboard \u2013 Meta Ads",
8291
+ url: "https://mcp.pipeboard.co/meta-ads-mcp",
8292
+ transport: MCPTransportType.streamableHttp,
8293
+ imageUrl: "https://pipeboard.co/favicon.ico",
8294
+ category: "marketing",
8295
+ description: "Meta (Facebook) advertising management"
8296
+ },
8297
+ {
8298
+ id: "prisma",
8299
+ name: "Prisma",
8300
+ url: "https://mcp.prisma.io/mcp",
8301
+ transport: MCPTransportType.streamableHttp,
8302
+ imageUrl: "https://www.prisma.io/docs/img/favicon.png",
8303
+ category: "database",
8304
+ description: "Database ORM and toolkit"
8305
+ },
8306
+ {
8307
+ id: "ramp",
8308
+ name: "Ramp",
8309
+ url: "https://mcp.ramp.com/mcp",
8310
+ transport: MCPTransportType.streamableHttp,
8311
+ category: "finance",
8312
+ description: "Corporate cards and spend management"
8313
+ },
8314
+ {
8315
+ id: "rube",
8316
+ name: "Rube",
8317
+ url: "https://rube.app/mcp",
8318
+ transport: MCPTransportType.streamableHttp,
8319
+ imageUrl: "https://rube.app/favicon.ico",
8320
+ category: "automation",
8321
+ description: "Workflow automation"
8322
+ },
8323
+ {
8324
+ id: "semgrep",
8325
+ name: "Semgrep",
8326
+ url: "https://mcp.semgrep.ai/mcp",
8327
+ transport: MCPTransportType.streamableHttp,
8328
+ imageUrl: "https://semgrep.dev/build/assets/favicon-CIx-xpG_.svg",
8329
+ isOpen: true,
8330
+ category: "security",
8331
+ description: "Code security and static analysis"
8332
+ },
8333
+ {
8334
+ id: "sentry",
8335
+ name: "Sentry",
8336
+ url: "https://mcp.sentry.dev",
8337
+ transport: MCPTransportType.streamableHttp,
8338
+ category: "monitoring",
8339
+ description: "Error tracking and performance monitoring"
8340
+ },
8341
+ {
8342
+ id: "simplescraper",
8343
+ name: "Simplescraper",
8344
+ url: "https://mcp.simplescraper.io/mcp",
8345
+ transport: MCPTransportType.streamableHttp,
8346
+ imageUrl: "https://simplescraper.io/favicon.ico",
8347
+ category: "automation",
8348
+ description: "Web scraping and data extraction"
8349
+ },
8350
+ {
8351
+ id: "square",
8352
+ name: "Square",
8353
+ url: "https://mcp.squareup.com/sse",
8354
+ transport: MCPTransportType.sse,
8355
+ imageUrl: "https://pw-renderer-production-c.squarecdn.com/c94e4b9deb6727292b842f0dc29355f408487bf2/_svelte/favicon.ico",
8356
+ category: "payments",
8357
+ description: "Point of sale and payment processing"
8358
+ },
8359
+ {
8360
+ id: "stripe",
8361
+ name: "Stripe",
8362
+ url: "https://mcp.stripe.com",
8363
+ transport: MCPTransportType.streamableHttp,
8364
+ category: "payments",
8365
+ description: "Payment processing and billing"
8366
+ },
8367
+ {
8368
+ id: "stytch",
8369
+ name: "Stytch",
8370
+ url: "https://mcp.stytch.dev/mcp",
8371
+ transport: MCPTransportType.streamableHttp,
8372
+ imageUrl: "https://stytch.com/favicon.ico",
8373
+ category: "authentication",
8374
+ description: "User authentication and identity"
8375
+ },
8376
+ {
8377
+ id: "supabase",
8378
+ name: "Supabase",
8379
+ url: "https://mcp.supabase.com/mcp",
8380
+ transport: MCPTransportType.streamableHttp,
8381
+ category: "database",
8382
+ description: "Open source Firebase alternative"
8383
+ },
8384
+ {
8385
+ id: "telnyx",
8386
+ name: "Telnyx",
8387
+ url: "https://api.telnyx.com/v2/mcp",
8388
+ transport: MCPTransportType.streamableHttp,
8389
+ imageUrl: "https://www.telnyx.com/favicon.ico",
8390
+ category: "communication",
8391
+ description: "Communications API platform"
8392
+ },
8393
+ {
8394
+ id: "thoughtspot",
8395
+ name: "ThoughtSpot",
8396
+ url: "https://agent.thoughtspot.app/mcp",
8397
+ transport: MCPTransportType.streamableHttp,
8398
+ imageUrl: "https://developers.thoughtspot.com/docs/icons/icon-48x48.png?v=3959c799205dc2ce6e1f1d93fd74d630",
8399
+ category: "analytics",
8400
+ description: "Analytics and business intelligence"
8401
+ },
8402
+ {
8403
+ id: "vercel",
8404
+ name: "Vercel",
8405
+ url: "https://mcp.vercel.com",
8406
+ transport: MCPTransportType.streamableHttp,
8407
+ category: "infrastructure",
8408
+ description: "Web hosting and deployment platform"
8409
+ },
8410
+ {
8411
+ id: "waystation",
8412
+ name: "WayStation",
8413
+ url: "https://waystation.ai/mcp",
8414
+ transport: MCPTransportType.streamableHttp,
8415
+ imageUrl: "https://waystation.ai/images/logo.svg",
8416
+ category: "ai",
8417
+ description: "AI infrastructure and deployment"
8418
+ },
8419
+ {
8420
+ id: "webflow",
8421
+ name: "Webflow",
8422
+ url: "https://mcp.webflow.com/sse",
8423
+ transport: MCPTransportType.sse,
8424
+ category: "design",
8425
+ description: "Website builder and CMS"
8426
+ },
8427
+ {
8428
+ id: "wix",
8429
+ name: "Wix",
8430
+ url: "https://mcp.wix.com/sse",
8431
+ transport: MCPTransportType.sse,
8432
+ imageUrl: "https://wix.com/favicon.ico",
8433
+ category: "design",
8434
+ description: "Website builder"
8435
+ },
8436
+ {
8437
+ id: "zapier",
8438
+ name: "Zapier",
8439
+ url: "https://mcp.zapier.com/api/mcp/mcp",
8440
+ transport: MCPTransportType.streamableHttp,
8441
+ category: "automation",
8442
+ description: "Workflow automation and integration"
8443
+ },
8444
+ {
8445
+ id: "zine",
8446
+ name: "Zine",
8447
+ url: "https://www.zine.ai/mcp",
8448
+ transport: MCPTransportType.streamableHttp,
8449
+ imageUrl: "https://www.zine.ai/_next/image?url=%2Fimages%2Fzine-logo.png&w=64&q=75",
8450
+ category: "ai",
8451
+ description: "AI-powered content creation"
8452
+ }
8453
+ ];
8454
+ app12.openapi(
8455
+ createRoute({
8456
+ method: "get",
8457
+ path: "/",
8458
+ summary: "List MCP Server Catalog",
8459
+ operationId: "list-mcp-catalog",
8460
+ tags: ["MCP Catalog"],
8461
+ description: "Get a list of available prebuilt MCP servers. If COMPOSIO_API_KEY is configured, also includes Composio servers for the tenant/project.",
8462
+ request: {
8463
+ params: TenantProjectParamsSchema
8464
+ },
8465
+ responses: {
8466
+ 200: {
8467
+ description: "List of available MCP servers",
8468
+ content: {
8469
+ "application/json": {
8470
+ schema: MCPCatalogListResponse
8471
+ }
8472
+ }
8473
+ },
8474
+ ...commonGetErrorResponses
8475
+ }
8476
+ }),
8477
+ async (c) => {
8478
+ const { tenantId, projectId } = c.req.valid("param");
8479
+ const composioServers = await fetchComposioServers(tenantId, projectId);
8480
+ const allServers = [...PREBUILT_MCP_SERVERS, ...composioServers].sort(
8481
+ (a, b2) => a.name.localeCompare(b2.name)
8482
+ );
8483
+ return c.json({
8484
+ data: allServers,
8485
+ total: allServers.length
8486
+ });
8487
+ }
8488
+ );
8489
+ var mcpCatalog_default = app12;
8490
+ var app13 = new OpenAPIHono();
8491
+ app13.use("/", async (c, next) => {
8034
8492
  if (c.req.method === "POST") {
8035
8493
  return requirePermission({ project: ["create"] })(c, next);
8036
8494
  }
8037
8495
  return next();
8038
8496
  });
8039
- app12.use("/:id", async (c, next) => {
8497
+ app13.use("/:id", async (c, next) => {
8040
8498
  if (c.req.method === "PATCH") {
8041
8499
  return requirePermission({ project: ["update"] })(c, next);
8042
8500
  }
@@ -8045,7 +8503,7 @@ app12.use("/:id", async (c, next) => {
8045
8503
  }
8046
8504
  return next();
8047
8505
  });
8048
- app12.openapi(
8506
+ app13.openapi(
8049
8507
  createRoute({
8050
8508
  method: "get",
8051
8509
  path: "/",
@@ -8080,7 +8538,7 @@ app12.openapi(
8080
8538
  return c.json(result);
8081
8539
  }
8082
8540
  );
8083
- app12.openapi(
8541
+ app13.openapi(
8084
8542
  createRoute({
8085
8543
  method: "get",
8086
8544
  path: "/{id}",
@@ -8115,7 +8573,7 @@ app12.openapi(
8115
8573
  return c.json({ data: project });
8116
8574
  }
8117
8575
  );
8118
- app12.openapi(
8576
+ app13.openapi(
8119
8577
  createRoute({
8120
8578
  method: "post",
8121
8579
  path: "/",
@@ -8173,7 +8631,7 @@ app12.openapi(
8173
8631
  }
8174
8632
  }
8175
8633
  );
8176
- app12.openapi(
8634
+ app13.openapi(
8177
8635
  createRoute({
8178
8636
  method: "patch",
8179
8637
  path: "/{id}",
@@ -8219,7 +8677,7 @@ app12.openapi(
8219
8677
  return c.json({ data: project });
8220
8678
  }
8221
8679
  );
8222
- app12.openapi(
8680
+ app13.openapi(
8223
8681
  createRoute({
8224
8682
  method: "delete",
8225
8683
  path: "/{id}",
@@ -8269,21 +8727,21 @@ app12.openapi(
8269
8727
  }
8270
8728
  }
8271
8729
  );
8272
- var projects_default = app12;
8273
- var app13 = new OpenAPIHono();
8274
- app13.use("/", async (c, next) => {
8730
+ var projects_default = app13;
8731
+ var app14 = new OpenAPIHono();
8732
+ app14.use("/", async (c, next) => {
8275
8733
  if (c.req.method === "POST") {
8276
8734
  return requirePermission({ sub_agent: ["create"] })(c, next);
8277
8735
  }
8278
8736
  return next();
8279
8737
  });
8280
- app13.use("/agent/:subAgentId/component/:artifactComponentId", async (c, next) => {
8738
+ app14.use("/agent/:subAgentId/component/:artifactComponentId", async (c, next) => {
8281
8739
  if (c.req.method === "DELETE") {
8282
8740
  return requirePermission({ sub_agent: ["delete"] })(c, next);
8283
8741
  }
8284
8742
  return next();
8285
8743
  });
8286
- app13.openapi(
8744
+ app14.openapi(
8287
8745
  createRoute({
8288
8746
  method: "get",
8289
8747
  path: "/agent/{subAgentId}",
@@ -8315,7 +8773,7 @@ app13.openapi(
8315
8773
  });
8316
8774
  }
8317
8775
  );
8318
- app13.openapi(
8776
+ app14.openapi(
8319
8777
  createRoute({
8320
8778
  method: "get",
8321
8779
  path: "/component/{artifactComponentId}/agents",
@@ -8348,7 +8806,7 @@ app13.openapi(
8348
8806
  return c.json({ data: agents });
8349
8807
  }
8350
8808
  );
8351
- app13.openapi(
8809
+ app14.openapi(
8352
8810
  createRoute({
8353
8811
  method: "post",
8354
8812
  path: "/",
@@ -8425,7 +8883,7 @@ app13.openapi(
8425
8883
  return c.json({ data: association }, 201);
8426
8884
  }
8427
8885
  );
8428
- app13.openapi(
8886
+ app14.openapi(
8429
8887
  createRoute({
8430
8888
  method: "delete",
8431
8889
  path: "/agent/{subAgentId}/component/{artifactComponentId}",
@@ -8467,7 +8925,7 @@ app13.openapi(
8467
8925
  });
8468
8926
  }
8469
8927
  );
8470
- app13.openapi(
8928
+ app14.openapi(
8471
8929
  createRoute({
8472
8930
  method: "get",
8473
8931
  path: "/agent/{subAgentId}/component/{artifactComponentId}/exists",
@@ -8500,21 +8958,21 @@ app13.openapi(
8500
8958
  return c.json({ exists });
8501
8959
  }
8502
8960
  );
8503
- var subAgentArtifactComponents_default = app13;
8504
- var app14 = new OpenAPIHono();
8505
- app14.use("/", async (c, next) => {
8961
+ var subAgentArtifactComponents_default = app14;
8962
+ var app15 = new OpenAPIHono();
8963
+ app15.use("/", async (c, next) => {
8506
8964
  if (c.req.method === "POST") {
8507
8965
  return requirePermission({ sub_agent: ["create"] })(c, next);
8508
8966
  }
8509
8967
  return next();
8510
8968
  });
8511
- app14.use("/agent/:subAgentId/component/:dataComponentId", async (c, next) => {
8969
+ app15.use("/agent/:subAgentId/component/:dataComponentId", async (c, next) => {
8512
8970
  if (c.req.method === "DELETE") {
8513
8971
  return requirePermission({ sub_agent: ["delete"] })(c, next);
8514
8972
  }
8515
8973
  return next();
8516
8974
  });
8517
- app14.openapi(
8975
+ app15.openapi(
8518
8976
  createRoute({
8519
8977
  method: "get",
8520
8978
  path: "/agent/{subAgentId}",
@@ -8544,7 +9002,7 @@ app14.openapi(
8544
9002
  return c.json({ data: dataComponents });
8545
9003
  }
8546
9004
  );
8547
- app14.openapi(
9005
+ app15.openapi(
8548
9006
  createRoute({
8549
9007
  method: "get",
8550
9008
  path: "/component/{dataComponentId}/agents",
@@ -8577,7 +9035,7 @@ app14.openapi(
8577
9035
  return c.json({ data: agents });
8578
9036
  }
8579
9037
  );
8580
- app14.openapi(
9038
+ app15.openapi(
8581
9039
  createRoute({
8582
9040
  method: "post",
8583
9041
  path: "/",
@@ -8650,7 +9108,7 @@ app14.openapi(
8650
9108
  return c.json({ data: association }, 201);
8651
9109
  }
8652
9110
  );
8653
- app14.openapi(
9111
+ app15.openapi(
8654
9112
  createRoute({
8655
9113
  method: "delete",
8656
9114
  path: "/agent/{subAgentId}/component/{dataComponentId}",
@@ -8692,7 +9150,7 @@ app14.openapi(
8692
9150
  });
8693
9151
  }
8694
9152
  );
8695
- app14.openapi(
9153
+ app15.openapi(
8696
9154
  createRoute({
8697
9155
  method: "get",
8698
9156
  path: "/agent/{subAgentId}/component/{dataComponentId}/exists",
@@ -8725,15 +9183,15 @@ app14.openapi(
8725
9183
  return c.json({ exists });
8726
9184
  }
8727
9185
  );
8728
- var subAgentDataComponents_default = app14;
8729
- var app15 = new OpenAPIHono();
8730
- app15.use("/", async (c, next) => {
9186
+ var subAgentDataComponents_default = app15;
9187
+ var app16 = new OpenAPIHono();
9188
+ app16.use("/", async (c, next) => {
8731
9189
  if (c.req.method === "POST") {
8732
9190
  return requirePermission({ sub_agent: ["create"] })(c, next);
8733
9191
  }
8734
9192
  return next();
8735
9193
  });
8736
- app15.use("/:id", async (c, next) => {
9194
+ app16.use("/:id", async (c, next) => {
8737
9195
  if (c.req.method === "PUT") {
8738
9196
  return requirePermission({ sub_agent: ["update"] })(c, next);
8739
9197
  }
@@ -8742,7 +9200,7 @@ app15.use("/:id", async (c, next) => {
8742
9200
  }
8743
9201
  return next();
8744
9202
  });
8745
- app15.openapi(
9203
+ app16.openapi(
8746
9204
  createRoute({
8747
9205
  method: "get",
8748
9206
  path: "/",
@@ -8784,7 +9242,7 @@ app15.openapi(
8784
9242
  }
8785
9243
  }
8786
9244
  );
8787
- app15.openapi(
9245
+ app16.openapi(
8788
9246
  createRoute({
8789
9247
  method: "get",
8790
9248
  path: "/{id}",
@@ -8821,7 +9279,7 @@ app15.openapi(
8821
9279
  return c.json({ data: relation });
8822
9280
  }
8823
9281
  );
8824
- app15.openapi(
9282
+ app16.openapi(
8825
9283
  createRoute({
8826
9284
  method: "post",
8827
9285
  path: "/",
@@ -8877,7 +9335,7 @@ app15.openapi(
8877
9335
  return c.json({ data: relation }, 201);
8878
9336
  }
8879
9337
  );
8880
- app15.openapi(
9338
+ app16.openapi(
8881
9339
  createRoute({
8882
9340
  method: "put",
8883
9341
  path: "/{id}",
@@ -8923,7 +9381,7 @@ app15.openapi(
8923
9381
  return c.json({ data: updatedRelation });
8924
9382
  }
8925
9383
  );
8926
- app15.openapi(
9384
+ app16.openapi(
8927
9385
  createRoute({
8928
9386
  method: "delete",
8929
9387
  path: "/{id}",
@@ -8962,15 +9420,15 @@ app15.openapi(
8962
9420
  return c.body(null, 204);
8963
9421
  }
8964
9422
  );
8965
- var subAgentExternalAgentRelations_default = app15;
8966
- var app16 = new OpenAPIHono();
8967
- app16.use("/", async (c, next) => {
9423
+ var subAgentExternalAgentRelations_default = app16;
9424
+ var app17 = new OpenAPIHono();
9425
+ app17.use("/", async (c, next) => {
8968
9426
  if (c.req.method === "POST") {
8969
9427
  return requirePermission({ sub_agent: ["create"] })(c, next);
8970
9428
  }
8971
9429
  return next();
8972
9430
  });
8973
- app16.use("/:id", async (c, next) => {
9431
+ app17.use("/:id", async (c, next) => {
8974
9432
  if (c.req.method === "PUT") {
8975
9433
  return requirePermission({ sub_agent: ["update"] })(c, next);
8976
9434
  }
@@ -8979,7 +9437,7 @@ app16.use("/:id", async (c, next) => {
8979
9437
  }
8980
9438
  return next();
8981
9439
  });
8982
- app16.openapi(
9440
+ app17.openapi(
8983
9441
  createRoute({
8984
9442
  method: "get",
8985
9443
  path: "/",
@@ -9039,7 +9497,7 @@ app16.openapi(
9039
9497
  }
9040
9498
  }
9041
9499
  );
9042
- app16.openapi(
9500
+ app17.openapi(
9043
9501
  createRoute({
9044
9502
  method: "get",
9045
9503
  path: "/{id}",
@@ -9076,7 +9534,7 @@ app16.openapi(
9076
9534
  return c.json({ data: agentRelation });
9077
9535
  }
9078
9536
  );
9079
- app16.openapi(
9537
+ app17.openapi(
9080
9538
  createRoute({
9081
9539
  method: "post",
9082
9540
  path: "/",
@@ -9150,7 +9608,7 @@ app16.openapi(
9150
9608
  return c.json({ data: agentRelation }, 201);
9151
9609
  }
9152
9610
  );
9153
- app16.openapi(
9611
+ app17.openapi(
9154
9612
  createRoute({
9155
9613
  method: "put",
9156
9614
  path: "/{id}",
@@ -9196,7 +9654,7 @@ app16.openapi(
9196
9654
  return c.json({ data: updatedAgentRelation });
9197
9655
  }
9198
9656
  );
9199
- app16.openapi(
9657
+ app17.openapi(
9200
9658
  createRoute({
9201
9659
  method: "delete",
9202
9660
  path: "/{id}",
@@ -9235,15 +9693,15 @@ app16.openapi(
9235
9693
  return c.body(null, 204);
9236
9694
  }
9237
9695
  );
9238
- var subAgentRelations_default = app16;
9239
- var app17 = new OpenAPIHono();
9240
- app17.use("/", async (c, next) => {
9696
+ var subAgentRelations_default = app17;
9697
+ var app18 = new OpenAPIHono();
9698
+ app18.use("/", async (c, next) => {
9241
9699
  if (c.req.method === "POST") {
9242
9700
  return requirePermission({ sub_agent: ["create"] })(c, next);
9243
9701
  }
9244
9702
  return next();
9245
9703
  });
9246
- app17.use("/:id", async (c, next) => {
9704
+ app18.use("/:id", async (c, next) => {
9247
9705
  if (c.req.method === "PUT") {
9248
9706
  return requirePermission({ sub_agent: ["update"] })(c, next);
9249
9707
  }
@@ -9252,7 +9710,7 @@ app17.use("/:id", async (c, next) => {
9252
9710
  }
9253
9711
  return next();
9254
9712
  });
9255
- app17.openapi(
9713
+ app18.openapi(
9256
9714
  createRoute({
9257
9715
  method: "get",
9258
9716
  path: "/",
@@ -9293,7 +9751,7 @@ app17.openapi(
9293
9751
  return c.json(dataWithType);
9294
9752
  }
9295
9753
  );
9296
- app17.openapi(
9754
+ app18.openapi(
9297
9755
  createRoute({
9298
9756
  method: "get",
9299
9757
  path: "/{id}",
@@ -9334,7 +9792,7 @@ app17.openapi(
9334
9792
  return c.json({ data: subAgentWithType });
9335
9793
  }
9336
9794
  );
9337
- app17.openapi(
9795
+ app18.openapi(
9338
9796
  createRoute({
9339
9797
  method: "post",
9340
9798
  path: "/",
@@ -9381,7 +9839,7 @@ app17.openapi(
9381
9839
  return c.json({ data: subAgentWithType }, 201);
9382
9840
  }
9383
9841
  );
9384
- app17.openapi(
9842
+ app18.openapi(
9385
9843
  createRoute({
9386
9844
  method: "put",
9387
9845
  path: "/{id}",
@@ -9431,7 +9889,7 @@ app17.openapi(
9431
9889
  return c.json({ data: subAgentWithType });
9432
9890
  }
9433
9891
  );
9434
- app17.openapi(
9892
+ app18.openapi(
9435
9893
  createRoute({
9436
9894
  method: "delete",
9437
9895
  path: "/{id}",
@@ -9470,15 +9928,15 @@ app17.openapi(
9470
9928
  return c.body(null, 204);
9471
9929
  }
9472
9930
  );
9473
- var subAgents_default = app17;
9474
- var app18 = new OpenAPIHono();
9475
- app18.use("/", async (c, next) => {
9931
+ var subAgents_default = app18;
9932
+ var app19 = new OpenAPIHono();
9933
+ app19.use("/", async (c, next) => {
9476
9934
  if (c.req.method === "POST") {
9477
9935
  return requirePermission({ sub_agent: ["create"] })(c, next);
9478
9936
  }
9479
9937
  return next();
9480
9938
  });
9481
- app18.use("/:id", async (c, next) => {
9939
+ app19.use("/:id", async (c, next) => {
9482
9940
  if (c.req.method === "PUT") {
9483
9941
  return requirePermission({ sub_agent: ["update"] })(c, next);
9484
9942
  }
@@ -9487,7 +9945,7 @@ app18.use("/:id", async (c, next) => {
9487
9945
  }
9488
9946
  return next();
9489
9947
  });
9490
- app18.openapi(
9948
+ app19.openapi(
9491
9949
  createRoute({
9492
9950
  method: "get",
9493
9951
  path: "/",
@@ -9529,7 +9987,7 @@ app18.openapi(
9529
9987
  }
9530
9988
  }
9531
9989
  );
9532
- app18.openapi(
9990
+ app19.openapi(
9533
9991
  createRoute({
9534
9992
  method: "get",
9535
9993
  path: "/{id}",
@@ -9566,7 +10024,7 @@ app18.openapi(
9566
10024
  return c.json({ data: relation });
9567
10025
  }
9568
10026
  );
9569
- app18.openapi(
10027
+ app19.openapi(
9570
10028
  createRoute({
9571
10029
  method: "post",
9572
10030
  path: "/",
@@ -9622,7 +10080,7 @@ app18.openapi(
9622
10080
  return c.json({ data: relation }, 201);
9623
10081
  }
9624
10082
  );
9625
- app18.openapi(
10083
+ app19.openapi(
9626
10084
  createRoute({
9627
10085
  method: "put",
9628
10086
  path: "/{id}",
@@ -9668,7 +10126,7 @@ app18.openapi(
9668
10126
  return c.json({ data: updatedRelation });
9669
10127
  }
9670
10128
  );
9671
- app18.openapi(
10129
+ app19.openapi(
9672
10130
  createRoute({
9673
10131
  method: "delete",
9674
10132
  path: "/{id}",
@@ -9707,15 +10165,15 @@ app18.openapi(
9707
10165
  return c.body(null, 204);
9708
10166
  }
9709
10167
  );
9710
- var subAgentTeamAgentRelations_default = app18;
9711
- var app19 = new OpenAPIHono();
9712
- app19.use("/", async (c, next) => {
10168
+ var subAgentTeamAgentRelations_default = app19;
10169
+ var app20 = new OpenAPIHono();
10170
+ app20.use("/", async (c, next) => {
9713
10171
  if (c.req.method === "POST") {
9714
10172
  return requirePermission({ sub_agent: ["create"] })(c, next);
9715
10173
  }
9716
10174
  return next();
9717
10175
  });
9718
- app19.use("/:id", async (c, next) => {
10176
+ app20.use("/:id", async (c, next) => {
9719
10177
  if (c.req.method === "PUT") {
9720
10178
  return requirePermission({ sub_agent: ["update"] })(c, next);
9721
10179
  }
@@ -9724,7 +10182,7 @@ app19.use("/:id", async (c, next) => {
9724
10182
  }
9725
10183
  return next();
9726
10184
  });
9727
- app19.openapi(
10185
+ app20.openapi(
9728
10186
  createRoute({
9729
10187
  method: "get",
9730
10188
  path: "/",
@@ -9786,7 +10244,7 @@ app19.openapi(
9786
10244
  return c.json(result);
9787
10245
  }
9788
10246
  );
9789
- app19.openapi(
10247
+ app20.openapi(
9790
10248
  createRoute({
9791
10249
  method: "get",
9792
10250
  path: "/{id}",
@@ -9823,7 +10281,7 @@ app19.openapi(
9823
10281
  return c.json({ data: agentToolRelation });
9824
10282
  }
9825
10283
  );
9826
- app19.openapi(
10284
+ app20.openapi(
9827
10285
  createRoute({
9828
10286
  method: "get",
9829
10287
  path: "/tool/{toolId}/sub-agents",
@@ -9859,7 +10317,7 @@ app19.openapi(
9859
10317
  return c.json(dbResult);
9860
10318
  }
9861
10319
  );
9862
- app19.openapi(
10320
+ app20.openapi(
9863
10321
  createRoute({
9864
10322
  method: "post",
9865
10323
  path: "/",
@@ -9922,7 +10380,7 @@ app19.openapi(
9922
10380
  }
9923
10381
  }
9924
10382
  );
9925
- app19.openapi(
10383
+ app20.openapi(
9926
10384
  createRoute({
9927
10385
  method: "put",
9928
10386
  path: "/{id}",
@@ -9974,7 +10432,7 @@ app19.openapi(
9974
10432
  return c.json({ data: updatedAgentToolRelation });
9975
10433
  }
9976
10434
  );
9977
- app19.openapi(
10435
+ app20.openapi(
9978
10436
  createRoute({
9979
10437
  method: "delete",
9980
10438
  path: "/{id}",
@@ -10013,10 +10471,54 @@ app19.openapi(
10013
10471
  return c.body(null, 204);
10014
10472
  }
10015
10473
  );
10016
- var subAgentToolRelations_default = app19;
10474
+ var subAgentToolRelations_default = app20;
10475
+ var app21 = new OpenAPIHono();
10476
+ var ThirdPartyMCPServerBodySchema = z.object({
10477
+ url: z.url().describe("The MCP server URL to fetch details for")
10478
+ });
10479
+ app21.openapi(
10480
+ createRoute({
10481
+ method: "post",
10482
+ path: "/",
10483
+ summary: "Get Third-Party MCP Server Details",
10484
+ operationId: "get-third-party-mcp-server",
10485
+ tags: ["Third-Party MCP Servers"],
10486
+ description: "Fetch details for a specific third-party MCP server (e.g., Composio) including authentication status and connect URL",
10487
+ request: {
10488
+ params: TenantProjectParamsSchema,
10489
+ body: {
10490
+ content: {
10491
+ "application/json": {
10492
+ schema: ThirdPartyMCPServerBodySchema
10493
+ }
10494
+ }
10495
+ }
10496
+ },
10497
+ responses: {
10498
+ 200: {
10499
+ description: "Third-party MCP server details",
10500
+ content: {
10501
+ "application/json": {
10502
+ schema: ThirdPartyMCPServerResponse
10503
+ }
10504
+ }
10505
+ },
10506
+ ...commonGetErrorResponses
10507
+ }
10508
+ }),
10509
+ async (c) => {
10510
+ const { tenantId, projectId } = c.req.valid("param");
10511
+ const { url } = c.req.valid("json");
10512
+ const server = await fetchSingleComposioServer(tenantId, projectId, url);
10513
+ return c.json({
10514
+ data: server
10515
+ });
10516
+ }
10517
+ );
10518
+ var thirdPartyMCPServers_default = app21;
10017
10519
  var logger5 = getLogger("tools");
10018
- var app20 = new OpenAPIHono();
10019
- app20.use("/", async (c, next) => {
10520
+ var app22 = new OpenAPIHono();
10521
+ app22.use("/", async (c, next) => {
10020
10522
  if (c.req.method === "POST") {
10021
10523
  return requirePermission({ tool: ["create"] })(
10022
10524
  c,
@@ -10025,7 +10527,7 @@ app20.use("/", async (c, next) => {
10025
10527
  }
10026
10528
  return next();
10027
10529
  });
10028
- app20.use("/:id", async (c, next) => {
10530
+ app22.use("/:id", async (c, next) => {
10029
10531
  if (c.req.method === "PUT") {
10030
10532
  return requirePermission({ tool: ["update"] })(
10031
10533
  c,
@@ -10040,7 +10542,7 @@ app20.use("/:id", async (c, next) => {
10040
10542
  }
10041
10543
  return next();
10042
10544
  });
10043
- app20.openapi(
10545
+ app22.openapi(
10044
10546
  createRoute({
10045
10547
  method: "get",
10046
10548
  path: "/",
@@ -10100,7 +10602,7 @@ app20.openapi(
10100
10602
  return c.json(result);
10101
10603
  }
10102
10604
  );
10103
- app20.openapi(
10605
+ app22.openapi(
10104
10606
  createRoute({
10105
10607
  method: "get",
10106
10608
  path: "/{id}",
@@ -10137,7 +10639,7 @@ app20.openapi(
10137
10639
  });
10138
10640
  }
10139
10641
  );
10140
- app20.openapi(
10642
+ app22.openapi(
10141
10643
  createRoute({
10142
10644
  method: "post",
10143
10645
  path: "/",
@@ -10190,7 +10692,7 @@ app20.openapi(
10190
10692
  );
10191
10693
  }
10192
10694
  );
10193
- app20.openapi(
10695
+ app22.openapi(
10194
10696
  createRoute({
10195
10697
  method: "put",
10196
10698
  path: "/{id}",
@@ -10251,7 +10753,7 @@ app20.openapi(
10251
10753
  });
10252
10754
  }
10253
10755
  );
10254
- app20.openapi(
10756
+ app22.openapi(
10255
10757
  createRoute({
10256
10758
  method: "delete",
10257
10759
  path: "/{id}",
@@ -10280,46 +10782,48 @@ app20.openapi(
10280
10782
  return c.body(null, 204);
10281
10783
  }
10282
10784
  );
10283
- var tools_default = app20;
10785
+ var tools_default = app22;
10284
10786
 
10285
10787
  // src/routes/index.ts
10286
- var app21 = new OpenAPIHono();
10287
- app21.route("/projects", projects_default);
10288
- app21.route("/projects/:projectId/agents/:agentId/sub-agents", subAgents_default);
10289
- app21.route("/projects/:projectId/agents/:agentId/sub-agent-relations", subAgentRelations_default);
10290
- app21.route(
10788
+ var app23 = new OpenAPIHono();
10789
+ app23.route("/projects", projects_default);
10790
+ app23.route("/projects/:projectId/agents/:agentId/sub-agents", subAgents_default);
10791
+ app23.route("/projects/:projectId/agents/:agentId/sub-agent-relations", subAgentRelations_default);
10792
+ app23.route(
10291
10793
  "/projects/:projectId/agents/:agentId/sub-agents/:subAgentId/external-agent-relations",
10292
10794
  subAgentExternalAgentRelations_default
10293
10795
  );
10294
- app21.route(
10796
+ app23.route(
10295
10797
  "/projects/:projectId/agents/:agentId/sub-agents/:subAgentId/team-agent-relations",
10296
10798
  subAgentTeamAgentRelations_default
10297
10799
  );
10298
- app21.route("/projects/:projectId/agents", agent_default);
10299
- app21.route(
10800
+ app23.route("/projects/:projectId/agents", agent_default);
10801
+ app23.route(
10300
10802
  "/projects/:projectId/agents/:agentId/sub-agent-tool-relations",
10301
10803
  subAgentToolRelations_default
10302
10804
  );
10303
- app21.route(
10805
+ app23.route(
10304
10806
  "/projects/:projectId/agents/:agentId/sub-agent-artifact-components",
10305
10807
  subAgentArtifactComponents_default
10306
10808
  );
10307
- app21.route(
10809
+ app23.route(
10308
10810
  "/projects/:projectId/agents/:agentId/sub-agent-data-components",
10309
10811
  subAgentDataComponents_default
10310
10812
  );
10311
- app21.route("/projects/:projectId/artifact-components", artifactComponents_default);
10312
- app21.route("/projects/:projectId/agents/:agentId/context-configs", contextConfigs_default);
10313
- app21.route("/projects/:projectId/credentials", credentials_default);
10314
- app21.route("/projects/:projectId/credential-stores", credentialStores_default);
10315
- app21.route("/projects/:projectId/data-components", dataComponents_default);
10316
- app21.route("/projects/:projectId/external-agents", externalAgents_default);
10317
- app21.route("/projects/:projectId/agents/:agentId/function-tools", functionTools_default);
10318
- app21.route("/projects/:projectId/functions", functions_default);
10319
- app21.route("/projects/:projectId/tools", tools_default);
10320
- app21.route("/projects/:projectId/api-keys", apiKeys_default);
10321
- app21.route("/projects/:projectId/agent", agentFull_default);
10322
- var routes_default = app21;
10813
+ app23.route("/projects/:projectId/artifact-components", artifactComponents_default);
10814
+ app23.route("/projects/:projectId/agents/:agentId/context-configs", contextConfigs_default);
10815
+ app23.route("/projects/:projectId/credentials", credentials_default);
10816
+ app23.route("/projects/:projectId/credential-stores", credentialStores_default);
10817
+ app23.route("/projects/:projectId/data-components", dataComponents_default);
10818
+ app23.route("/projects/:projectId/external-agents", externalAgents_default);
10819
+ app23.route("/projects/:projectId/agents/:agentId/function-tools", functionTools_default);
10820
+ app23.route("/projects/:projectId/functions", functions_default);
10821
+ app23.route("/projects/:projectId/tools", tools_default);
10822
+ app23.route("/projects/:projectId/api-keys", apiKeys_default);
10823
+ app23.route("/projects/:projectId/agent", agentFull_default);
10824
+ app23.route("/projects/:projectId/mcp-catalog", mcpCatalog_default);
10825
+ app23.route("/projects/:projectId/third-party-mcp-servers", thirdPartyMCPServers_default);
10826
+ var routes_default = app23;
10323
10827
  var invitationsRoutes = new OpenAPIHono();
10324
10828
  var PendingInvitationSchema = z$1.object({
10325
10829
  id: z$1.string(),
@@ -10504,7 +11008,7 @@ async function findOrCreateCredential(tenantId, projectId, credentialData) {
10504
11008
  throw new Error(`Failed to save credential '${credentialData.id}' to database`);
10505
11009
  }
10506
11010
  }
10507
- var app22 = new OpenAPIHono();
11011
+ var app24 = new OpenAPIHono();
10508
11012
  var logger7 = getLogger("oauth-callback");
10509
11013
  function getBaseUrlFromRequest(c) {
10510
11014
  const url = new URL(c.req.url);
@@ -10580,7 +11084,7 @@ function generateOAuthCallbackPage(params) {
10580
11084
  </html>
10581
11085
  `;
10582
11086
  }
10583
- app22.openapi(
11087
+ app24.openapi(
10584
11088
  createRoute({
10585
11089
  method: "get",
10586
11090
  path: "/login",
@@ -10645,7 +11149,7 @@ app22.openapi(
10645
11149
  }
10646
11150
  }
10647
11151
  );
10648
- app22.openapi(
11152
+ app24.openapi(
10649
11153
  createRoute({
10650
11154
  method: "get",
10651
11155
  path: "/callback",
@@ -10788,16 +11292,16 @@ app22.openapi(
10788
11292
  }
10789
11293
  }
10790
11294
  );
10791
- var oauth_default = app22;
11295
+ var oauth_default = app24;
10792
11296
  var logger8 = getLogger("projectFull");
10793
- var app23 = new OpenAPIHono();
10794
- app23.use("/project-full", async (c, next) => {
11297
+ var app25 = new OpenAPIHono();
11298
+ app25.use("/project-full", async (c, next) => {
10795
11299
  if (c.req.method === "POST") {
10796
11300
  return requirePermission({ project: ["create"] })(c, next);
10797
11301
  }
10798
11302
  return next();
10799
11303
  });
10800
- app23.use("/project-full/:projectId", async (c, next) => {
11304
+ app25.use("/project-full/:projectId", async (c, next) => {
10801
11305
  if (c.req.method === "PUT") {
10802
11306
  return requirePermission({ project: ["update"] })(c, next);
10803
11307
  }
@@ -10806,7 +11310,7 @@ app23.use("/project-full/:projectId", async (c, next) => {
10806
11310
  }
10807
11311
  return next();
10808
11312
  });
10809
- app23.openapi(
11313
+ app25.openapi(
10810
11314
  createRoute({
10811
11315
  method: "post",
10812
11316
  path: "/project-full",
@@ -10866,7 +11370,7 @@ app23.openapi(
10866
11370
  }
10867
11371
  }
10868
11372
  );
10869
- app23.openapi(
11373
+ app25.openapi(
10870
11374
  createRoute({
10871
11375
  method: "get",
10872
11376
  path: "/project-full/{projectId}",
@@ -10919,7 +11423,7 @@ app23.openapi(
10919
11423
  }
10920
11424
  }
10921
11425
  );
10922
- app23.openapi(
11426
+ app25.openapi(
10923
11427
  createRoute({
10924
11428
  method: "put",
10925
11429
  path: "/project-full/{projectId}",
@@ -11003,7 +11507,7 @@ app23.openapi(
11003
11507
  }
11004
11508
  }
11005
11509
  );
11006
- app23.openapi(
11510
+ app25.openapi(
11007
11511
  createRoute({
11008
11512
  method: "delete",
11009
11513
  path: "/project-full/{projectId}",
@@ -11051,7 +11555,7 @@ app23.openapi(
11051
11555
  }
11052
11556
  }
11053
11557
  );
11054
- var projectFull_default = app23;
11558
+ var projectFull_default = app25;
11055
11559
  var userOrganizationsRoutes = new OpenAPIHono();
11056
11560
  userOrganizationsRoutes.openapi(
11057
11561
  createRoute({
@@ -11143,14 +11647,14 @@ function isOriginAllowed(origin) {
11143
11647
  }
11144
11648
  }
11145
11649
  function createManagementHono(serverConfig, credentialStores, auth2) {
11146
- const app25 = new OpenAPIHono();
11147
- app25.use("*", requestId());
11148
- app25.use("*", async (c, next) => {
11650
+ const app27 = new OpenAPIHono();
11651
+ app27.use("*", requestId());
11652
+ app27.use("*", async (c, next) => {
11149
11653
  c.set("serverConfig", serverConfig);
11150
11654
  c.set("credentialStores", credentialStores);
11151
11655
  return next();
11152
11656
  });
11153
- app25.use(
11657
+ app27.use(
11154
11658
  pinoLogger({
11155
11659
  pino: getLogger("agents-manage-api").getPinoInstance(),
11156
11660
  http: {
@@ -11163,7 +11667,7 @@ function createManagementHono(serverConfig, credentialStores, auth2) {
11163
11667
  }
11164
11668
  })
11165
11669
  );
11166
- app25.onError(async (err2, c) => {
11670
+ app27.onError(async (err2, c) => {
11167
11671
  const isExpectedError = err2 instanceof HTTPException;
11168
11672
  const status = isExpectedError ? err2.status : 500;
11169
11673
  const requestId2 = c.get("requestId") || "unknown";
@@ -11233,7 +11737,7 @@ function createManagementHono(serverConfig, credentialStores, auth2) {
11233
11737
  return c.body(JSON.stringify(responseBody));
11234
11738
  });
11235
11739
  if (auth2) {
11236
- app25.use(
11740
+ app27.use(
11237
11741
  "/api/auth/*",
11238
11742
  cors({
11239
11743
  origin: (origin) => {
@@ -11246,11 +11750,11 @@ function createManagementHono(serverConfig, credentialStores, auth2) {
11246
11750
  credentials: true
11247
11751
  })
11248
11752
  );
11249
- app25.on(["POST", "GET"], "/api/auth/*", (c) => {
11753
+ app27.on(["POST", "GET"], "/api/auth/*", (c) => {
11250
11754
  return auth2.handler(c.req.raw);
11251
11755
  });
11252
11756
  }
11253
- app25.use("*", async (c, next) => {
11757
+ app27.use("*", async (c, next) => {
11254
11758
  if (auth2 && c.req.path.startsWith("/api/auth/")) {
11255
11759
  return next();
11256
11760
  }
@@ -11265,7 +11769,7 @@ function createManagementHono(serverConfig, credentialStores, auth2) {
11265
11769
  credentials: true
11266
11770
  })(c, next);
11267
11771
  });
11268
- app25.use("*", async (c, next) => {
11772
+ app27.use("*", async (c, next) => {
11269
11773
  if (env.DISABLE_AUTH || !auth2) {
11270
11774
  c.set("user", null);
11271
11775
  c.set("session", null);
@@ -11283,7 +11787,7 @@ function createManagementHono(serverConfig, credentialStores, auth2) {
11283
11787
  c.set("session", session.session);
11284
11788
  await next();
11285
11789
  });
11286
- app25.openapi(
11790
+ app27.openapi(
11287
11791
  createRoute({
11288
11792
  method: "get",
11289
11793
  path: "/health",
@@ -11300,7 +11804,7 @@ function createManagementHono(serverConfig, credentialStores, auth2) {
11300
11804
  return c.body(null, 204);
11301
11805
  }
11302
11806
  );
11303
- app25.use("/tenants/*", async (c, next) => {
11807
+ app27.use("/tenants/*", async (c, next) => {
11304
11808
  const isTestEnvironment = process.env.ENVIRONMENT === "test";
11305
11809
  if (env.DISABLE_AUTH || isTestEnvironment) {
11306
11810
  await next();
@@ -11314,16 +11818,16 @@ function createManagementHono(serverConfig, credentialStores, auth2) {
11314
11818
  });
11315
11819
  const isTestEnv = process.env.ENVIRONMENT === "test";
11316
11820
  if (!env.DISABLE_AUTH && !isTestEnv) {
11317
- app25.use("/tenants/:tenantId/*", requireTenantAccess());
11318
- }
11319
- app25.route("/api/users/:userId/organizations", userOrganizations_default);
11320
- app25.route("/api/invitations", invitations_default);
11321
- app25.route("/tenants/:tenantId", routes_default);
11322
- app25.route("/tenants/:tenantId", projectFull_default);
11323
- app25.route("/oauth", oauth_default);
11324
- setupOpenAPIRoutes(app25);
11821
+ app27.use("/tenants/:tenantId/*", requireTenantAccess());
11822
+ }
11823
+ app27.route("/api/users/:userId/organizations", userOrganizations_default);
11824
+ app27.route("/api/invitations", invitations_default);
11825
+ app27.route("/tenants/:tenantId", routes_default);
11826
+ app27.route("/tenants/:tenantId", projectFull_default);
11827
+ app27.route("/oauth", oauth_default);
11828
+ setupOpenAPIRoutes(app27);
11325
11829
  const baseApp = new Hono();
11326
- baseApp.route("/", app25);
11830
+ baseApp.route("/", app27);
11327
11831
  return baseApp;
11328
11832
  }
11329
11833
  var logger10 = getLogger("initialization");
@@ -11491,11 +11995,11 @@ var auth = createManagementAuth({
11491
11995
  (p2) => p2 !== null
11492
11996
  )
11493
11997
  });
11494
- var app24 = createManagementHono(defaultConfig, defaultRegistry, auth);
11998
+ var app26 = createManagementHono(defaultConfig, defaultRegistry, auth);
11495
11999
  if (env.ENVIRONMENT !== "test") {
11496
12000
  void initializeDefaultUser();
11497
12001
  }
11498
- var index_default = app24;
12002
+ var index_default = app26;
11499
12003
  function createManagementApp(config) {
11500
12004
  const serverConfig = config?.serverConfig ?? defaultConfig;
11501
12005
  const stores = config?.credentialStores ?? defaultStores;