Convoy · Capability
Convoy API — Portal Links
Convoy webhooks gateway — Portal Links. 6 operations. Lead operation: List all portal links. Self-contained Naftiko capability covering one Convoy business surface.
What You Can Do
GET
Loadportallinkspaged
— List all portal links
/v1/projects/{project-id}/portal-links
POST
Createportallink
— Create a portal link
/v1/projects/{project-id}/portal-links
GET
Getportallink
— Retrieve a portal link
/v1/projects/{project-id}/portal-links/{portal-link-id}
PUT
Updateportallink
— Update a portal link
/v1/projects/{project-id}/portal-links/{portal-link-id}
GET
Refreshportallinkauthtoken
— Get a portal link auth token
/v1/projects/{project-id}/portal-links/{portal-link-id}/refresh_token
PUT
Revokeportallink
— Revoke a portal link
/v1/projects/{project-id}/portal-links/{portal-link-id}/revoke
MCP Tools
list-portal-links
List all portal links
read-only
idempotent
create-portal-link
Create a portal link
retrieve-portal-link
Retrieve a portal link
read-only
idempotent
update-portal-link
Update a portal link
idempotent
get-portal-link-auth-token
Get a portal link auth token
read-only
idempotent
revoke-portal-link
Revoke a portal link
idempotent
Capability Spec
naftiko: 1.0.0-alpha2
info:
label: "Convoy API \u2014 Portal Links"
description: "Convoy webhooks gateway \u2014 Portal Links. 6 operations. Lead operation: List all portal links. Self-contained\
\ Naftiko capability covering one Convoy business surface."
tags:
- Convoy
- Webhooks
- Portal Links
created: '2026-05-22'
modified: '2026-05-22'
binds:
- namespace: env
keys:
CONVOY_API_KEY: CONVOY_API_KEY
capability:
consumes:
- type: http
namespace: convoy-portal-links
baseUri: https://us.getconvoy.cloud/api
description: "Convoy API \u2014 Portal Links business capability. Self-contained, no shared references."
authentication:
type: bearer
token: '{{env.CONVOY_API_KEY}}'
resources:
- name: v1-projects-project-id-portal-links
path: /v1/projects/{projectID}/portal-links
operations:
- name: LoadPortalLinksPaged
method: GET
description: List all portal links
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: ownerId
in: query
type: string
required: false
description: The owner ID of the endpoint
- 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: q
in: query
type: string
required: false
description: The name of the endpoint
- name: sort
in: query
type: string
required: false
description: Sort order, values are `ASC` or `DESC`, defaults to `DESC`
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: CreatePortalLink
method: POST
description: Create a portal link
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-portal-links-portal-link-id
path: /v1/projects/{projectID}/portal-links/{portalLinkID}
operations:
- name: GetPortalLink
method: GET
description: Retrieve a portal link
inputParameters:
- name: projectID
in: path
type: string
required: true
description: Project ID
- name: portalLinkID
in: path
type: string
required: true
description: portal link id
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: UpdatePortalLink
method: PUT
description: Update a portal link
inputParameters:
- name: projectID
in: path
type: string
required: true
description: Project ID
- name: portalLinkID
in: path
type: string
required: true
description: portal link 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-portal-links-portal-link-id-refresh-token
path: /v1/projects/{projectID}/portal-links/{portalLinkID}/refresh_token
operations:
- name: RefreshPortalLinkAuthToken
method: GET
description: Get a portal link auth token
inputParameters:
- name: projectID
in: path
type: string
required: true
description: Project ID
- name: portalLinkID
in: path
type: string
required: true
description: portal link id
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: v1-projects-project-id-portal-links-portal-link-id-revoke
path: /v1/projects/{projectID}/portal-links/{portalLinkID}/revoke
operations:
- name: RevokePortalLink
method: PUT
description: Revoke a portal link
inputParameters:
- name: projectID
in: path
type: string
required: true
description: Project ID
- name: portalLinkID
in: path
type: string
required: true
description: portal link id
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
exposes:
- type: rest
namespace: convoy-portal-links-rest
port: 8080
description: "REST adapter for Convoy API \u2014 Portal Links. One Spectral-compliant resource per consumed operation,\
\ prefixed with /v1."
resources:
- path: /v1/projects/{project-id}/portal-links
name: v1-projects-project-id-portal-links
description: REST surface for /v1/projects/{project-id}/portal-links.
operations:
- method: GET
name: LoadPortalLinksPaged
description: List all portal links
call: convoy-portal-links.LoadPortalLinksPaged
with:
projectID: rest.projectID
direction: rest.direction
next_page_cursor: rest.next_page_cursor
ownerId: rest.ownerId
perPage: rest.perPage
prev_page_cursor: rest.prev_page_cursor
q: rest.q
sort: rest.sort
outputParameters:
- type: object
mapping: $.
- method: POST
name: CreatePortalLink
description: Create a portal link
call: convoy-portal-links.CreatePortalLink
with:
projectID: rest.projectID
body: rest.body
outputParameters:
- type: object
mapping: $.
- path: /v1/projects/{project-id}/portal-links/{portal-link-id}
name: v1-projects-project-id-portal-links-portal-link-id
description: REST surface for /v1/projects/{project-id}/portal-links/{portal-link-id}.
operations:
- method: GET
name: GetPortalLink
description: Retrieve a portal link
call: convoy-portal-links.GetPortalLink
with:
projectID: rest.projectID
portalLinkID: rest.portalLinkID
outputParameters:
- type: object
mapping: $.
- method: PUT
name: UpdatePortalLink
description: Update a portal link
call: convoy-portal-links.UpdatePortalLink
with:
projectID: rest.projectID
portalLinkID: rest.portalLinkID
body: rest.body
outputParameters:
- type: object
mapping: $.
- path: /v1/projects/{project-id}/portal-links/{portal-link-id}/refresh_token
name: v1-projects-project-id-portal-links-portal-link-id-refresh-token
description: REST surface for /v1/projects/{project-id}/portal-links/{portal-link-id}/refresh_token.
operations:
- method: GET
name: RefreshPortalLinkAuthToken
description: Get a portal link auth token
call: convoy-portal-links.RefreshPortalLinkAuthToken
with:
projectID: rest.projectID
portalLinkID: rest.portalLinkID
outputParameters:
- type: object
mapping: $.
- path: /v1/projects/{project-id}/portal-links/{portal-link-id}/revoke
name: v1-projects-project-id-portal-links-portal-link-id-revoke
description: REST surface for /v1/projects/{project-id}/portal-links/{portal-link-id}/revoke.
operations:
- method: PUT
name: RevokePortalLink
description: Revoke a portal link
call: convoy-portal-links.RevokePortalLink
with:
projectID: rest.projectID
portalLinkID: rest.portalLinkID
outputParameters:
- type: object
mapping: $.
- type: mcp
namespace: convoy-portal-links-mcp
port: 9090
transport: http
description: "MCP adapter for Convoy API \u2014 Portal Links. One tool per consumed operation, routed inline through this\
\ capability's consumes block."
tools:
- name: list-portal-links
description: List all portal links
hints:
readOnly: true
destructive: false
idempotent: true
call: convoy-portal-links.LoadPortalLinksPaged
with:
projectID: tools.projectID
direction: tools.direction
next_page_cursor: tools.next_page_cursor
ownerId: tools.ownerId
perPage: tools.perPage
prev_page_cursor: tools.prev_page_cursor
q: tools.q
sort: tools.sort
outputParameters:
- type: object
mapping: $.
- name: create-portal-link
description: Create a portal link
hints:
readOnly: false
destructive: false
idempotent: false
call: convoy-portal-links.CreatePortalLink
with:
projectID: tools.projectID
body: tools.body
outputParameters:
- type: object
mapping: $.
- name: retrieve-portal-link
description: Retrieve a portal link
hints:
readOnly: true
destructive: false
idempotent: true
call: convoy-portal-links.GetPortalLink
with:
projectID: tools.projectID
portalLinkID: tools.portalLinkID
outputParameters:
- type: object
mapping: $.
- name: update-portal-link
description: Update a portal link
hints:
readOnly: false
destructive: false
idempotent: true
call: convoy-portal-links.UpdatePortalLink
with:
projectID: tools.projectID
portalLinkID: tools.portalLinkID
body: tools.body
outputParameters:
- type: object
mapping: $.
- name: get-portal-link-auth-token
description: Get a portal link auth token
hints:
readOnly: true
destructive: false
idempotent: true
call: convoy-portal-links.RefreshPortalLinkAuthToken
with:
projectID: tools.projectID
portalLinkID: tools.portalLinkID
outputParameters:
- type: object
mapping: $.
- name: revoke-portal-link
description: Revoke a portal link
hints:
readOnly: false
destructive: false
idempotent: true
call: convoy-portal-links.RevokePortalLink
with:
projectID: tools.projectID
portalLinkID: tools.portalLinkID
outputParameters:
- type: object
mapping: $.