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.
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
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: $.