naftiko: 1.0.0-alpha2 info: label: GitLab API — search description: 'GitLab API — search. 3 operations. Lead operation: Search on GitLab within a group. Self-contained Naftiko capability covering one Gitlab Ci business surface.' tags: - Gitlab Ci - search created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: GITLAB_CI_API_KEY: GITLAB_CI_API_KEY capability: consumes: - type: http namespace: gitlab-ci-search baseUri: https://gitlab.com description: GitLab API — search business capability. Self-contained, no shared references. resources: - name: api-v4-groups-id-(--)search path: /api/v4/groups/{id}/(-/)search operations: - name: getapiv4groupsidsearch method: GET description: Search on GitLab within a group outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The ID or URL-encoded path of the group required: true - name: search in: query type: string description: The expression it should be searched for required: true - name: scope in: query type: string description: The scope of the search required: true - name: state in: query type: string description: Filter results by state - name: confidential in: query type: boolean description: Filter results by confidentiality - name: type in: query type: array description: 'Filter work items by type. Only applies to work_items scope. Available types: issue, task, epic, incident, test_case, requirement, objective, key_result, ticket' - name: include_archived in: query type: boolean description: Includes archived projects in the search. Introduced in GitLab 18.9. - name: fields in: query type: array description: Array of fields you wish to search. Available with advanced search. - name: exclude_forks in: query type: boolean description: Excludes forked projects in the search. Available with exact code search. Introduced in GitLab 18.9. - name: num_context_lines in: query type: integer description: Number of context lines around each match. Available with advanced and exact code search. Introduced in GitLab 18.11. - name: regex in: query type: boolean description: Performs a regex code search. Available with exact code search. Introduced in GitLab 18.9 - name: page in: query type: integer description: Current page number - name: per_page in: query type: integer description: Number of items per page - name: api-v4-projects-id-(--)search path: /api/v4/projects/{id}/(-/)search operations: - name: getapiv4projectsidsearch method: GET description: Search on GitLab within a project outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The ID or URL-encoded path of the project required: true - name: search in: query type: string description: The expression it should be searched for required: true - name: scope in: query type: string description: The scope of the search required: true - name: ref in: query type: string description: The name of a repository branch or tag. If not given, the default branch is used - name: state in: query type: string description: Filter results by state - name: confidential in: query type: boolean description: Filter results by confidentiality - name: type in: query type: array description: 'Filter work items by type. Only applies to work_items scope. Available types: issue, task, epic, incident, test_case, requirement, objective, key_result, ticket' - name: fields in: query type: array description: Array of fields you wish to search. Available with advanced search. - name: num_context_lines in: query type: integer description: Number of context lines around each match. Available with advanced and exact code search. Introduced in GitLab 18.11. - name: regex in: query type: boolean description: Performs a regex code search. Available with exact code search. Introduced in GitLab 18.9 - name: page in: query type: integer description: Current page number - name: per_page in: query type: integer description: Number of items per page - name: api-v4-search path: /api/v4/search operations: - name: getapiv4search method: GET description: Search on GitLab outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: search in: query type: string description: The expression it should be searched for required: true - name: scope in: query type: string description: The scope of the search required: true - name: state in: query type: string description: Filter results by state - name: confidential in: query type: boolean description: Filter results by confidentiality - name: type in: query type: array description: 'Filter work items by type. Only applies to work_items scope. Available types: issue, task, epic, incident, test_case, requirement, objective, key_result, ticket' - name: include_archived in: query type: boolean description: Includes archived projects in the search. Introduced in GitLab 18.9. - name: fields in: query type: array description: Array of fields you wish to search. Available with advanced search. - name: exclude_forks in: query type: boolean description: Excludes forked projects in the search. Available with exact code search. Introduced in GitLab 18.9. - name: num_context_lines in: query type: integer description: Number of context lines around each match. Available with advanced and exact code search. Introduced in GitLab 18.11. - name: regex in: query type: boolean description: Performs a regex code search. Available with exact code search. Introduced in GitLab 18.9 - name: page in: query type: integer description: Current page number - name: per_page in: query type: integer description: Number of items per page exposes: - type: rest namespace: gitlab-ci-search-rest port: 8080 description: REST adapter for GitLab API — search. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/api/v4/groups/{id}//search name: api-v4-groups-id-search description: REST surface for api-v4-groups-id-(--)search. operations: - method: GET name: getapiv4groupsidsearch description: Search on GitLab within a group call: gitlab-ci-search.getapiv4groupsidsearch with: id: rest.id search: rest.search scope: rest.scope state: rest.state confidential: rest.confidential type: rest.type include_archived: rest.include_archived fields: rest.fields exclude_forks: rest.exclude_forks num_context_lines: rest.num_context_lines regex: rest.regex page: rest.page per_page: rest.per_page outputParameters: - type: object mapping: $. - path: /v1/api/v4/projects/{id}//search name: api-v4-projects-id-search description: REST surface for api-v4-projects-id-(--)search. operations: - method: GET name: getapiv4projectsidsearch description: Search on GitLab within a project call: gitlab-ci-search.getapiv4projectsidsearch with: id: rest.id search: rest.search scope: rest.scope ref: rest.ref state: rest.state confidential: rest.confidential type: rest.type fields: rest.fields num_context_lines: rest.num_context_lines regex: rest.regex page: rest.page per_page: rest.per_page outputParameters: - type: object mapping: $. - path: /v1/api/v4/search name: api-v4-search description: REST surface for api-v4-search. operations: - method: GET name: getapiv4search description: Search on GitLab call: gitlab-ci-search.getapiv4search with: search: rest.search scope: rest.scope state: rest.state confidential: rest.confidential type: rest.type include_archived: rest.include_archived fields: rest.fields exclude_forks: rest.exclude_forks num_context_lines: rest.num_context_lines regex: rest.regex page: rest.page per_page: rest.per_page outputParameters: - type: object mapping: $. - type: mcp namespace: gitlab-ci-search-mcp port: 9090 transport: http description: MCP adapter for GitLab API — search. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: search-gitlab-within-group description: Search on GitLab within a group hints: readOnly: true destructive: false idempotent: true call: gitlab-ci-search.getapiv4groupsidsearch with: id: tools.id search: tools.search scope: tools.scope state: tools.state confidential: tools.confidential type: tools.type include_archived: tools.include_archived fields: tools.fields exclude_forks: tools.exclude_forks num_context_lines: tools.num_context_lines regex: tools.regex page: tools.page per_page: tools.per_page outputParameters: - type: object mapping: $. - name: search-gitlab-within-project description: Search on GitLab within a project hints: readOnly: true destructive: false idempotent: true call: gitlab-ci-search.getapiv4projectsidsearch with: id: tools.id search: tools.search scope: tools.scope ref: tools.ref state: tools.state confidential: tools.confidential type: tools.type fields: tools.fields num_context_lines: tools.num_context_lines regex: tools.regex page: tools.page per_page: tools.per_page outputParameters: - type: object mapping: $. - name: search-gitlab description: Search on GitLab hints: readOnly: true destructive: false idempotent: true call: gitlab-ci-search.getapiv4search with: search: tools.search scope: tools.scope state: tools.state confidential: tools.confidential type: tools.type include_archived: tools.include_archived fields: tools.fields exclude_forks: tools.exclude_forks num_context_lines: tools.num_context_lines regex: tools.regex page: tools.page per_page: tools.per_page outputParameters: - type: object mapping: $.