naftiko: 1.0.0-alpha2 info: label: CyVerse Data Science Workflow description: Unified workflow capability for bioinformatics and data science on the CyVerse Discovery Environment. Enables researchers, bioinformaticians, and data scientists to manage data in iRODS, discover and launch analysis applications, monitor jobs, annotate datasets with metadata, share data with collaborators, and request persistent identifiers for publication-ready datasets. tags: - CyVerse - Bioinformatics - Data Science - iRODS - Life Sciences - Research Computing - Open Science created: '2026-05-03' modified: '2026-05-06' binds: - namespace: env keys: TERRAIN_JWT_TOKEN: TERRAIN_JWT_TOKEN capability: consumes: - type: http namespace: terrain baseUri: https://de.cyverse.org/terrain description: Terrain Discovery Environment primary REST API authentication: type: bearer token: '{{TERRAIN_JWT_TOKEN}}' resources: - name: filesystem-directory path: /secured/filesystem/directory description: Browse and create iRODS directories operations: - name: list-directory method: GET description: List contents of a directory in iRODS inputParameters: - name: path in: query type: string required: true description: iRODS path of the directory - name: limit in: query type: integer required: false description: Max entries to return - name: offset in: query type: integer required: false description: Pagination offset outputRawFormat: json outputParameters: - name: result type: object value: $. - name: filesystem-root path: /secured/filesystem/root description: Get root directory for the user operations: - name: get-root-directory method: GET description: Get the root directory listing outputRawFormat: json outputParameters: - name: result type: object value: $. - name: filesystem-stat path: /secured/filesystem/stat description: Get file or directory statistics operations: - name: get-file-stats method: GET description: Get metadata and stats for a file or directory inputParameters: - name: path in: query type: string required: true description: iRODS path outputRawFormat: json outputParameters: - name: result type: object value: $. - name: filesystem-search path: /secured/filesystem/search description: Search the iRODS filesystem operations: - name: search-filesystem method: GET description: Full-text search across iRODS data store inputParameters: - name: search in: query type: string required: true description: Search query - name: limit in: query type: integer required: false description: Max results - name: type in: query type: string required: false description: 'Filter: file, folder, any' outputRawFormat: json outputParameters: - name: result type: object value: $. - name: filesystem-move path: /secured/filesystem/move description: Move files and directories operations: - name: move-files method: POST description: Move files or directories to a new location body: type: json data: sources: '{{tools.sources}}' dest: '{{tools.dest}}' outputRawFormat: json outputParameters: - name: result type: object value: $. - name: filesystem-delete path: /secured/filesystem/delete description: Delete files and directories operations: - name: delete-files method: POST description: Move files or directories to the trash body: type: json data: paths: '{{tools.paths}}' outputRawFormat: json outputParameters: - name: result type: object value: $. - name: filesystem-metadata path: /secured/filesystem/metadata description: Manage iRODS metadata AVUs operations: - name: get-file-metadata method: GET description: Get metadata AVUs for a file or directory inputParameters: - name: path in: query type: string required: true description: iRODS path outputRawFormat: json outputParameters: - name: result type: object value: $. - name: filesystem-share path: /secured/filesystem/share description: Share data with other users operations: - name: share-data method: POST description: Share files or directories with specified users body: type: json data: sharing: '{{tools.sharing}}' outputRawFormat: json outputParameters: - name: result type: object value: $. - name: apps path: /secured/apps description: Browse available applications operations: - name: list-apps method: GET description: List available applications in the Discovery Environment inputParameters: - name: search in: query type: string required: false description: Filter apps by name - name: limit in: query type: integer required: false description: Max apps to return outputRawFormat: json outputParameters: - name: result type: object value: $. - name: analyses path: /secured/analyses description: Submit and list analysis jobs operations: - name: list-analyses method: GET description: List analyses for the current user inputParameters: - name: limit in: query type: integer required: false description: Max analyses to return - name: offset in: query type: integer required: false description: Pagination offset outputRawFormat: json outputParameters: - name: result type: object value: $. - name: submit-analysis method: POST description: Submit a new analysis job body: type: json data: name: '{{tools.name}}' app_id: '{{tools.app_id}}' system_id: '{{tools.system_id}}' config: '{{tools.config}}' outputRawFormat: json outputParameters: - name: result type: object value: $. - name: notifications path: /secured/notifications description: Manage user notifications operations: - name: list-notifications method: GET description: List notifications for the current user inputParameters: - name: limit in: query type: integer required: false description: Max notifications - name: seen in: query type: boolean required: false description: Filter by read/unread outputRawFormat: json outputParameters: - name: result type: object value: $. exposes: - type: rest port: 8080 namespace: cyverse-data-science-api description: Unified REST API for CyVerse Discovery Environment data science workflows. resources: - path: /v1/filesystem name: filesystem description: iRODS data store browsing operations: - method: GET name: list-directory description: List directory contents in iRODS call: terrain.list-directory with: path: rest.path outputParameters: - type: object mapping: $. - path: /v1/filesystem/root name: filesystem-root description: User root directory operations: - method: GET name: get-root-directory description: Get user's root iRODS directory call: terrain.get-root-directory outputParameters: - type: object mapping: $. - path: /v1/filesystem/search name: filesystem-search description: Search data store operations: - method: GET name: search-filesystem description: Search iRODS for files and directories call: terrain.search-filesystem with: search: rest.search outputParameters: - type: object mapping: $. - path: /v1/filesystem/metadata name: metadata description: File metadata (AVUs) operations: - method: GET name: get-file-metadata description: Get AVU metadata for a path call: terrain.get-file-metadata with: path: rest.path outputParameters: - type: object mapping: $. - path: /v1/apps name: apps description: Application discovery operations: - method: GET name: list-apps description: Browse available bioinformatics apps call: terrain.list-apps with: search: rest.search outputParameters: - type: object mapping: $. - path: /v1/analyses name: analyses description: Analysis job management operations: - method: GET name: list-analyses description: List user's analysis jobs call: terrain.list-analyses outputParameters: - type: object mapping: $. - method: POST name: submit-analysis description: Submit a new analysis job call: terrain.submit-analysis with: name: rest.name app_id: rest.app_id system_id: rest.system_id config: rest.config outputParameters: - type: object mapping: $. - path: /v1/notifications name: notifications description: User notifications operations: - method: GET name: list-notifications description: List user notifications call: terrain.list-notifications outputParameters: - type: object mapping: $. - type: mcp port: 9090 namespace: cyverse-data-science-mcp transport: http description: MCP server for AI-assisted CyVerse Discovery Environment data science workflows. tools: - name: list-directory description: Browse an iRODS directory in the CyVerse data store hints: readOnly: true openWorld: true call: terrain.list-directory with: path: tools.path outputParameters: - type: object mapping: $. - name: get-root-directory description: Get the root directory structure for the CyVerse user account hints: readOnly: true openWorld: false call: terrain.get-root-directory outputParameters: - type: object mapping: $. - name: get-file-stats description: Get size, permissions, and modification dates for an iRODS file or directory hints: readOnly: true openWorld: false call: terrain.get-file-stats with: path: tools.path outputParameters: - type: object mapping: $. - name: search-filesystem description: Search the CyVerse iRODS data store for files and folders by name hints: readOnly: true openWorld: true call: terrain.search-filesystem with: search: tools.search type: tools.type outputParameters: - type: object mapping: $. - name: move-files description: Move files or directories to a new location in iRODS hints: readOnly: false destructive: false idempotent: false call: terrain.move-files with: sources: tools.sources dest: tools.dest outputParameters: - type: object mapping: $. - name: delete-files description: Move files or directories to the user's iRODS trash hints: readOnly: false destructive: true idempotent: false call: terrain.delete-files with: paths: tools.paths outputParameters: - type: object mapping: $. - name: get-file-metadata description: Get iRODS AVU metadata triples for a file or directory hints: readOnly: true openWorld: false call: terrain.get-file-metadata with: path: tools.path outputParameters: - type: object mapping: $. - name: share-data description: Share iRODS data (files/folders) with other CyVerse users hints: readOnly: false destructive: false call: terrain.share-data with: sharing: tools.sharing outputParameters: - type: object mapping: $. - name: list-apps description: Browse bioinformatics and data science apps in the Discovery Environment hints: readOnly: true openWorld: true call: terrain.list-apps with: search: tools.search outputParameters: - type: object mapping: $. - name: list-analyses description: List the user's analysis job history in the Discovery Environment hints: readOnly: true openWorld: true call: terrain.list-analyses outputParameters: - type: object mapping: $. - name: submit-analysis description: Submit a new bioinformatics analysis job using a Discovery Environment application hints: readOnly: false destructive: false call: terrain.submit-analysis with: name: tools.name app_id: tools.app_id system_id: tools.system_id config: tools.config outputParameters: - type: object mapping: $. - name: list-notifications description: Get recent notifications about completed analyses and system events hints: readOnly: true openWorld: true call: terrain.list-notifications outputParameters: - type: object mapping: $.