naftiko: 1.0.0-alpha2 info: label: Pipedrive API v1 — Persons description: 'Pipedrive API v1 — Persons. 12 operations. Lead operation: List updates about person field values. Self-contained Naftiko capability covering one Pipedrive business surface.' tags: - Pipedrive - Persons created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: PIPEDRIVE_API_KEY: PIPEDRIVE_API_KEY capability: consumes: - type: http namespace: v1-persons baseUri: https://api.pipedrive.com/v1 description: Pipedrive API v1 — Persons business capability. Self-contained, no shared references. resources: - name: persons-id-changelog path: /persons/{id}/changelog operations: - name: getpersonchangelog method: GET description: List updates about person field values outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: integer description: The ID of the person required: true - name: cursor in: query type: string description: For pagination, the marker (an opaque string value) representing the first item on the next page - name: limit in: query type: integer description: Items shown per page - name: persons-id-files path: /persons/{id}/files operations: - name: getpersonfiles method: GET description: List files attached to a person outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: integer description: The ID of the person required: true - name: start in: query type: integer description: Pagination start - name: limit in: query type: integer description: Items shown per page. Please note that a maximum value of 100 is allowed. - name: sort in: query type: string description: 'Supported fields: `id`, `update_time`' - name: persons-id-flow path: /persons/{id}/flow operations: - name: getpersonupdates method: GET description: List updates about a person outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: integer description: The ID of the person required: true - name: start in: query type: integer description: Pagination start - name: limit in: query type: integer description: Items shown per page - name: all_changes in: query type: string description: Whether to show custom field updates or not. 1 = Include custom field changes. If omitted returns changes without custom field updates. - name: items in: query type: string description: A comma-separated string for filtering out item specific updates. (Possible values - call, activity, plannedActivity, change, note, deal, file, dealChange, pers - name: persons-id-followers path: /persons/{id}/followers operations: - name: getpersonfollowers method: GET description: List followers of a person outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: integer description: The ID of the person required: true - name: addpersonfollower method: POST description: Add a follower to a person outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: integer description: The ID of the person required: true - name: body in: body type: object description: Request body (JSON). required: false - name: persons-id-followers-follower_id path: /persons/{id}/followers/{follower_id} operations: - name: deletepersonfollower method: DELETE description: Delete a follower from a person outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: integer description: The ID of the person required: true - name: follower_id in: path type: integer description: The ID of the relationship between the follower and the person required: true - name: persons-id-mailMessages path: /persons/{id}/mailMessages operations: - name: getpersonmailmessages method: GET description: List mail messages associated with a person outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: integer description: The ID of the person required: true - name: start in: query type: integer description: Pagination start - name: limit in: query type: integer description: Items shown per page - name: persons-id-merge path: /persons/{id}/merge operations: - name: mergepersons method: PUT description: Merge two persons outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: integer description: The ID of the person required: true - name: body in: body type: object description: Request body (JSON). required: false - name: persons-id-permittedUsers path: /persons/{id}/permittedUsers operations: - name: getpersonusers method: GET description: List permitted users outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: integer description: The ID of the person required: true - name: persons-id-picture path: /persons/{id}/picture operations: - name: deletepersonpicture method: DELETE description: Delete person picture outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: integer description: The ID of the person required: true - name: addpersonpicture method: POST description: Add person picture outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: integer description: The ID of the person required: true - name: body in: body type: object description: Request body (JSON). required: false - name: persons-id-products path: /persons/{id}/products operations: - name: getpersonproducts method: GET description: List products associated with a person outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: integer description: The ID of the person required: true - name: start in: query type: integer description: Pagination start - name: limit in: query type: integer description: Items shown per page authentication: type: bearer token: '{{env.PIPEDRIVE_API_KEY}}' exposes: - type: rest namespace: v1-persons-rest port: 8080 description: REST adapter for Pipedrive API v1 — Persons. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/persons/{id}/changelog name: persons-id-changelog description: REST surface for persons-id-changelog. operations: - method: GET name: getpersonchangelog description: List updates about person field values call: v1-persons.getpersonchangelog with: id: rest.id cursor: rest.cursor limit: rest.limit outputParameters: - type: object mapping: $. - path: /v1/persons/{id}/files name: persons-id-files description: REST surface for persons-id-files. operations: - method: GET name: getpersonfiles description: List files attached to a person call: v1-persons.getpersonfiles with: id: rest.id start: rest.start limit: rest.limit sort: rest.sort outputParameters: - type: object mapping: $. - path: /v1/persons/{id}/flow name: persons-id-flow description: REST surface for persons-id-flow. operations: - method: GET name: getpersonupdates description: List updates about a person call: v1-persons.getpersonupdates with: id: rest.id start: rest.start limit: rest.limit all_changes: rest.all_changes items: rest.items outputParameters: - type: object mapping: $. - path: /v1/persons/{id}/followers name: persons-id-followers description: REST surface for persons-id-followers. operations: - method: GET name: getpersonfollowers description: List followers of a person call: v1-persons.getpersonfollowers with: id: rest.id outputParameters: - type: object mapping: $. - method: POST name: addpersonfollower description: Add a follower to a person call: v1-persons.addpersonfollower with: id: rest.id body: rest.body outputParameters: - type: object mapping: $. - path: /v1/persons/{id}/followers/{follower-id} name: persons-id-followers-follower-id description: REST surface for persons-id-followers-follower_id. operations: - method: DELETE name: deletepersonfollower description: Delete a follower from a person call: v1-persons.deletepersonfollower with: id: rest.id follower_id: rest.follower_id outputParameters: - type: object mapping: $. - path: /v1/persons/{id}/mailmessages name: persons-id-mailmessages description: REST surface for persons-id-mailMessages. operations: - method: GET name: getpersonmailmessages description: List mail messages associated with a person call: v1-persons.getpersonmailmessages with: id: rest.id start: rest.start limit: rest.limit outputParameters: - type: object mapping: $. - path: /v1/persons/{id}/merge name: persons-id-merge description: REST surface for persons-id-merge. operations: - method: PUT name: mergepersons description: Merge two persons call: v1-persons.mergepersons with: id: rest.id body: rest.body outputParameters: - type: object mapping: $. - path: /v1/persons/{id}/permittedusers name: persons-id-permittedusers description: REST surface for persons-id-permittedUsers. operations: - method: GET name: getpersonusers description: List permitted users call: v1-persons.getpersonusers with: id: rest.id outputParameters: - type: object mapping: $. - path: /v1/persons/{id}/picture name: persons-id-picture description: REST surface for persons-id-picture. operations: - method: DELETE name: deletepersonpicture description: Delete person picture call: v1-persons.deletepersonpicture with: id: rest.id outputParameters: - type: object mapping: $. - method: POST name: addpersonpicture description: Add person picture call: v1-persons.addpersonpicture with: id: rest.id body: rest.body outputParameters: - type: object mapping: $. - path: /v1/persons/{id}/products name: persons-id-products description: REST surface for persons-id-products. operations: - method: GET name: getpersonproducts description: List products associated with a person call: v1-persons.getpersonproducts with: id: rest.id start: rest.start limit: rest.limit outputParameters: - type: object mapping: $. - type: mcp namespace: v1-persons-mcp port: 9090 transport: http description: MCP adapter for Pipedrive API v1 — Persons. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: list-updates-about-person-field description: List updates about person field values hints: readOnly: true destructive: false idempotent: true call: v1-persons.getpersonchangelog with: id: tools.id cursor: tools.cursor limit: tools.limit outputParameters: - type: object mapping: $. - name: list-files-attached-person description: List files attached to a person hints: readOnly: true destructive: false idempotent: true call: v1-persons.getpersonfiles with: id: tools.id start: tools.start limit: tools.limit sort: tools.sort outputParameters: - type: object mapping: $. - name: list-updates-about-person description: List updates about a person hints: readOnly: true destructive: false idempotent: true call: v1-persons.getpersonupdates with: id: tools.id start: tools.start limit: tools.limit all_changes: tools.all_changes items: tools.items outputParameters: - type: object mapping: $. - name: list-followers-person description: List followers of a person hints: readOnly: true destructive: false idempotent: true call: v1-persons.getpersonfollowers with: id: tools.id outputParameters: - type: object mapping: $. - name: add-follower-person description: Add a follower to a person hints: readOnly: false destructive: false idempotent: false call: v1-persons.addpersonfollower with: id: tools.id body: tools.body outputParameters: - type: object mapping: $. - name: delete-follower-person description: Delete a follower from a person hints: readOnly: false destructive: true idempotent: true call: v1-persons.deletepersonfollower with: id: tools.id follower_id: tools.follower_id outputParameters: - type: object mapping: $. - name: list-mail-messages-associated-person description: List mail messages associated with a person hints: readOnly: true destructive: false idempotent: true call: v1-persons.getpersonmailmessages with: id: tools.id start: tools.start limit: tools.limit outputParameters: - type: object mapping: $. - name: merge-two-persons description: Merge two persons hints: readOnly: false destructive: false idempotent: true call: v1-persons.mergepersons with: id: tools.id body: tools.body outputParameters: - type: object mapping: $. - name: list-permitted-users description: List permitted users hints: readOnly: true destructive: false idempotent: true call: v1-persons.getpersonusers with: id: tools.id outputParameters: - type: object mapping: $. - name: delete-person-picture description: Delete person picture hints: readOnly: false destructive: true idempotent: true call: v1-persons.deletepersonpicture with: id: tools.id outputParameters: - type: object mapping: $. - name: add-person-picture description: Add person picture hints: readOnly: false destructive: false idempotent: false call: v1-persons.addpersonpicture with: id: tools.id body: tools.body outputParameters: - type: object mapping: $. - name: list-products-associated-person description: List products associated with a person hints: readOnly: true destructive: false idempotent: true call: v1-persons.getpersonproducts with: id: tools.id start: tools.start limit: tools.limit outputParameters: - type: object mapping: $.