GitLab CI/CD · Capability

GitLab API — geo

GitLab API — geo. 9 operations. Lead operation: Query the GraphQL endpoint of an existing Geo node. Self-contained Naftiko capability covering one Gitlab Ci business surface.

Run with Naftiko Gitlab Cigeo

What You Can Do

POST
Postapiv4geonodeproxyidgraphql — Query the GraphQL endpoint of an existing Geo node
/v1/api/v4/geo/node-proxy/{id}/graphql
GET
Getapiv4geoproxy — Determine if a Geo site should proxy requests
/v1/api/v4/geo/proxy
POST
Postapiv4geoproxygitsshinforefsreceivepack — Internal endpoint that returns git-received-pack output for git push
/v1/api/v4/geo/proxy-git-ssh/info-refs-receive-pack
POST
Postapiv4geoproxygitsshinforefsuploadpack — Internal endpoint that returns info refs upload pack for clone or pull operations
/v1/api/v4/geo/proxy-git-ssh/info-refs-upload-pack
POST
Postapiv4geoproxygitsshreceivepack — Internal endpoint that posts git-receive-pack for git push
/v1/api/v4/geo/proxy-git-ssh/receive-pack
POST
Postapiv4geoproxygitsshuploadpack — Internal endpoint that posts git-upload-pack for clone or pull operations
/v1/api/v4/geo/proxy-git-ssh/upload-pack
GET
Getapiv4georepositoriesglrepositorypipelinerefs — Used by secondary runners to verify the secondary instance has the very latest version
/v1/api/v4/geo/repositories/{gl-repository}/pipeline-refs
GET
Getapiv4georetrievereplicablenamereplicableid — Internal endpoint that returns a replicable file
/v1/api/v4/geo/retrieve/{replicable-name}/{replicable-id}
POST
Postapiv4geostatus — Internal endpoint that posts the current node status
/v1/api/v4/geo/status

MCP Tools

query-graphql-endpoint-existing-geo

Query the GraphQL endpoint of an existing Geo node

read-only
determine-if-geo-site-should

Determine if a Geo site should proxy requests

read-only idempotent
internal-endpoint-that-returns-git

Internal endpoint that returns git-received-pack output for git push

internal-endpoint-that-returns-info

Internal endpoint that returns info refs upload pack for clone or pull operations

internal-endpoint-that-posts-git

Internal endpoint that posts git-receive-pack for git push

internal-endpoint-that-posts-git-2

Internal endpoint that posts git-upload-pack for clone or pull operations

used-secondary-runners-verify-secondary

Used by secondary runners to verify the secondary instance has the very latest version

read-only idempotent
internal-endpoint-that-returns-replicable

Internal endpoint that returns a replicable file

read-only idempotent
internal-endpoint-that-posts-current

Internal endpoint that posts the current node status

Capability Spec

gitlab-ci-geo.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: GitLab API — geo
  description: 'GitLab API — geo. 9 operations. Lead operation: Query the GraphQL endpoint of an existing Geo node. Self-contained
    Naftiko capability covering one Gitlab Ci business surface.'
  tags:
  - Gitlab Ci
  - geo
  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-geo
    baseUri: https://gitlab.com
    description: GitLab API — geo business capability. Self-contained, no shared references.
    resources:
    - name: api-v4-geo-node_proxy-id-graphql
      path: /api/v4/geo/node_proxy/{id}/graphql
      operations:
      - name: postapiv4geonodeproxyidgraphql
        method: POST
        description: Query the GraphQL endpoint of an existing Geo node
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: integer
          description: The ID of the Geo node
          required: true
    - name: api-v4-geo-proxy
      path: /api/v4/geo/proxy
      operations:
      - name: getapiv4geoproxy
        method: GET
        description: Determine if a Geo site should proxy requests
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: api-v4-geo-proxy_git_ssh-info_refs_receive_pack
      path: /api/v4/geo/proxy_git_ssh/info_refs_receive_pack
      operations:
      - name: postapiv4geoproxygitsshinforefsreceivepack
        method: POST
        description: Internal endpoint that returns git-received-pack output for git push
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: postApiV4GeoProxyGitSshInfoRefsReceivePack
          in: body
          type: string
          required: true
    - name: api-v4-geo-proxy_git_ssh-info_refs_upload_pack
      path: /api/v4/geo/proxy_git_ssh/info_refs_upload_pack
      operations:
      - name: postapiv4geoproxygitsshinforefsuploadpack
        method: POST
        description: Internal endpoint that returns info refs upload pack for clone or pull operations
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: postApiV4GeoProxyGitSshInfoRefsUploadPack
          in: body
          type: string
          required: true
    - name: api-v4-geo-proxy_git_ssh-receive_pack
      path: /api/v4/geo/proxy_git_ssh/receive_pack
      operations:
      - name: postapiv4geoproxygitsshreceivepack
        method: POST
        description: Internal endpoint that posts git-receive-pack for git push
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: postApiV4GeoProxyGitSshReceivePack
          in: body
          type: string
          required: true
    - name: api-v4-geo-proxy_git_ssh-upload_pack
      path: /api/v4/geo/proxy_git_ssh/upload_pack
      operations:
      - name: postapiv4geoproxygitsshuploadpack
        method: POST
        description: Internal endpoint that posts git-upload-pack for clone or pull operations
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: postApiV4GeoProxyGitSshUploadPack
          in: body
          type: string
          required: true
    - name: api-v4-geo-repositories-gl_repository-pipeline_refs
      path: /api/v4/geo/repositories/{gl_repository}/pipeline_refs
      operations:
      - name: getapiv4georepositoriesglrepositorypipelinerefs
        method: GET
        description: Used by secondary runners to verify the secondary instance has the very latest version
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: gl_repository
          in: path
          type: string
          description: The repository to check
          required: true
    - name: api-v4-geo-retrieve-replicable_name-replicable_id
      path: /api/v4/geo/retrieve/{replicable_name}/{replicable_id}
      operations:
      - name: getapiv4georetrievereplicablenamereplicableid
        method: GET
        description: Internal endpoint that returns a replicable file
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: replicable_name
          in: path
          type: string
          description: The replicable name of a replicator instance
          required: true
        - name: replicable_id
          in: path
          type: integer
          description: The replicable ID of a replicable instance
          required: true
    - name: api-v4-geo-status
      path: /api/v4/geo/status
      operations:
      - name: postapiv4geostatus
        method: POST
        description: Internal endpoint that posts the current node status
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: postApiV4GeoStatus
          in: body
          type: string
          required: true
  exposes:
  - type: rest
    namespace: gitlab-ci-geo-rest
    port: 8080
    description: REST adapter for GitLab API — geo. One Spectral-compliant resource per consumed operation, prefixed with
      /v1.
    resources:
    - path: /v1/api/v4/geo/node-proxy/{id}/graphql
      name: api-v4-geo-node-proxy-id-graphql
      description: REST surface for api-v4-geo-node_proxy-id-graphql.
      operations:
      - method: POST
        name: postapiv4geonodeproxyidgraphql
        description: Query the GraphQL endpoint of an existing Geo node
        call: gitlab-ci-geo.postapiv4geonodeproxyidgraphql
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/v4/geo/proxy
      name: api-v4-geo-proxy
      description: REST surface for api-v4-geo-proxy.
      operations:
      - method: GET
        name: getapiv4geoproxy
        description: Determine if a Geo site should proxy requests
        call: gitlab-ci-geo.getapiv4geoproxy
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/v4/geo/proxy-git-ssh/info-refs-receive-pack
      name: api-v4-geo-proxy-git-ssh-info-refs-receive-pack
      description: REST surface for api-v4-geo-proxy_git_ssh-info_refs_receive_pack.
      operations:
      - method: POST
        name: postapiv4geoproxygitsshinforefsreceivepack
        description: Internal endpoint that returns git-received-pack output for git push
        call: gitlab-ci-geo.postapiv4geoproxygitsshinforefsreceivepack
        with:
          postApiV4GeoProxyGitSshInfoRefsReceivePack: rest.postApiV4GeoProxyGitSshInfoRefsReceivePack
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/v4/geo/proxy-git-ssh/info-refs-upload-pack
      name: api-v4-geo-proxy-git-ssh-info-refs-upload-pack
      description: REST surface for api-v4-geo-proxy_git_ssh-info_refs_upload_pack.
      operations:
      - method: POST
        name: postapiv4geoproxygitsshinforefsuploadpack
        description: Internal endpoint that returns info refs upload pack for clone or pull operations
        call: gitlab-ci-geo.postapiv4geoproxygitsshinforefsuploadpack
        with:
          postApiV4GeoProxyGitSshInfoRefsUploadPack: rest.postApiV4GeoProxyGitSshInfoRefsUploadPack
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/v4/geo/proxy-git-ssh/receive-pack
      name: api-v4-geo-proxy-git-ssh-receive-pack
      description: REST surface for api-v4-geo-proxy_git_ssh-receive_pack.
      operations:
      - method: POST
        name: postapiv4geoproxygitsshreceivepack
        description: Internal endpoint that posts git-receive-pack for git push
        call: gitlab-ci-geo.postapiv4geoproxygitsshreceivepack
        with:
          postApiV4GeoProxyGitSshReceivePack: rest.postApiV4GeoProxyGitSshReceivePack
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/v4/geo/proxy-git-ssh/upload-pack
      name: api-v4-geo-proxy-git-ssh-upload-pack
      description: REST surface for api-v4-geo-proxy_git_ssh-upload_pack.
      operations:
      - method: POST
        name: postapiv4geoproxygitsshuploadpack
        description: Internal endpoint that posts git-upload-pack for clone or pull operations
        call: gitlab-ci-geo.postapiv4geoproxygitsshuploadpack
        with:
          postApiV4GeoProxyGitSshUploadPack: rest.postApiV4GeoProxyGitSshUploadPack
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/v4/geo/repositories/{gl-repository}/pipeline-refs
      name: api-v4-geo-repositories-gl-repository-pipeline-refs
      description: REST surface for api-v4-geo-repositories-gl_repository-pipeline_refs.
      operations:
      - method: GET
        name: getapiv4georepositoriesglrepositorypipelinerefs
        description: Used by secondary runners to verify the secondary instance has the very latest version
        call: gitlab-ci-geo.getapiv4georepositoriesglrepositorypipelinerefs
        with:
          gl_repository: rest.gl_repository
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/v4/geo/retrieve/{replicable-name}/{replicable-id}
      name: api-v4-geo-retrieve-replicable-name-replicable-id
      description: REST surface for api-v4-geo-retrieve-replicable_name-replicable_id.
      operations:
      - method: GET
        name: getapiv4georetrievereplicablenamereplicableid
        description: Internal endpoint that returns a replicable file
        call: gitlab-ci-geo.getapiv4georetrievereplicablenamereplicableid
        with:
          replicable_name: rest.replicable_name
          replicable_id: rest.replicable_id
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/v4/geo/status
      name: api-v4-geo-status
      description: REST surface for api-v4-geo-status.
      operations:
      - method: POST
        name: postapiv4geostatus
        description: Internal endpoint that posts the current node status
        call: gitlab-ci-geo.postapiv4geostatus
        with:
          postApiV4GeoStatus: rest.postApiV4GeoStatus
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: gitlab-ci-geo-mcp
    port: 9090
    transport: http
    description: MCP adapter for GitLab API — geo. One tool per consumed operation, routed inline through this capability's
      consumes block.
    tools:
    - name: query-graphql-endpoint-existing-geo
      description: Query the GraphQL endpoint of an existing Geo node
      hints:
        readOnly: true
        destructive: false
        idempotent: false
      call: gitlab-ci-geo.postapiv4geonodeproxyidgraphql
      with:
        id: tools.id
      outputParameters:
      - type: object
        mapping: $.
    - name: determine-if-geo-site-should
      description: Determine if a Geo site should proxy requests
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: gitlab-ci-geo.getapiv4geoproxy
      outputParameters:
      - type: object
        mapping: $.
    - name: internal-endpoint-that-returns-git
      description: Internal endpoint that returns git-received-pack output for git push
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: gitlab-ci-geo.postapiv4geoproxygitsshinforefsreceivepack
      with:
        postApiV4GeoProxyGitSshInfoRefsReceivePack: tools.postApiV4GeoProxyGitSshInfoRefsReceivePack
      outputParameters:
      - type: object
        mapping: $.
    - name: internal-endpoint-that-returns-info
      description: Internal endpoint that returns info refs upload pack for clone or pull operations
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: gitlab-ci-geo.postapiv4geoproxygitsshinforefsuploadpack
      with:
        postApiV4GeoProxyGitSshInfoRefsUploadPack: tools.postApiV4GeoProxyGitSshInfoRefsUploadPack
      outputParameters:
      - type: object
        mapping: $.
    - name: internal-endpoint-that-posts-git
      description: Internal endpoint that posts git-receive-pack for git push
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: gitlab-ci-geo.postapiv4geoproxygitsshreceivepack
      with:
        postApiV4GeoProxyGitSshReceivePack: tools.postApiV4GeoProxyGitSshReceivePack
      outputParameters:
      - type: object
        mapping: $.
    - name: internal-endpoint-that-posts-git-2
      description: Internal endpoint that posts git-upload-pack for clone or pull operations
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: gitlab-ci-geo.postapiv4geoproxygitsshuploadpack
      with:
        postApiV4GeoProxyGitSshUploadPack: tools.postApiV4GeoProxyGitSshUploadPack
      outputParameters:
      - type: object
        mapping: $.
    - name: used-secondary-runners-verify-secondary
      description: Used by secondary runners to verify the secondary instance has the very latest version
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: gitlab-ci-geo.getapiv4georepositoriesglrepositorypipelinerefs
      with:
        gl_repository: tools.gl_repository
      outputParameters:
      - type: object
        mapping: $.
    - name: internal-endpoint-that-returns-replicable
      description: Internal endpoint that returns a replicable file
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: gitlab-ci-geo.getapiv4georetrievereplicablenamereplicableid
      with:
        replicable_name: tools.replicable_name
        replicable_id: tools.replicable_id
      outputParameters:
      - type: object
        mapping: $.
    - name: internal-endpoint-that-posts-current
      description: Internal endpoint that posts the current node status
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: gitlab-ci-geo.postapiv4geostatus
      with:
        postApiV4GeoStatus: tools.postApiV4GeoStatus
      outputParameters:
      - type: object
        mapping: $.