Convoy · Capability

Convoy API — Sources

Convoy webhooks gateway — Sources. 5 operations. Lead operation: List all sources. Self-contained Naftiko capability covering one Convoy business surface.

Run with Naftiko ConvoyWebhooksSources

What You Can Do

GET
Loadsourcespaged — List all sources
/v1/projects/{project-id}/sources
POST
Createsource — Create a source
/v1/projects/{project-id}/sources
DELETE
Deletesource — Delete a source
/v1/projects/{project-id}/sources/{source-id}
GET
Getsource — Retrieve a source
/v1/projects/{project-id}/sources/{source-id}
PUT
Updatesource — Update a source
/v1/projects/{project-id}/sources/{source-id}

MCP Tools

list-sources

List all sources

read-only idempotent
create-source

Create a source

delete-source

Delete a source

idempotent
retrieve-source

Retrieve a source

read-only idempotent
update-source

Update a source

idempotent

Capability Spec

convoy-sources.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: "Convoy API \u2014 Sources"
  description: "Convoy webhooks gateway \u2014 Sources. 5 operations. Lead operation: List all sources. Self-contained Naftiko\
    \ capability covering one Convoy business surface."
  tags:
  - Convoy
  - Webhooks
  - Sources
  created: '2026-05-22'
  modified: '2026-05-22'
binds:
- namespace: env
  keys:
    CONVOY_API_KEY: CONVOY_API_KEY
capability:
  consumes:
  - type: http
    namespace: convoy-sources
    baseUri: https://us.getconvoy.cloud/api
    description: "Convoy API \u2014 Sources business capability. Self-contained, no shared references."
    authentication:
      type: bearer
      token: '{{env.CONVOY_API_KEY}}'
    resources:
    - name: v1-projects-project-id-sources
      path: /v1/projects/{projectID}/sources
      operations:
      - name: LoadSourcesPaged
        method: GET
        description: List all sources
        inputParameters:
        - name: projectID
          in: path
          type: string
          required: true
          description: Project ID
        - name: direction
          in: query
          type: string
          required: false
          description: query parameter direction
        - name: next_page_cursor
          in: query
          type: string
          required: false
          description: A pagination cursor to fetch the next page of a list
        - name: perPage
          in: query
          type: integer
          required: false
          description: The number of items to return per page
        - name: prev_page_cursor
          in: query
          type: string
          required: false
          description: A pagination cursor to fetch the previous page of a list
        - name: provider
          in: query
          type: string
          required: false
          description: The custom source provider e.g. twitter, shopify
        - name: sort
          in: query
          type: string
          required: false
          description: Sort order, values are `ASC` or `DESC`, defaults to `DESC`
        - name: type
          in: query
          type: string
          required: false
          description: The source type e.g. http, pub_sub
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: CreateSource
        method: POST
        description: Create a source
        inputParameters:
        - name: projectID
          in: path
          type: string
          required: true
          description: Project ID
        - name: body
          in: body
          type: object
          required: true
          description: Request body payload.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: v1-projects-project-id-sources-source-id
      path: /v1/projects/{projectID}/sources/{sourceID}
      operations:
      - name: DeleteSource
        method: DELETE
        description: Delete a source
        inputParameters:
        - name: projectID
          in: path
          type: string
          required: true
          description: Project ID
        - name: sourceID
          in: path
          type: string
          required: true
          description: source id
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: GetSource
        method: GET
        description: Retrieve a source
        inputParameters:
        - name: projectID
          in: path
          type: string
          required: true
          description: Project ID
        - name: sourceID
          in: path
          type: string
          required: true
          description: Source ID
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: UpdateSource
        method: PUT
        description: Update a source
        inputParameters:
        - name: projectID
          in: path
          type: string
          required: true
          description: Project ID
        - name: sourceID
          in: path
          type: string
          required: true
          description: source id
        - name: body
          in: body
          type: object
          required: true
          description: Request body payload.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
  exposes:
  - type: rest
    namespace: convoy-sources-rest
    port: 8080
    description: "REST adapter for Convoy API \u2014 Sources. One Spectral-compliant resource per consumed operation, prefixed\
      \ with /v1."
    resources:
    - path: /v1/projects/{project-id}/sources
      name: v1-projects-project-id-sources
      description: REST surface for /v1/projects/{project-id}/sources.
      operations:
      - method: GET
        name: LoadSourcesPaged
        description: List all sources
        call: convoy-sources.LoadSourcesPaged
        with:
          projectID: rest.projectID
          direction: rest.direction
          next_page_cursor: rest.next_page_cursor
          perPage: rest.perPage
          prev_page_cursor: rest.prev_page_cursor
          provider: rest.provider
          sort: rest.sort
          type: rest.type
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: CreateSource
        description: Create a source
        call: convoy-sources.CreateSource
        with:
          projectID: rest.projectID
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/projects/{project-id}/sources/{source-id}
      name: v1-projects-project-id-sources-source-id
      description: REST surface for /v1/projects/{project-id}/sources/{source-id}.
      operations:
      - method: DELETE
        name: DeleteSource
        description: Delete a source
        call: convoy-sources.DeleteSource
        with:
          projectID: rest.projectID
          sourceID: rest.sourceID
        outputParameters:
        - type: object
          mapping: $.
      - method: GET
        name: GetSource
        description: Retrieve a source
        call: convoy-sources.GetSource
        with:
          projectID: rest.projectID
          sourceID: rest.sourceID
        outputParameters:
        - type: object
          mapping: $.
      - method: PUT
        name: UpdateSource
        description: Update a source
        call: convoy-sources.UpdateSource
        with:
          projectID: rest.projectID
          sourceID: rest.sourceID
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: convoy-sources-mcp
    port: 9090
    transport: http
    description: "MCP adapter for Convoy API \u2014 Sources. One tool per consumed operation, routed inline through this capability's\
      \ consumes block."
    tools:
    - name: list-sources
      description: List all sources
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: convoy-sources.LoadSourcesPaged
      with:
        projectID: tools.projectID
        direction: tools.direction
        next_page_cursor: tools.next_page_cursor
        perPage: tools.perPage
        prev_page_cursor: tools.prev_page_cursor
        provider: tools.provider
        sort: tools.sort
        type: tools.type
      outputParameters:
      - type: object
        mapping: $.
    - name: create-source
      description: Create a source
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: convoy-sources.CreateSource
      with:
        projectID: tools.projectID
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: delete-source
      description: Delete a source
      hints:
        readOnly: false
        destructive: true
        idempotent: true
      call: convoy-sources.DeleteSource
      with:
        projectID: tools.projectID
        sourceID: tools.sourceID
      outputParameters:
      - type: object
        mapping: $.
    - name: retrieve-source
      description: Retrieve a source
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: convoy-sources.GetSource
      with:
        projectID: tools.projectID
        sourceID: tools.sourceID
      outputParameters:
      - type: object
        mapping: $.
    - name: update-source
      description: Update a source
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: convoy-sources.UpdateSource
      with:
        projectID: tools.projectID
        sourceID: tools.sourceID
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.