naftiko: 1.0.0-alpha2 info: label: GitHub Projects API — Projects description: 'GitHub Projects API — Projects. 31 operations. Lead operation: GitHub List Organization Projects. Self-contained Naftiko capability covering one Github business surface.' tags: - Github - Projects created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: GITHUB_API_KEY: GITHUB_API_KEY capability: consumes: - type: http namespace: projects-projects baseUri: '' description: GitHub Projects API — Projects business capability. Self-contained, no shared references. resources: - name: orgs-org-projects path: /orgs/{org}/projects operations: - name: listorganizationprojects method: GET description: GitHub List Organization Projects outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: state in: query type: string description: Indicates the state of the projects to return. - name: orgs-org-teams-team_slug-projects path: /orgs/{org}/teams/{team_slug}/projects operations: - name: listteamprojects method: GET description: GitHub List Team Projects outputRawFormat: json outputParameters: - name: result type: object value: $. - name: orgs-org-teams-team_slug-projects-project_id path: /orgs/{org}/teams/{team_slug}/projects/{project_id} operations: - name: checkteampermissionsforproject method: GET description: GitHub Check Team Permissions for Project outputRawFormat: json outputParameters: - name: result type: object value: $. - name: addorupdateteamprojectpermissions method: PUT description: GitHub Add or Update Team Project Permissions outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: removeprojectfromteam method: DELETE description: GitHub Remove Project from Team outputRawFormat: json outputParameters: - name: result type: object value: $. - name: projects-columns-cards-card_id path: /projects/columns/cards/{card_id} operations: - name: getprojectcard method: GET description: GitHub Get Project Card outputRawFormat: json outputParameters: - name: result type: object value: $. - name: updateanexistingprojectcard method: PATCH description: GitHub Update an Existing Project Card outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: deleteprojectcard method: DELETE description: GitHub Delete Project Card outputRawFormat: json outputParameters: - name: result type: object value: $. - name: projects-columns-cards-card_id-moves path: /projects/columns/cards/{card_id}/moves operations: - name: moveprojectcard method: POST description: GitHub Move Project Card outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: projects-columns-column_id path: /projects/columns/{column_id} operations: - name: getprojectcolumn method: GET description: GitHub Get Project Column outputRawFormat: json outputParameters: - name: result type: object value: $. - name: updateanexistingprojectcolumn method: PATCH description: GitHub Update an Existing Project Column outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: deleteprojectcolumn method: DELETE description: GitHub Delete Project Column outputRawFormat: json outputParameters: - name: result type: object value: $. - name: projects-columns-column_id-cards path: /projects/columns/{column_id}/cards operations: - name: listprojectcards method: GET description: GitHub List Project Cards outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: archived_state in: query type: string description: Filters the project cards that are returned by the card's state. - name: createprojectcard method: POST description: GitHub Create Project Card outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: projects-columns-column_id-moves path: /projects/columns/{column_id}/moves operations: - name: moveprojectcolumn method: POST description: GitHub Move Project Column outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: projects-project_id path: /projects/{project_id} operations: - name: getproject method: GET description: GitHub Get Project outputRawFormat: json outputParameters: - name: result type: object value: $. - name: updateproject method: PATCH description: GitHub Update Project outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: deleteproject method: DELETE description: GitHub Delete Project outputRawFormat: json outputParameters: - name: result type: object value: $. - name: projects-project_id-collaborators path: /projects/{project_id}/collaborators operations: - name: listprojectcollaborators method: GET description: GitHub List Project Collaborators outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: affiliation in: query type: string description: Filters the collaborators by their affiliation. `outside` means outside collaborators of a project that are not a member of the project's organization. `direct` - name: projects-project_id-collaborators-username path: /projects/{project_id}/collaborators/{username} operations: - name: addprojectcollaborator method: PUT description: GitHub Add Project Collaborator outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: projects-project_id-collaborators-username-permission path: /projects/{project_id}/collaborators/{username}/permission operations: - name: getprojectpermissionforuser method: GET description: GitHub Get Project Permission for User outputRawFormat: json outputParameters: - name: result type: object value: $. - name: projects-project_id-columns path: /projects/{project_id}/columns operations: - name: listprojectcolumns method: GET description: GitHub List Project Columns outputRawFormat: json outputParameters: - name: result type: object value: $. - name: createprojectcolumn method: POST description: GitHub Create Project Column outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: repos-owner-repo-projects path: /repos/{owner}/{repo}/projects operations: - name: listrepositoryprojects method: GET description: GitHub List Repository Projects outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: state in: query type: string description: Indicates the state of the projects to return. - name: createrepositoryproject method: POST description: GitHub Create Repository Project outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: teams-team_id-projects path: /teams/{team_id}/projects operations: - name: listteamprojectslegacy method: GET description: GitHub List Team Projects (legacy) outputRawFormat: json outputParameters: - name: result type: object value: $. - name: teams-team_id-projects-project_id path: /teams/{team_id}/projects/{project_id} operations: - name: checkteampermissionsforprojectlegacy method: GET description: GitHub Check Team Permissions for Project (legacy) outputRawFormat: json outputParameters: - name: result type: object value: $. - name: addorupdateteamprojectpermissionslegacy method: PUT description: GitHub Add or Update Team Project Permissions (legacy) outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: removeprojectfromteamlegacy method: DELETE description: GitHub Remove Project from Team (legacy) outputRawFormat: json outputParameters: - name: result type: object value: $. - name: user-projects path: /user/projects operations: - name: createuserproject method: POST description: GitHub Create User Project outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: users-username-projects path: /users/{username}/projects operations: - name: listuserprojects method: GET description: GitHub List User Projects outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: state in: query type: string description: Indicates the state of the projects to return. authentication: type: bearer token: '{{env.GITHUB_API_KEY}}' exposes: - type: rest namespace: projects-projects-rest port: 8080 description: REST adapter for GitHub Projects API — Projects. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/orgs/{org}/projects name: orgs-org-projects description: REST surface for orgs-org-projects. operations: - method: GET name: listorganizationprojects description: GitHub List Organization Projects call: projects-projects.listorganizationprojects with: state: rest.state outputParameters: - type: object mapping: $. - path: /v1/orgs/{org}/teams/{team-slug}/projects name: orgs-org-teams-team-slug-projects description: REST surface for orgs-org-teams-team_slug-projects. operations: - method: GET name: listteamprojects description: GitHub List Team Projects call: projects-projects.listteamprojects outputParameters: - type: object mapping: $. - path: /v1/orgs/{org}/teams/{team-slug}/projects/{project-id} name: orgs-org-teams-team-slug-projects-project-id description: REST surface for orgs-org-teams-team_slug-projects-project_id. operations: - method: GET name: checkteampermissionsforproject description: GitHub Check Team Permissions for Project call: projects-projects.checkteampermissionsforproject outputParameters: - type: object mapping: $. - method: PUT name: addorupdateteamprojectpermissions description: GitHub Add or Update Team Project Permissions call: projects-projects.addorupdateteamprojectpermissions with: body: rest.body outputParameters: - type: object mapping: $. - method: DELETE name: removeprojectfromteam description: GitHub Remove Project from Team call: projects-projects.removeprojectfromteam outputParameters: - type: object mapping: $. - path: /v1/projects/columns/cards/{card-id} name: projects-columns-cards-card-id description: REST surface for projects-columns-cards-card_id. operations: - method: GET name: getprojectcard description: GitHub Get Project Card call: projects-projects.getprojectcard outputParameters: - type: object mapping: $. - method: PATCH name: updateanexistingprojectcard description: GitHub Update an Existing Project Card call: projects-projects.updateanexistingprojectcard with: body: rest.body outputParameters: - type: object mapping: $. - method: DELETE name: deleteprojectcard description: GitHub Delete Project Card call: projects-projects.deleteprojectcard outputParameters: - type: object mapping: $. - path: /v1/projects/columns/cards/{card-id}/moves name: projects-columns-cards-card-id-moves description: REST surface for projects-columns-cards-card_id-moves. operations: - method: POST name: moveprojectcard description: GitHub Move Project Card call: projects-projects.moveprojectcard with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/projects/columns/{column-id} name: projects-columns-column-id description: REST surface for projects-columns-column_id. operations: - method: GET name: getprojectcolumn description: GitHub Get Project Column call: projects-projects.getprojectcolumn outputParameters: - type: object mapping: $. - method: PATCH name: updateanexistingprojectcolumn description: GitHub Update an Existing Project Column call: projects-projects.updateanexistingprojectcolumn with: body: rest.body outputParameters: - type: object mapping: $. - method: DELETE name: deleteprojectcolumn description: GitHub Delete Project Column call: projects-projects.deleteprojectcolumn outputParameters: - type: object mapping: $. - path: /v1/projects/columns/{column-id}/cards name: projects-columns-column-id-cards description: REST surface for projects-columns-column_id-cards. operations: - method: GET name: listprojectcards description: GitHub List Project Cards call: projects-projects.listprojectcards with: archived_state: rest.archived_state outputParameters: - type: object mapping: $. - method: POST name: createprojectcard description: GitHub Create Project Card call: projects-projects.createprojectcard with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/projects/columns/{column-id}/moves name: projects-columns-column-id-moves description: REST surface for projects-columns-column_id-moves. operations: - method: POST name: moveprojectcolumn description: GitHub Move Project Column call: projects-projects.moveprojectcolumn with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/projects/{project-id} name: projects-project-id description: REST surface for projects-project_id. operations: - method: GET name: getproject description: GitHub Get Project call: projects-projects.getproject outputParameters: - type: object mapping: $. - method: PATCH name: updateproject description: GitHub Update Project call: projects-projects.updateproject with: body: rest.body outputParameters: - type: object mapping: $. - method: DELETE name: deleteproject description: GitHub Delete Project call: projects-projects.deleteproject outputParameters: - type: object mapping: $. - path: /v1/projects/{project-id}/collaborators name: projects-project-id-collaborators description: REST surface for projects-project_id-collaborators. operations: - method: GET name: listprojectcollaborators description: GitHub List Project Collaborators call: projects-projects.listprojectcollaborators with: affiliation: rest.affiliation outputParameters: - type: object mapping: $. - path: /v1/projects/{project-id}/collaborators/{username} name: projects-project-id-collaborators-username description: REST surface for projects-project_id-collaborators-username. operations: - method: PUT name: addprojectcollaborator description: GitHub Add Project Collaborator call: projects-projects.addprojectcollaborator with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/projects/{project-id}/collaborators/{username}/permission name: projects-project-id-collaborators-username-permission description: REST surface for projects-project_id-collaborators-username-permission. operations: - method: GET name: getprojectpermissionforuser description: GitHub Get Project Permission for User call: projects-projects.getprojectpermissionforuser outputParameters: - type: object mapping: $. - path: /v1/projects/{project-id}/columns name: projects-project-id-columns description: REST surface for projects-project_id-columns. operations: - method: GET name: listprojectcolumns description: GitHub List Project Columns call: projects-projects.listprojectcolumns outputParameters: - type: object mapping: $. - method: POST name: createprojectcolumn description: GitHub Create Project Column call: projects-projects.createprojectcolumn with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/repos/{owner}/{repo}/projects name: repos-owner-repo-projects description: REST surface for repos-owner-repo-projects. operations: - method: GET name: listrepositoryprojects description: GitHub List Repository Projects call: projects-projects.listrepositoryprojects with: state: rest.state outputParameters: - type: object mapping: $. - method: POST name: createrepositoryproject description: GitHub Create Repository Project call: projects-projects.createrepositoryproject with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/teams/{team-id}/projects name: teams-team-id-projects description: REST surface for teams-team_id-projects. operations: - method: GET name: listteamprojectslegacy description: GitHub List Team Projects (legacy) call: projects-projects.listteamprojectslegacy outputParameters: - type: object mapping: $. - path: /v1/teams/{team-id}/projects/{project-id} name: teams-team-id-projects-project-id description: REST surface for teams-team_id-projects-project_id. operations: - method: GET name: checkteampermissionsforprojectlegacy description: GitHub Check Team Permissions for Project (legacy) call: projects-projects.checkteampermissionsforprojectlegacy outputParameters: - type: object mapping: $. - method: PUT name: addorupdateteamprojectpermissionslegacy description: GitHub Add or Update Team Project Permissions (legacy) call: projects-projects.addorupdateteamprojectpermissionslegacy with: body: rest.body outputParameters: - type: object mapping: $. - method: DELETE name: removeprojectfromteamlegacy description: GitHub Remove Project from Team (legacy) call: projects-projects.removeprojectfromteamlegacy outputParameters: - type: object mapping: $. - path: /v1/user/projects name: user-projects description: REST surface for user-projects. operations: - method: POST name: createuserproject description: GitHub Create User Project call: projects-projects.createuserproject with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/users/{username}/projects name: users-username-projects description: REST surface for users-username-projects. operations: - method: GET name: listuserprojects description: GitHub List User Projects call: projects-projects.listuserprojects with: state: rest.state outputParameters: - type: object mapping: $. - type: mcp namespace: projects-projects-mcp port: 9090 transport: http description: MCP adapter for GitHub Projects API — Projects. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: github-list-organization-projects description: GitHub List Organization Projects hints: readOnly: true destructive: false idempotent: true call: projects-projects.listorganizationprojects with: state: tools.state outputParameters: - type: object mapping: $. - name: github-list-team-projects description: GitHub List Team Projects hints: readOnly: true destructive: false idempotent: true call: projects-projects.listteamprojects outputParameters: - type: object mapping: $. - name: github-check-team-permissions-project description: GitHub Check Team Permissions for Project hints: readOnly: true destructive: false idempotent: true call: projects-projects.checkteampermissionsforproject outputParameters: - type: object mapping: $. - name: github-add-update-team-project description: GitHub Add or Update Team Project Permissions hints: readOnly: false destructive: false idempotent: true call: projects-projects.addorupdateteamprojectpermissions with: body: tools.body outputParameters: - type: object mapping: $. - name: github-remove-project-team description: GitHub Remove Project from Team hints: readOnly: false destructive: true idempotent: true call: projects-projects.removeprojectfromteam outputParameters: - type: object mapping: $. - name: github-get-project-card description: GitHub Get Project Card hints: readOnly: true destructive: false idempotent: true call: projects-projects.getprojectcard outputParameters: - type: object mapping: $. - name: github-update-existing-project-card description: GitHub Update an Existing Project Card hints: readOnly: false destructive: false idempotent: true call: projects-projects.updateanexistingprojectcard with: body: tools.body outputParameters: - type: object mapping: $. - name: github-delete-project-card description: GitHub Delete Project Card hints: readOnly: false destructive: true idempotent: true call: projects-projects.deleteprojectcard outputParameters: - type: object mapping: $. - name: github-move-project-card description: GitHub Move Project Card hints: readOnly: false destructive: false idempotent: false call: projects-projects.moveprojectcard with: body: tools.body outputParameters: - type: object mapping: $. - name: github-get-project-column description: GitHub Get Project Column hints: readOnly: true destructive: false idempotent: true call: projects-projects.getprojectcolumn outputParameters: - type: object mapping: $. - name: github-update-existing-project-column description: GitHub Update an Existing Project Column hints: readOnly: false destructive: false idempotent: true call: projects-projects.updateanexistingprojectcolumn with: body: tools.body outputParameters: - type: object mapping: $. - name: github-delete-project-column description: GitHub Delete Project Column hints: readOnly: false destructive: true idempotent: true call: projects-projects.deleteprojectcolumn outputParameters: - type: object mapping: $. - name: github-list-project-cards description: GitHub List Project Cards hints: readOnly: true destructive: false idempotent: true call: projects-projects.listprojectcards with: archived_state: tools.archived_state outputParameters: - type: object mapping: $. - name: github-create-project-card description: GitHub Create Project Card hints: readOnly: false destructive: false idempotent: false call: projects-projects.createprojectcard with: body: tools.body outputParameters: - type: object mapping: $. - name: github-move-project-column description: GitHub Move Project Column hints: readOnly: false destructive: false idempotent: false call: projects-projects.moveprojectcolumn with: body: tools.body outputParameters: - type: object mapping: $. - name: github-get-project description: GitHub Get Project hints: readOnly: true destructive: false idempotent: true call: projects-projects.getproject outputParameters: - type: object mapping: $. - name: github-update-project description: GitHub Update Project hints: readOnly: false destructive: false idempotent: true call: projects-projects.updateproject with: body: tools.body outputParameters: - type: object mapping: $. - name: github-delete-project description: GitHub Delete Project hints: readOnly: false destructive: true idempotent: true call: projects-projects.deleteproject outputParameters: - type: object mapping: $. - name: github-list-project-collaborators description: GitHub List Project Collaborators hints: readOnly: true destructive: false idempotent: true call: projects-projects.listprojectcollaborators with: affiliation: tools.affiliation outputParameters: - type: object mapping: $. - name: github-add-project-collaborator description: GitHub Add Project Collaborator hints: readOnly: false destructive: false idempotent: true call: projects-projects.addprojectcollaborator with: body: tools.body outputParameters: - type: object mapping: $. - name: github-get-project-permission-user description: GitHub Get Project Permission for User hints: readOnly: true destructive: false idempotent: true call: projects-projects.getprojectpermissionforuser outputParameters: - type: object mapping: $. - name: github-list-project-columns description: GitHub List Project Columns hints: readOnly: true destructive: false idempotent: true call: projects-projects.listprojectcolumns outputParameters: - type: object mapping: $. - name: github-create-project-column description: GitHub Create Project Column hints: readOnly: false destructive: false idempotent: false call: projects-projects.createprojectcolumn with: body: tools.body outputParameters: - type: object mapping: $. - name: github-list-repository-projects description: GitHub List Repository Projects hints: readOnly: true destructive: false idempotent: true call: projects-projects.listrepositoryprojects with: state: tools.state outputParameters: - type: object mapping: $. - name: github-create-repository-project description: GitHub Create Repository Project hints: readOnly: false destructive: false idempotent: false call: projects-projects.createrepositoryproject with: body: tools.body outputParameters: - type: object mapping: $. - name: github-list-team-projects-legacy description: GitHub List Team Projects (legacy) hints: readOnly: true destructive: false idempotent: true call: projects-projects.listteamprojectslegacy outputParameters: - type: object mapping: $. - name: github-check-team-permissions-project-2 description: GitHub Check Team Permissions for Project (legacy) hints: readOnly: true destructive: false idempotent: true call: projects-projects.checkteampermissionsforprojectlegacy outputParameters: - type: object mapping: $. - name: github-add-update-team-project-2 description: GitHub Add or Update Team Project Permissions (legacy) hints: readOnly: false destructive: false idempotent: true call: projects-projects.addorupdateteamprojectpermissionslegacy with: body: tools.body outputParameters: - type: object mapping: $. - name: github-remove-project-team-legacy description: GitHub Remove Project from Team (legacy) hints: readOnly: false destructive: true idempotent: true call: projects-projects.removeprojectfromteamlegacy outputParameters: - type: object mapping: $. - name: github-create-user-project description: GitHub Create User Project hints: readOnly: false destructive: false idempotent: false call: projects-projects.createuserproject with: body: tools.body outputParameters: - type: object mapping: $. - name: github-list-user-projects description: GitHub List User Projects hints: readOnly: true destructive: false idempotent: true call: projects-projects.listuserprojects with: state: tools.state outputParameters: - type: object mapping: $.