naftiko: 1.0.0-alpha2 info: label: Zuplo API Management description: Unified API management workflow combining API key lifecycle management, consumer administration, deployment management, and tunnel configuration. Used by platform engineers and API product teams to programmatically manage their Zuplo infrastructure. tags: - API Management - API Keys - Gateways - Deployments - Platform created: '2026-05-03' modified: '2026-05-06' binds: - namespace: env keys: ZUPLO_API_KEY: ZUPLO_API_KEY capability: consumes: - type: http namespace: zuplo baseUri: https://dev.zuplo.com description: Zuplo Developer API for managing API keys, tunnels, deployments, and metering authentication: type: bearer token: '{{ZUPLO_API_KEY}}' resources: - name: key-buckets path: /v1/accounts/{accountName}/key-buckets description: API key bucket management operations: - name: list-buckets method: GET description: Lists buckets inputParameters: - name: accountName in: path type: string required: true description: Account name outputRawFormat: json outputParameters: - name: result type: object value: $. - name: create-bucket method: POST description: Creates a bucket inputParameters: - name: accountName in: path type: string required: true description: Account name body: type: json data: name: '{{tools.name}}' description: '{{tools.description}}' outputRawFormat: json outputParameters: - name: result type: object value: $. - name: get-bucket method: GET description: Gets a bucket inputParameters: - name: accountName in: path type: string required: true description: Account name - name: bucketName in: path type: string required: true description: Bucket name outputRawFormat: json outputParameters: - name: result type: object value: $. - name: consumers path: /v1/accounts/{accountName}/key-buckets/{bucketName}/consumers description: API key consumer management operations: - name: list-consumers method: GET description: Lists consumers inputParameters: - name: accountName in: path type: string required: true description: Account name - name: bucketName in: path type: string required: true description: Bucket name outputRawFormat: json outputParameters: - name: result type: object value: $. - name: create-consumer method: POST description: Creates a consumer inputParameters: - name: accountName in: path type: string required: true description: Account name - name: bucketName in: path type: string required: true description: Bucket name body: type: json data: name: '{{tools.name}}' description: '{{tools.description}}' tags: '{{tools.tags}}' outputRawFormat: json outputParameters: - name: result type: object value: $. - name: get-consumer method: GET description: Gets a consumer inputParameters: - name: accountName in: path type: string required: true description: Account name - name: bucketName in: path type: string required: true description: Bucket name - name: consumerName in: path type: string required: true description: Consumer name outputRawFormat: json outputParameters: - name: result type: object value: $. - name: delete-consumer method: DELETE description: Deletes a consumer inputParameters: - name: accountName in: path type: string required: true description: Account name - name: bucketName in: path type: string required: true description: Bucket name - name: consumerName in: path type: string required: true description: Consumer name outputRawFormat: json outputParameters: - name: result type: object value: $. - name: api-keys path: /v1/accounts/{accountName}/key-buckets/{bucketName}/consumers/{consumerName}/keys description: API key management operations: - name: list-keys method: GET description: Lists keys inputParameters: - name: accountName in: path type: string required: true description: Account name - name: bucketName in: path type: string required: true description: Bucket name - name: consumerName in: path type: string required: true description: Consumer name outputRawFormat: json outputParameters: - name: result type: object value: $. - name: create-api-key method: POST description: Creates an API key inputParameters: - name: accountName in: path type: string required: true description: Account name - name: bucketName in: path type: string required: true description: Bucket name - name: consumerName in: path type: string required: true description: Consumer name body: type: json data: description: '{{tools.description}}' tags: '{{tools.tags}}' expiresOn: '{{tools.expiresOn}}' outputRawFormat: json outputParameters: - name: result type: object value: $. - name: delete-api-key method: DELETE description: Deletes an API key inputParameters: - name: accountName in: path type: string required: true description: Account name - name: bucketName in: path type: string required: true description: Bucket name - name: consumerName in: path type: string required: true description: Consumer name - name: keyId in: path type: string required: true description: Key ID outputRawFormat: json outputParameters: - name: result type: object value: $. - name: roll-consumer-keys method: POST description: Roll consumer keys inputParameters: - name: accountName in: path type: string required: true description: Account name - name: bucketName in: path type: string required: true description: Bucket name - name: consumerName in: path type: string required: true description: Consumer name outputRawFormat: json outputParameters: - name: result type: object value: $. - name: tunnels path: /v1/accounts/{accountName}/tunnels description: Tunnel management for private backend connectivity operations: - name: list-tunnels method: GET description: Lists tunnels inputParameters: - name: accountName in: path type: string required: true description: Account name outputRawFormat: json outputParameters: - name: result type: object value: $. - name: create-tunnel method: POST description: Creates a tunnel inputParameters: - name: accountName in: path type: string required: true description: Account name body: type: json data: name: '{{tools.name}}' description: '{{tools.description}}' outputRawFormat: json outputParameters: - name: result type: object value: $. - name: get-tunnel method: GET description: Gets a tunnel inputParameters: - name: accountName in: path type: string required: true description: Account name - name: tunnelId in: path type: string required: true description: Tunnel ID outputRawFormat: json outputParameters: - name: result type: object value: $. - name: delete-tunnel method: DELETE description: Deletes a tunnel inputParameters: - name: accountName in: path type: string required: true description: Account name - name: tunnelId in: path type: string required: true description: Tunnel ID outputRawFormat: json outputParameters: - name: result type: object value: $. - name: rotate-tunnel-token method: POST description: Rotates the token inputParameters: - name: accountName in: path type: string required: true description: Account name - name: tunnelId in: path type: string required: true description: Tunnel ID outputRawFormat: json outputParameters: - name: result type: object value: $. - name: deployments path: /v1/deployments description: Deployment management operations: - name: list-deployments method: GET description: Lists deployments inputParameters: - name: accountName in: path type: string required: true description: Account name - name: projectName in: path type: string required: true description: Project name outputRawFormat: json outputParameters: - name: result type: object value: $. - name: get-deployment method: GET description: Get a deployment inputParameters: - name: deploymentName in: path type: string required: true description: Deployment name outputRawFormat: json outputParameters: - name: result type: object value: $. - name: redeploy-deployment method: POST description: Re-deploy a deployment inputParameters: - name: deploymentName in: path type: string required: true description: Deployment name outputRawFormat: json outputParameters: - name: result type: object value: $. - name: delete-deployment method: DELETE description: Deletes a deployment inputParameters: - name: deploymentName in: path type: string required: true description: Deployment name outputRawFormat: json outputParameters: - name: result type: object value: $. - name: audit-logs path: /v1/accounts/{accountName}/audit-logs description: Audit log query operations: - name: query-audit-logs method: GET description: Query audit logs inputParameters: - name: accountName in: path type: string required: true description: Account name - name: limit in: query type: integer required: false description: Maximum number of results - name: before in: query type: string required: false description: Cursor for pagination outputRawFormat: json outputParameters: - name: result type: object value: $. - name: identity path: /v1/who-am-i description: Identity and authentication operations: - name: who-am-i method: GET description: Who Am I inputParameters: [] outputRawFormat: json outputParameters: - name: result type: object value: $. exposes: - type: rest port: 8080 namespace: zuplo-management-api description: Unified REST API for Zuplo API management workflows. resources: - path: /v1/buckets name: buckets description: Manage API key buckets operations: - method: GET name: list-buckets description: List all API key buckets call: zuplo.list-buckets with: accountName: rest.accountName outputParameters: - type: object mapping: $. - method: POST name: create-bucket description: Create an API key bucket call: zuplo.create-bucket with: accountName: rest.accountName outputParameters: - type: object mapping: $. - path: /v1/consumers name: consumers description: Manage API consumers operations: - method: GET name: list-consumers description: List consumers in a bucket call: zuplo.list-consumers with: accountName: rest.accountName bucketName: rest.bucketName outputParameters: - type: object mapping: $. - method: POST name: create-consumer description: Create a new consumer call: zuplo.create-consumer with: accountName: rest.accountName bucketName: rest.bucketName outputParameters: - type: object mapping: $. - path: /v1/keys name: api-keys description: Manage API keys for consumers operations: - method: GET name: list-keys description: List API keys for a consumer call: zuplo.list-keys with: accountName: rest.accountName bucketName: rest.bucketName consumerName: rest.consumerName outputParameters: - type: object mapping: $. - method: POST name: create-api-key description: Issue a new API key call: zuplo.create-api-key with: accountName: rest.accountName bucketName: rest.bucketName consumerName: rest.consumerName outputParameters: - type: object mapping: $. - path: /v1/keys/{keyId} name: api-key description: Individual API key operations operations: - method: DELETE name: delete-api-key description: Delete an API key call: zuplo.delete-api-key with: accountName: rest.accountName bucketName: rest.bucketName consumerName: rest.consumerName keyId: rest.keyId outputParameters: - type: object mapping: $. - path: /v1/tunnels name: tunnels description: Manage tunnels to private backends operations: - method: GET name: list-tunnels description: List all tunnels call: zuplo.list-tunnels with: accountName: rest.accountName outputParameters: - type: object mapping: $. - method: POST name: create-tunnel description: Create a tunnel call: zuplo.create-tunnel with: accountName: rest.accountName outputParameters: - type: object mapping: $. - path: /v1/tunnels/{tunnelId} name: tunnel description: Individual tunnel operations operations: - method: GET name: get-tunnel description: Get tunnel details call: zuplo.get-tunnel with: accountName: rest.accountName tunnelId: rest.tunnelId outputParameters: - type: object mapping: $. - method: DELETE name: delete-tunnel description: Delete a tunnel call: zuplo.delete-tunnel with: accountName: rest.accountName tunnelId: rest.tunnelId outputParameters: - type: object mapping: $. - path: /v1/deployments name: deployments description: Deployment management operations: - method: GET name: list-deployments description: List project deployments call: zuplo.list-deployments with: accountName: rest.accountName projectName: rest.projectName outputParameters: - type: object mapping: $. - path: /v1/audit-logs name: audit-logs description: Audit log access for compliance operations: - method: GET name: query-audit-logs description: Query audit logs call: zuplo.query-audit-logs with: accountName: rest.accountName outputParameters: - type: object mapping: $. - type: mcp port: 9090 namespace: zuplo-management-mcp transport: http description: MCP server for AI-assisted Zuplo API management. tools: - name: list-buckets description: List all API key buckets in a Zuplo account hints: readOnly: true openWorld: false call: zuplo.list-buckets with: accountName: tools.accountName outputParameters: - type: object mapping: $. - name: create-bucket description: Create a new API key bucket for grouping consumers hints: readOnly: false destructive: false idempotent: false call: zuplo.create-bucket with: accountName: tools.accountName outputParameters: - type: object mapping: $. - name: list-consumers description: List all API consumers within a bucket hints: readOnly: true openWorld: false call: zuplo.list-consumers with: accountName: tools.accountName bucketName: tools.bucketName outputParameters: - type: object mapping: $. - name: create-consumer description: Create a new API key consumer in a bucket hints: readOnly: false destructive: false idempotent: false call: zuplo.create-consumer with: accountName: tools.accountName bucketName: tools.bucketName outputParameters: - type: object mapping: $. - name: get-consumer description: Get details for a specific API consumer hints: readOnly: true openWorld: false call: zuplo.get-consumer with: accountName: tools.accountName bucketName: tools.bucketName consumerName: tools.consumerName outputParameters: - type: object mapping: $. - name: delete-consumer description: Delete an API consumer and all their keys hints: readOnly: false destructive: true idempotent: true call: zuplo.delete-consumer with: accountName: tools.accountName bucketName: tools.bucketName consumerName: tools.consumerName outputParameters: - type: object mapping: $. - name: list-api-keys description: List all API keys issued to a consumer hints: readOnly: true openWorld: false call: zuplo.list-keys with: accountName: tools.accountName bucketName: tools.bucketName consumerName: tools.consumerName outputParameters: - type: object mapping: $. - name: create-api-key description: Issue a new API key to a consumer hints: readOnly: false destructive: false idempotent: false call: zuplo.create-api-key with: accountName: tools.accountName bucketName: tools.bucketName consumerName: tools.consumerName outputParameters: - type: object mapping: $. - name: delete-api-key description: Revoke and delete an API key hints: readOnly: false destructive: true idempotent: true call: zuplo.delete-api-key with: accountName: tools.accountName bucketName: tools.bucketName consumerName: tools.consumerName keyId: tools.keyId outputParameters: - type: object mapping: $. - name: roll-consumer-keys description: Rotate all API keys for a consumer to new values hints: readOnly: false destructive: false idempotent: false call: zuplo.roll-consumer-keys with: accountName: tools.accountName bucketName: tools.bucketName consumerName: tools.consumerName outputParameters: - type: object mapping: $. - name: list-tunnels description: List all tunnels connected to private backends hints: readOnly: true openWorld: false call: zuplo.list-tunnels with: accountName: tools.accountName outputParameters: - type: object mapping: $. - name: create-tunnel description: Create a new tunnel for private backend connectivity hints: readOnly: false destructive: false idempotent: false call: zuplo.create-tunnel with: accountName: tools.accountName outputParameters: - type: object mapping: $. - name: get-tunnel description: Get tunnel details and connection status hints: readOnly: true openWorld: false call: zuplo.get-tunnel with: accountName: tools.accountName tunnelId: tools.tunnelId outputParameters: - type: object mapping: $. - name: delete-tunnel description: Delete a tunnel hints: readOnly: false destructive: true idempotent: true call: zuplo.delete-tunnel with: accountName: tools.accountName tunnelId: tools.tunnelId outputParameters: - type: object mapping: $. - name: rotate-tunnel-token description: Rotate the authentication token for a tunnel connection hints: readOnly: false destructive: false idempotent: false call: zuplo.rotate-tunnel-token with: accountName: tools.accountName tunnelId: tools.tunnelId outputParameters: - type: object mapping: $. - name: list-deployments description: List all deployments for a project hints: readOnly: true openWorld: false call: zuplo.list-deployments with: accountName: tools.accountName projectName: tools.projectName outputParameters: - type: object mapping: $. - name: get-deployment description: Get deployment details and status hints: readOnly: true openWorld: false call: zuplo.get-deployment with: deploymentName: tools.deploymentName outputParameters: - type: object mapping: $. - name: redeploy-deployment description: Trigger a re-deployment of an existing deployment hints: readOnly: false destructive: false idempotent: true call: zuplo.redeploy-deployment with: deploymentName: tools.deploymentName outputParameters: - type: object mapping: $. - name: delete-deployment description: Delete a Zuplo deployment hints: readOnly: false destructive: true idempotent: true call: zuplo.delete-deployment with: deploymentName: tools.deploymentName outputParameters: - type: object mapping: $. - name: query-audit-logs description: Query account audit logs for compliance and security review hints: readOnly: true openWorld: false call: zuplo.query-audit-logs with: accountName: tools.accountName outputParameters: - type: object mapping: $. - name: who-am-i description: Identify the current API key caller and account hints: readOnly: true openWorld: false call: zuplo.who-am-i outputParameters: - type: object mapping: $.