openapi: 3.0.3
info:
title: Pipedream MCP Server Accounts Projects API
version: v3
description: 'Pipedream''s Model Context Protocol (MCP) server exposes 2,800+ integrated apps and 10,000+ tools as a hosted MCP endpoint. The server supports both SSE and streamable HTTP transports dynamically with no client configuration required. Authentication uses OAuth 2.0 client credentials; per-request context is supplied via x-pd-project-id, x-pd-environment, x-pd-external-user-id, and x-pd-app-slug headers. Source: https://pipedream.com/docs/connect/mcp/developers'
contact:
name: Pipedream
url: https://pipedream.com/docs/connect/mcp
license:
name: Proprietary
url: https://pipedream.com/terms
servers:
- url: https://remote.mcp.pipedream.net/v3
description: Hosted Pipedream MCP server
security:
- bearerAuth: []
tags:
- name: Projects
paths:
/v1/connect/projects:
get:
summary: List Projects
description: List the projects that are available to the authenticated Connect client
operationId: listProjects
x-fern-sdk-group-name: projects
x-fern-sdk-method-name: list
x-fern-pagination:
cursor: $request.after
next_cursor: $response.page_info.end_cursor
results: $response.data
parameters:
- name: after
in: query
required: false
description: The cursor to start from for pagination
schema:
type: string
- name: before
in: query
required: false
description: The cursor to end before for pagination
schema:
type: string
- name: limit
in: query
required: false
description: The maximum number of results to return
schema:
type: integer
- name: q
in: query
required: false
description: A search query to filter the projects
schema:
type: string
security:
- OAuth2: []
responses:
'200':
description: projects listed
content:
application/json:
schema:
$ref: '#/components/schemas/ListProjectsResponse'
'404':
description: missing OAuth token
'429':
description: too many requests
headers:
Retry-After:
description: Number of seconds until the rate limit resets
schema:
type: integer
X-RateLimit-Limit:
schema:
type: integer
description: The rate limit threshold
X-RateLimit-Remaining:
schema:
type: integer
description: Number of requests remaining (always 0 when throttled)
X-RateLimit-Reset:
schema:
type: integer
description: Unix timestamp when the rate limit resets
content:
application/json:
schema:
type: object
properties:
error:
type: string
example: Throttled
x-codeSamples:
- lang: java
label: Java SDK
source: "package com.example.usage;\n\nimport com.pipedream.api.BaseClient;\nimport com.pipedream.api.resources.projects.requests.ProjectsListRequest;\n\npublic class Example {\n public static void main(String[] args) {\n BaseClient client = BaseClient\n .builder()\n .clientId(\"<clientId>\")\n .clientSecret(\"<clientSecret>\")\n .build();\n\n client.projects().list(\n ProjectsListRequest\n .builder()\n .after(\"after\")\n .before(\"before\")\n .limit(1)\n .q(\"q\")\n .build()\n );\n }\n}\n"
- lang: typescript
label: TypeScript SDK
source: "import { PipedreamClient } from \"@pipedream/sdk\";\n\nconst client = new PipedreamClient({\n clientId: \"YOUR_CLIENT_ID\",\n clientSecret: \"YOUR_CLIENT_SECRET\",\n projectEnvironment: \"YOUR_PROJECT_ENVIRONMENT\",\n projectId: \"YOUR_PROJECT_ID\"\n});\nconst response = await client.projects.list({\n after: \"after\",\n before: \"before\",\n limit: 1,\n q: \"q\"\n});\nfor await (const item of response) {\n console.log(item);\n}\n\n// Or you can manually iterate page-by-page\nlet page = await client.projects.list({\n after: \"after\",\n before: \"before\",\n limit: 1,\n q: \"q\"\n});\nwhile (page.hasNextPage()) {\n page = page.getNextPage();\n}\n"
- lang: python
label: Python SDK
source: "from pipedream import Pipedream\n\nclient = Pipedream(\n project_id=\"YOUR_PROJECT_ID\",\n project_environment=\"YOUR_PROJECT_ENVIRONMENT\",\n client_id=\"YOUR_CLIENT_ID\",\n client_secret=\"YOUR_CLIENT_SECRET\",\n)\nresponse = client.projects.list(\n after=\"after\",\n before=\"before\",\n limit=1,\n q=\"q\",\n)\nfor item in response:\n yield item\n# alternatively, you can paginate page-by-page\nfor page in response.iter_pages():\n yield page\n"
tags:
- Projects
post:
summary: Create Project
description: Create a new project for the authenticated workspace
operationId: createProject
x-fern-sdk-group-name: projects
x-fern-sdk-method-name: create
security:
- OAuth2: []
parameters: []
responses:
'201':
description: project created
content:
application/json:
schema:
$ref: '#/components/schemas/Project'
'429':
description: too many requests
headers:
Retry-After:
description: Number of seconds until the rate limit resets
schema:
type: integer
X-RateLimit-Limit:
schema:
type: integer
description: The rate limit threshold
X-RateLimit-Remaining:
schema:
type: integer
description: Number of requests remaining (always 0 when throttled)
X-RateLimit-Reset:
schema:
type: integer
description: Unix timestamp when the rate limit resets
content:
application/json:
schema:
type: object
properties:
error:
type: string
example: Throttled
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateProjectOpts'
x-codeSamples:
- lang: java
label: Java SDK
source: "package com.example.usage;\n\nimport com.pipedream.api.BaseClient;\nimport com.pipedream.api.resources.projects.requests.CreateProjectOpts;\n\npublic class Example {\n public static void main(String[] args) {\n BaseClient client = BaseClient\n .builder()\n .clientId(\"<clientId>\")\n .clientSecret(\"<clientSecret>\")\n .build();\n\n client.projects().create(\n CreateProjectOpts\n .builder()\n .name(\"name\")\n .build()\n );\n }\n}\n"
- lang: typescript
label: TypeScript SDK
source: "import { PipedreamClient } from \"@pipedream/sdk\";\n\nconst client = new PipedreamClient({\n clientId: \"YOUR_CLIENT_ID\",\n clientSecret: \"YOUR_CLIENT_SECRET\",\n projectEnvironment: \"YOUR_PROJECT_ENVIRONMENT\",\n projectId: \"YOUR_PROJECT_ID\"\n});\nawait client.projects.create({\n name: \"name\"\n});\n"
- lang: python
label: Python SDK
source: "from pipedream import Pipedream\n\nclient = Pipedream(\n project_id=\"YOUR_PROJECT_ID\",\n project_environment=\"YOUR_PROJECT_ENVIRONMENT\",\n client_id=\"YOUR_CLIENT_ID\",\n client_secret=\"YOUR_CLIENT_SECRET\",\n)\nclient.projects.create(\n name=\"name\",\n)\n"
tags:
- Projects
/v1/connect/projects/{project_id}:
parameters:
- name: project_id
in: path
required: true
description: The project ID, which starts with `proj_`.
schema:
type: string
pattern: ^proj_[a-zA-Z0-9]+$
get:
summary: Retrieve Project
description: Get the project details for a specific project
operationId: retrieveProject
x-fern-sdk-group-name: projects
x-fern-sdk-method-name: retrieve
security:
- OAuth2: []
responses:
'200':
description: project retrieved
content:
application/json:
schema:
$ref: '#/components/schemas/Project'
'429':
description: too many requests
headers:
Retry-After:
description: Number of seconds until the rate limit resets
schema:
type: integer
X-RateLimit-Limit:
schema:
type: integer
description: The rate limit threshold
X-RateLimit-Remaining:
schema:
type: integer
description: Number of requests remaining (always 0 when throttled)
X-RateLimit-Reset:
schema:
type: integer
description: Unix timestamp when the rate limit resets
content:
application/json:
schema:
type: object
properties:
error:
type: string
example: Throttled
x-codeSamples:
- lang: java
label: Java SDK
source: "package com.example.usage;\n\nimport com.pipedream.api.BaseClient;\n\npublic class Example {\n public static void main(String[] args) {\n BaseClient client = BaseClient\n .builder()\n .clientId(\"<clientId>\")\n .clientSecret(\"<clientSecret>\")\n .build();\n\n client.projects().retrieve(\"project_id\");\n }\n}\n"
- lang: typescript
label: TypeScript SDK
source: "import { PipedreamClient } from \"@pipedream/sdk\";\n\nconst client = new PipedreamClient({\n clientId: \"YOUR_CLIENT_ID\",\n clientSecret: \"YOUR_CLIENT_SECRET\",\n projectEnvironment: \"YOUR_PROJECT_ENVIRONMENT\",\n projectId: \"YOUR_PROJECT_ID\"\n});\nawait client.projects.retrieve(\"project_id\");\n"
- lang: python
label: Python SDK
source: "from pipedream import Pipedream\n\nclient = Pipedream(\n project_id=\"YOUR_PROJECT_ID\",\n project_environment=\"YOUR_PROJECT_ENVIRONMENT\",\n client_id=\"YOUR_CLIENT_ID\",\n client_secret=\"YOUR_CLIENT_SECRET\",\n)\nclient.projects.retrieve(\n project_id=\"project_id\",\n)\n"
tags:
- Projects
delete:
summary: Delete Project
description: Delete a project owned by the authenticated workspace
operationId: deleteProject
x-fern-sdk-group-name: projects
x-fern-sdk-method-name: delete
security:
- OAuth2: []
responses:
'204':
description: project deleted
'429':
description: too many requests
headers:
Retry-After:
description: Number of seconds until the rate limit resets
schema:
type: integer
X-RateLimit-Limit:
schema:
type: integer
description: The rate limit threshold
X-RateLimit-Remaining:
schema:
type: integer
description: Number of requests remaining (always 0 when throttled)
X-RateLimit-Reset:
schema:
type: integer
description: Unix timestamp when the rate limit resets
x-codeSamples:
- lang: java
label: Java SDK
source: "package com.example.usage;\n\nimport com.pipedream.api.BaseClient;\n\npublic class Example {\n public static void main(String[] args) {\n BaseClient client = BaseClient\n .builder()\n .clientId(\"<clientId>\")\n .clientSecret(\"<clientSecret>\")\n .build();\n\n client.projects().delete(\"project_id\");\n }\n}\n"
- lang: typescript
label: TypeScript SDK
source: "import { PipedreamClient } from \"@pipedream/sdk\";\n\nconst client = new PipedreamClient({\n clientId: \"YOUR_CLIENT_ID\",\n clientSecret: \"YOUR_CLIENT_SECRET\",\n projectEnvironment: \"YOUR_PROJECT_ENVIRONMENT\",\n projectId: \"YOUR_PROJECT_ID\"\n});\nawait client.projects.delete(\"project_id\");\n"
- lang: python
label: Python SDK
source: "from pipedream import Pipedream\n\nclient = Pipedream(\n project_id=\"YOUR_PROJECT_ID\",\n project_environment=\"YOUR_PROJECT_ENVIRONMENT\",\n client_id=\"YOUR_CLIENT_ID\",\n client_secret=\"YOUR_CLIENT_SECRET\",\n)\nclient.projects.delete(\n project_id=\"project_id\",\n)\n"
tags:
- Projects
patch:
summary: Update Project
description: Update project details or application information
operationId: updateProject
x-fern-sdk-group-name: projects
x-fern-sdk-method-name: update
security:
- OAuth2: []
parameters: []
responses:
'200':
description: project updated
content:
application/json:
schema:
$ref: '#/components/schemas/Project'
'429':
description: too many requests
headers:
Retry-After:
description: Number of seconds until the rate limit resets
schema:
type: integer
X-RateLimit-Limit:
schema:
type: integer
description: The rate limit threshold
X-RateLimit-Remaining:
schema:
type: integer
description: Number of requests remaining (always 0 when throttled)
X-RateLimit-Reset:
schema:
type: integer
description: Unix timestamp when the rate limit resets
content:
application/json:
schema:
type: object
properties:
error:
type: string
example: Throttled
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateProjectOpts'
x-codeSamples:
- lang: java
label: Java SDK
source: "package com.example.usage;\n\nimport com.pipedream.api.BaseClient;\nimport com.pipedream.api.resources.projects.requests.UpdateProjectOpts;\n\npublic class Example {\n public static void main(String[] args) {\n BaseClient client = BaseClient\n .builder()\n .clientId(\"<clientId>\")\n .clientSecret(\"<clientSecret>\")\n .build();\n\n client.projects().update(\n \"project_id\",\n UpdateProjectOpts\n .builder()\n .build()\n );\n }\n}\n"
- lang: typescript
label: TypeScript SDK
source: "import { PipedreamClient } from \"@pipedream/sdk\";\n\nconst client = new PipedreamClient({\n clientId: \"YOUR_CLIENT_ID\",\n clientSecret: \"YOUR_CLIENT_SECRET\",\n projectEnvironment: \"YOUR_PROJECT_ENVIRONMENT\",\n projectId: \"YOUR_PROJECT_ID\"\n});\nawait client.projects.update(\"project_id\");\n"
- lang: python
label: Python SDK
source: "from pipedream import Pipedream\n\nclient = Pipedream(\n project_id=\"YOUR_PROJECT_ID\",\n project_environment=\"YOUR_PROJECT_ENVIRONMENT\",\n client_id=\"YOUR_CLIENT_ID\",\n client_secret=\"YOUR_CLIENT_SECRET\",\n)\nclient.projects.update(\n project_id=\"project_id\",\n)\n"
tags:
- Projects
/v1/connect/projects/{project_id}/logo:
parameters:
- name: project_id
in: path
required: true
description: The project ID, which starts with `proj_`.
schema:
type: string
pattern: ^proj_[a-zA-Z0-9]+$
post:
summary: Update Project Logo
description: Upload or replace the project logo
operationId: updateProjectLogo
x-fern-sdk-group-name: projects
x-fern-sdk-method-name: updateLogo
security:
- OAuth2: []
parameters: []
responses:
'200':
description: logo updated
'400':
description: invalid logo data
'429':
description: too many requests
headers:
Retry-After:
description: Number of seconds until the rate limit resets
schema:
type: integer
X-RateLimit-Limit:
schema:
type: integer
description: The rate limit threshold
X-RateLimit-Remaining:
schema:
type: integer
description: Number of requests remaining (always 0 when throttled)
X-RateLimit-Reset:
schema:
type: integer
description: Unix timestamp when the rate limit resets
content:
application/json:
schema:
type: object
properties:
error:
type: string
example: Throttled
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateProjectLogoOpts'
x-codeSamples:
- lang: java
label: Java SDK
source: "package com.example.usage;\n\nimport com.pipedream.api.BaseClient;\nimport com.pipedream.api.resources.projects.requests.UpdateProjectLogoOpts;\n\npublic class Example {\n public static void main(String[] args) {\n BaseClient client = BaseClient\n .builder()\n .clientId(\"<clientId>\")\n .clientSecret(\"<clientSecret>\")\n .build();\n\n client.projects().updateLogo(\n \"project_id\",\n UpdateProjectLogoOpts\n .builder()\n .logo(\"data:image/png;base64,AAAAAA...\")\n .build()\n );\n }\n}\n"
- lang: typescript
label: TypeScript SDK
source: "import { PipedreamClient } from \"@pipedream/sdk\";\n\nconst client = new PipedreamClient({\n clientId: \"YOUR_CLIENT_ID\",\n clientSecret: \"YOUR_CLIENT_SECRET\",\n projectEnvironment: \"YOUR_PROJECT_ENVIRONMENT\",\n projectId: \"YOUR_PROJECT_ID\"\n});\nawait client.projects.updateLogo(\"project_id\", {\n logo: \"data:image/png;base64,AAAAAA...\"\n});\n"
- lang: python
label: Python SDK
source: "from pipedream import Pipedream\n\nclient = Pipedream(\n project_id=\"YOUR_PROJECT_ID\",\n project_environment=\"YOUR_PROJECT_ENVIRONMENT\",\n client_id=\"YOUR_CLIENT_ID\",\n client_secret=\"YOUR_CLIENT_SECRET\",\n)\nclient.projects.update_logo(\n project_id=\"project_id\",\n logo=\"data:image/png;base64,AAAAAA...\",\n)\n"
tags:
- Projects
/v1/connect/{project_id}/projects/info:
parameters:
- name: project_id
in: path
required: true
description: The project ID, which starts with `proj_`.
schema:
type: string
pattern: ^proj_[a-zA-Z0-9]+$
x-fern-sdk-variable: project_id
get:
summary: Get Project Info
description: Retrieve project configuration and environment details
deprecated: true
parameters:
- name: x-pd-environment
in: header
required: true
description: The environment in which the server client is running
schema:
$ref: '#/components/schemas/ProjectEnvironment'
operationId: retrieveProjectInfo
x-fern-sdk-group-name: projects
x-fern-sdk-method-name: retrieveInfo
security:
- ConnectToken: []
- OAuth2: []
responses:
'200':
description: project info retrieved
content:
application/json:
schema:
$ref: '#/components/schemas/ProjectInfoResponse'
'429':
description: too many requests
headers:
Retry-After:
description: Number of seconds until the rate limit resets
schema:
type: integer
X-RateLimit-Limit:
schema:
type: integer
description: The rate limit threshold
X-RateLimit-Remaining:
schema:
type: integer
description: Number of requests remaining (always 0 when throttled)
X-RateLimit-Reset:
schema:
type: integer
description: Unix timestamp when the rate limit resets
content:
application/json:
schema:
type: object
properties:
error:
type: string
example: Throttled
x-codeSamples:
- lang: java
label: Java SDK
source: "package com.example.usage;\n\nimport com.pipedream.api.BaseClient;\n\npublic class Example {\n public static void main(String[] args) {\n BaseClient client = BaseClient\n .builder()\n .clientId(\"<clientId>\")\n .clientSecret(\"<clientSecret>\")\n .projectId(\"YOUR_PROJECT_ID\")\n .build();\n\n client.projects().retrieveInfo();\n }\n}\n"
- lang: typescript
label: TypeScript SDK
source: "import { PipedreamClient } from \"@pipedream/sdk\";\n\nconst client = new PipedreamClient({\n clientId: \"YOUR_CLIENT_ID\",\n clientSecret: \"YOUR_CLIENT_SECRET\",\n projectEnvironment: \"YOUR_PROJECT_ENVIRONMENT\",\n projectId: \"YOUR_PROJECT_ID\"\n});\nawait client.projects.retrieveInfo();\n"
- lang: python
label: Python SDK
source: "from pipedream import Pipedream\n\nclient = Pipedream(\n project_id=\"YOUR_PROJECT_ID\",\n project_environment=\"YOUR_PROJECT_ENVIRONMENT\",\n client_id=\"YOUR_CLIENT_ID\",\n client_secret=\"YOUR_CLIENT_SECRET\",\n)\nclient.projects.retrieve_info()\n"
tags:
- Projects
components:
schemas:
ProjectInfoResponse:
type: object
description: Response received when retrieving project info
required:
- apps
properties:
apps:
type: array
items:
$ref: '#/components/schemas/ProjectInfoResponseApp'
required:
- name_slug
CreateProjectOpts:
type: object
required:
- name
properties:
name:
type: string
description: Name of the project
app_name:
type: string
description: Display name for the Connect application
support_email:
type: string
format: email
description: Support email displayed to end users
connect_require_key_auth_test:
type: boolean
description: Send a test request to the upstream API when adding Connect accounts for key-based apps
UpdateProjectOpts:
type: object
properties:
name:
type: string
description: Name of the project
app_name:
type: string
description: Display name for the Connect application
support_email:
type: string
format: email
description: Support email displayed to end users
connect_require_key_auth_test:
type: boolean
description: Send a test request to the upstream API when adding Connect accounts for key-based apps
UpdateProjectLogoOpts:
type: object
description: Payload to update a project's logo.
required:
- logo
properties:
logo:
type: string
format: byte
description: Data URI containing the new Base64 encoded image
example: data:image/png;base64,AAAAAA...
ListProjectsResponse:
type: object
description: Response received when listing Connect projects
required:
- data
- page_info
properties:
data:
type: array
items:
$ref: '#/components/schemas/Project'
page_info:
$ref: '#/components/schemas/PageInfo'
ProjectEnvironment:
type: string
description: The environment in which the server client is running
enum:
- development
- production
ProjectInfoResponseApp:
type: object
properties:
id:
type: string
description: ID of the app. Only applies for OAuth apps.
nullable: true
name_slug:
type: string
description: The name slug of the target app
PageInfo:
type: object
properties:
count:
type: integer
description: Number of items returned
example: 10
total_count:
type: integer
description: Total number of items
example: 120
start_cursor:
type: string
description: Used to fetch the previous page of items
nullable: true
end_cursor:
type: string
description: Used to fetch the next page of items
nullable: true
Project:
type: object
description: Project that can be accessed via the Connect API
required:
- id
- name
properties:
id:
type: string
pattern: ^proj_[0-9A-Za-z]+$
description: Hash ID for the project
name:
type: string
description: Display name of the project
app_name:
type: string
nullable: true
description: App name shown to Connect users
support_email:
type: string
format: email
nullable: true
description: Support email configured for the project
connect_require_key_auth_test:
type: boolean
description: Send a test request to the upstream API when adding Connect accounts for key-based apps
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: OAuth access token