naftiko: 1.0.0-alpha2 info: label: Metal API — Projects description: 'Metal API — Projects. 11 operations. Lead operation: Retrieve all projects. Self-contained Naftiko capability covering one Equinix business surface.' tags: - Equinix - Projects created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: EQUINIX_API_KEY: EQUINIX_API_KEY capability: consumes: - type: http namespace: metal-projects baseUri: https://api.equinix.com/metal/v1 description: Metal API — Projects business capability. Self-contained, no shared references. resources: - name: projects path: /projects operations: - name: findprojects method: GET description: Retrieve all projects outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: name in: query type: string description: Filter results by name. - name: include in: query type: array description: Nested attributes to include. Included objects will return their full - name: exclude in: query type: array description: Nested attributes to exclude. Excluded objects will return only the href - name: page in: query type: integer description: Page to return - name: per_page in: query type: integer description: Items returned per page - name: createproject method: POST description: Create a project outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: include in: query type: array description: Nested attributes to include. Included objects will return their full - name: exclude in: query type: array description: Nested attributes to exclude. Excluded objects will return only the href - name: body in: body type: object description: Request body (JSON). required: true - name: projects-id path: /projects/{id} operations: - name: deleteproject method: DELETE description: Delete the project outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Project UUID required: true - name: findprojectbyid method: GET description: Retrieve a project outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Project UUID required: true - name: include in: query type: array description: Nested attributes to include. Included objects will return their full - name: exclude in: query type: array description: Nested attributes to exclude. Excluded objects will return only the href - name: updateproject method: PUT description: Update the project outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Project UUID required: true - name: include in: query type: array description: Nested attributes to include. Included objects will return their full - name: exclude in: query type: array description: Nested attributes to exclude. Excluded objects will return only the href - name: body in: body type: object description: Request body (JSON). required: true - name: projects-id-customdata path: /projects/{id}/customdata operations: - name: findprojectcustomdata method: GET description: Retrieve the custom metadata of a project outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Project UUID required: true - name: projects-id-transfers path: /projects/{id}/transfers operations: - name: createtransferrequest method: POST description: Create a transfer request outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: UUID of the project to be transferred required: true - name: include in: query type: array description: Nested attributes to include. Included objects will return their full - name: body in: body type: object description: Request body (JSON). required: true - name: projects-project_id-invitations path: /projects/{project_id}/invitations operations: - name: findprojectinvitations method: GET description: Retrieve project invitations outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: include in: query type: array description: Nested attributes to include. Included objects will return their full - name: page in: query type: integer description: Page to return - name: per_page in: query type: integer description: Items returned per page - name: project_id in: path type: string description: Project UUID required: true - name: createprojectinvitation method: POST description: Create an invitation for a project outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: project_id in: path type: string description: Project UUID required: true - name: include in: query type: array description: Nested attributes to include. Included objects will return their full - name: body in: body type: object description: Request body (JSON). required: false - name: projects-project_id-ips-id-customdata path: /projects/{project_id}/ips/{id}/customdata operations: - name: findipreservationcustomdata method: GET description: Retrieve the custom metadata of an IP Reservation outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: project_id in: path type: string description: Project UUID required: true - name: id in: path type: string description: Ip Reservation UUID required: true - name: projects-project_id-memberships path: /projects/{project_id}/memberships operations: - name: findprojectmemberships method: GET description: Retrieve project memberships outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: search in: query type: string description: Search by member full name, id and email. - name: include in: query type: array description: Nested attributes to include. Included objects will return their full - name: page in: query type: integer description: Page to return - name: per_page in: query type: integer description: Items returned per page - name: project_id in: path type: string description: Project UUID required: true authentication: type: apikey key: X-Auth-Token value: '{{env.EQUINIX_API_KEY}}' placement: header exposes: - type: rest namespace: metal-projects-rest port: 8080 description: REST adapter for Metal API — Projects. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/projects name: projects description: REST surface for projects. operations: - method: GET name: findprojects description: Retrieve all projects call: metal-projects.findprojects with: name: rest.name include: rest.include exclude: rest.exclude page: rest.page per_page: rest.per_page outputParameters: - type: object mapping: $. - method: POST name: createproject description: Create a project call: metal-projects.createproject with: include: rest.include exclude: rest.exclude body: rest.body outputParameters: - type: object mapping: $. - path: /v1/projects/{id} name: projects-id description: REST surface for projects-id. operations: - method: DELETE name: deleteproject description: Delete the project call: metal-projects.deleteproject with: id: rest.id outputParameters: - type: object mapping: $. - method: GET name: findprojectbyid description: Retrieve a project call: metal-projects.findprojectbyid with: id: rest.id include: rest.include exclude: rest.exclude outputParameters: - type: object mapping: $. - method: PUT name: updateproject description: Update the project call: metal-projects.updateproject with: id: rest.id include: rest.include exclude: rest.exclude body: rest.body outputParameters: - type: object mapping: $. - path: /v1/projects/{id}/customdata name: projects-id-customdata description: REST surface for projects-id-customdata. operations: - method: GET name: findprojectcustomdata description: Retrieve the custom metadata of a project call: metal-projects.findprojectcustomdata with: id: rest.id outputParameters: - type: object mapping: $. - path: /v1/projects/{id}/transfers name: projects-id-transfers description: REST surface for projects-id-transfers. operations: - method: POST name: createtransferrequest description: Create a transfer request call: metal-projects.createtransferrequest with: id: rest.id include: rest.include body: rest.body outputParameters: - type: object mapping: $. - path: /v1/projects/{project-id}/invitations name: projects-project-id-invitations description: REST surface for projects-project_id-invitations. operations: - method: GET name: findprojectinvitations description: Retrieve project invitations call: metal-projects.findprojectinvitations with: include: rest.include page: rest.page per_page: rest.per_page project_id: rest.project_id outputParameters: - type: object mapping: $. - method: POST name: createprojectinvitation description: Create an invitation for a project call: metal-projects.createprojectinvitation with: project_id: rest.project_id include: rest.include body: rest.body outputParameters: - type: object mapping: $. - path: /v1/projects/{project-id}/ips/{id}/customdata name: projects-project-id-ips-id-customdata description: REST surface for projects-project_id-ips-id-customdata. operations: - method: GET name: findipreservationcustomdata description: Retrieve the custom metadata of an IP Reservation call: metal-projects.findipreservationcustomdata with: project_id: rest.project_id id: rest.id outputParameters: - type: object mapping: $. - path: /v1/projects/{project-id}/memberships name: projects-project-id-memberships description: REST surface for projects-project_id-memberships. operations: - method: GET name: findprojectmemberships description: Retrieve project memberships call: metal-projects.findprojectmemberships with: search: rest.search include: rest.include page: rest.page per_page: rest.per_page project_id: rest.project_id outputParameters: - type: object mapping: $. - type: mcp namespace: metal-projects-mcp port: 9090 transport: http description: MCP adapter for Metal API — Projects. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: retrieve-all-projects description: Retrieve all projects hints: readOnly: true destructive: false idempotent: true call: metal-projects.findprojects with: name: tools.name include: tools.include exclude: tools.exclude page: tools.page per_page: tools.per_page outputParameters: - type: object mapping: $. - name: create-project description: Create a project hints: readOnly: false destructive: false idempotent: false call: metal-projects.createproject with: include: tools.include exclude: tools.exclude body: tools.body outputParameters: - type: object mapping: $. - name: delete-project description: Delete the project hints: readOnly: false destructive: true idempotent: true call: metal-projects.deleteproject with: id: tools.id outputParameters: - type: object mapping: $. - name: retrieve-project description: Retrieve a project hints: readOnly: true destructive: false idempotent: true call: metal-projects.findprojectbyid with: id: tools.id include: tools.include exclude: tools.exclude outputParameters: - type: object mapping: $. - name: update-project description: Update the project hints: readOnly: false destructive: false idempotent: true call: metal-projects.updateproject with: id: tools.id include: tools.include exclude: tools.exclude body: tools.body outputParameters: - type: object mapping: $. - name: retrieve-custom-metadata-project description: Retrieve the custom metadata of a project hints: readOnly: true destructive: false idempotent: true call: metal-projects.findprojectcustomdata with: id: tools.id outputParameters: - type: object mapping: $. - name: create-transfer-request description: Create a transfer request hints: readOnly: false destructive: false idempotent: false call: metal-projects.createtransferrequest with: id: tools.id include: tools.include body: tools.body outputParameters: - type: object mapping: $. - name: retrieve-project-invitations description: Retrieve project invitations hints: readOnly: true destructive: false idempotent: true call: metal-projects.findprojectinvitations with: include: tools.include page: tools.page per_page: tools.per_page project_id: tools.project_id outputParameters: - type: object mapping: $. - name: create-invitation-project description: Create an invitation for a project hints: readOnly: false destructive: false idempotent: false call: metal-projects.createprojectinvitation with: project_id: tools.project_id include: tools.include body: tools.body outputParameters: - type: object mapping: $. - name: retrieve-custom-metadata-ip-reservation description: Retrieve the custom metadata of an IP Reservation hints: readOnly: true destructive: false idempotent: true call: metal-projects.findipreservationcustomdata with: project_id: tools.project_id id: tools.id outputParameters: - type: object mapping: $. - name: retrieve-project-memberships description: Retrieve project memberships hints: readOnly: true destructive: false idempotent: true call: metal-projects.findprojectmemberships with: search: tools.search include: tools.include page: tools.page per_page: tools.per_page project_id: tools.project_id outputParameters: - type: object mapping: $.