Basecamp · Capability

Basecamp API — People

Basecamp API — People. 7 operations. Lead operation: List pingable people. Self-contained Naftiko capability covering one Basecamp business surface.

Run with Naftiko BasecampPeople

What You Can Do

GET
Listpingablepeople — List pingable people
/v1/circles/people-json
GET
Getmyprofile — Get my profile
/v1/my/profile-json
PUT
Updatemyprofile — Update my profile
/v1/my/profile-json
GET
Listpeople — List all people
/v1/people-json
GET
Getperson — Get a person
/v1/people/personid-json
GET
Listprojectpeople — List people on a project
/v1/projects/{projectid}/people-json
PUT
Updateprojectaccess — Update project access
/v1/projects/{projectid}/people/users-json

MCP Tools

list-pingable-people

List pingable people

read-only idempotent
get-my-profile

Get my profile

read-only idempotent
update-my-profile

Update my profile

idempotent
list-all-people

List all people

read-only idempotent
get-person

Get a person

read-only idempotent
list-people-project

List people on a project

read-only idempotent
update-project-access

Update project access

idempotent

Capability Spec

basecamp-people.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Basecamp API — People
  description: 'Basecamp API — People. 7 operations. Lead operation: List pingable people. Self-contained Naftiko capability
    covering one Basecamp business surface.'
  tags:
  - Basecamp
  - People
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    BASECAMP_API_KEY: BASECAMP_API_KEY
capability:
  consumes:
  - type: http
    namespace: basecamp-people
    baseUri: https://3.basecampapi.com/{accountId}
    description: Basecamp API — People business capability. Self-contained, no shared references.
    resources:
    - name: circles-people.json
      path: /circles/people.json
      operations:
      - name: listpingablepeople
        method: GET
        description: List pingable people
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: my-profile.json
      path: /my/profile.json
      operations:
      - name: getmyprofile
        method: GET
        description: Get my profile
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: updatemyprofile
        method: PUT
        description: Update my profile
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: people.json
      path: /people.json
      operations:
      - name: listpeople
        method: GET
        description: List all people
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: people-personId}.json
      path: /people/{personId}.json
      operations:
      - name: getperson
        method: GET
        description: Get a person
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: projects-projectId-people.json
      path: /projects/{projectId}/people.json
      operations:
      - name: listprojectpeople
        method: GET
        description: List people on a project
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: projects-projectId-people-users.json
      path: /projects/{projectId}/people/users.json
      operations:
      - name: updateprojectaccess
        method: PUT
        description: Update project access
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    authentication:
      type: bearer
      token: '{{env.BASECAMP_API_KEY}}'
  exposes:
  - type: rest
    namespace: basecamp-people-rest
    port: 8080
    description: REST adapter for Basecamp API — People. One Spectral-compliant resource per consumed operation, prefixed
      with /v1.
    resources:
    - path: /v1/circles/people-json
      name: circles-people-json
      description: REST surface for circles-people.json.
      operations:
      - method: GET
        name: listpingablepeople
        description: List pingable people
        call: basecamp-people.listpingablepeople
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/my/profile-json
      name: my-profile-json
      description: REST surface for my-profile.json.
      operations:
      - method: GET
        name: getmyprofile
        description: Get my profile
        call: basecamp-people.getmyprofile
        outputParameters:
        - type: object
          mapping: $.
      - method: PUT
        name: updatemyprofile
        description: Update my profile
        call: basecamp-people.updatemyprofile
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/people-json
      name: people-json
      description: REST surface for people.json.
      operations:
      - method: GET
        name: listpeople
        description: List all people
        call: basecamp-people.listpeople
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/people/personid-json
      name: people-personid-json
      description: REST surface for people-personId}.json.
      operations:
      - method: GET
        name: getperson
        description: Get a person
        call: basecamp-people.getperson
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/projects/{projectid}/people-json
      name: projects-projectid-people-json
      description: REST surface for projects-projectId-people.json.
      operations:
      - method: GET
        name: listprojectpeople
        description: List people on a project
        call: basecamp-people.listprojectpeople
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/projects/{projectid}/people/users-json
      name: projects-projectid-people-users-json
      description: REST surface for projects-projectId-people-users.json.
      operations:
      - method: PUT
        name: updateprojectaccess
        description: Update project access
        call: basecamp-people.updateprojectaccess
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: basecamp-people-mcp
    port: 9090
    transport: http
    description: MCP adapter for Basecamp API — People. One tool per consumed operation, routed inline through this capability's
      consumes block.
    tools:
    - name: list-pingable-people
      description: List pingable people
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: basecamp-people.listpingablepeople
      outputParameters:
      - type: object
        mapping: $.
    - name: get-my-profile
      description: Get my profile
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: basecamp-people.getmyprofile
      outputParameters:
      - type: object
        mapping: $.
    - name: update-my-profile
      description: Update my profile
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: basecamp-people.updatemyprofile
      with:
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: list-all-people
      description: List all people
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: basecamp-people.listpeople
      outputParameters:
      - type: object
        mapping: $.
    - name: get-person
      description: Get a person
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: basecamp-people.getperson
      outputParameters:
      - type: object
        mapping: $.
    - name: list-people-project
      description: List people on a project
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: basecamp-people.listprojectpeople
      outputParameters:
      - type: object
        mapping: $.
    - name: update-project-access
      description: Update project access
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: basecamp-people.updateprojectaccess
      with:
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.