CONNECT APP
Build with Jira
Productivity
- OAuth
MCP
Give your agent Jira tools
Every Jira action is exposed as an MCP tool on Pipedream's remote server. Point a client at it with your end user's ID and Connect resolves that user's Jira account for each tool call — you store no tokens.
// accessToken: mint a short-lived token with the Connect SDK — see the MCP guide
const transport = new StreamableHTTPClientTransport(
new URL("https://remote.mcp.pipedream.net/v3"),
{
requestInit: {
headers: {
Authorization: `Bearer ${accessToken}`,
"x-pd-project-id": "{project_id}",
"x-pd-environment": "production",
"x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
"x-pd-app-slug": "jira",
},
},
},
)
const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)
const { tools } = await mcp.listTools()
// e.g. run Add Attachment To Issue:
const result = await mcp.callTool({
name: "jira-add-attachment-to-issue",
arguments: {
cloudId: "Cloud ID",
issueIdOrKey: "Issue ID or Key",
},
})# access_token: mint a short-lived token with the Connect SDK — see the MCP guide
headers = {
"Authorization": f"Bearer {access_token}",
"x-pd-project-id": "{project_id}",
"x-pd-environment": "production",
"x-pd-external-user-id": "{external_user_id}", # any stable ID for this user in your system
"x-pd-app-slug": "jira",
}
async with streamablehttp_client("https://remote.mcp.pipedream.net/v3", headers=headers) as (read, write, _):
async with ClientSession(read, write) as session:
await session.initialize()
tools = await session.list_tools()
# e.g. run Add Attachment To Issue:
result = await session.call_tool("jira-add-attachment-to-issue", {
"cloudId": "Cloud ID",
"issueIdOrKey": "Issue ID or Key",
})API PROXY
Call the Jira API directly
For an endpoint with no pre-built tool, the Connect proxy forwards your request to the Jira API with the connected user's credentials attached. You store no tokens and write no refresh logic.
const resp = await pd.proxy.get({
externalUserId: "{external_user_id}", // any stable ID for this user in your system
accountId: "apn_xxxxxxx",
url: "https://api.atlassian.com/me",
})
// Any allowed Jira endpoint works here. Pipedream attaches the
// connected account's credentials to the outgoing request.# The path segment is the target URL, URL-safe base64 encoded:
# https://api.atlassian.com/me
curl "https://api.pipedream.com/v1/connect/{project_id}/proxy/aHR0cHM6Ly9hcGkuYXRsYXNzaWFuLmNvbS9tZQ?external_user_id={external_user_id}&account_id=apn_xxxxxxx" \
-H "Authorization: Bearer {access_token}" \
-H "x-pd-environment: production"SDK
Run Jira actions from your backend
Connect a user's Jira account once, then run Add Attachment To Issue on their behalf from your own code — TypeScript, Python, or plain HTTP.
import { PipedreamClient } from "@pipedream/sdk"
const pd = new PipedreamClient({
projectId: process.env.PIPEDREAM_PROJECT_ID!,
clientId: process.env.PIPEDREAM_CLIENT_ID!,
clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
projectEnvironment: "production",
})
const result = await pd.actions.run({
id: "jira-add-attachment-to-issue",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
jira: { authProvisionId: "apn_xxxxxxx" },
cloudId: "Cloud ID",
issueIdOrKey: "Issue ID or Key",
},
})from pipedream import Pipedream
pd = Pipedream(
client_id="{oauth_client_id}",
client_secret="{oauth_client_secret}",
project_id="{project_id}",
project_environment="production",
)
result = pd.actions.run(
id="jira-add-attachment-to-issue",
external_user_id="{external_user_id}", # any stable ID for this user in your system
configured_props={
"jira": {"authProvisionId": "apn_xxxxxxx"},
"cloudId": "Cloud ID",
"issueIdOrKey": "Issue ID or Key",
},
)curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
-H "Content-Type: application/json" \
-H "X-PD-Environment: production" \
-H "Authorization: Bearer {access_token}" \
-d '{
"external_user_id": "{external_user_id}",
"id": "jira-add-attachment-to-issue",
"configured_props": {
"jira": { "authProvisionId": "apn_xxxxxxx" },
"cloudId": "Cloud ID",
"issueIdOrKey": "Issue ID or Key"
}
}'TOOLS
Jira actions
On-demand operations your product or agent can configure and run on behalf of a connected user.
-
Add Attachment To Issue
actionAdds an attachment to an issue. See the documentationWritev1.0.19 -
Add Comment To Issue
actionAdds a new comment to an issue. See the documentationWritev0.1.26 -
Add Multiple Attachments To Issue
actionAdds multiple attachments to an issue. See the documentationWritev1.0.19 -
Add Watcher To Issue
actionAdds a user as a watcher of an issue by passing the account ID of the user, For example,5b10ac8d82e05b22cc7d4ef5, If no user is specified the calling user is added. See the documentationWritev0.0.26 -
Assign Issue
actionAssigns an issue to a user. See the documentationWritev0.0.25 -
Check Issues Against JQL
actionChecks whether one or more issues would be returned by one or more JQL queries. See the documentationRead-onlyv0.0.12 -
Count Issues Using JQL
actionProvide an estimated count of the issues that match the JQL. See the documentationRead-onlyv0.0.12 -
Create Custom Field Options (Context)
actionCreate a context for custom field options. See the documentation.Writev0.0.18 -
Create Future Sprint
actionCreates a future sprint. See the documentationWritev0.0.9 -
Create Issue
actionCreates an issue or, where the option to create subtasks is enabled in Jira, a subtask. See the documentationWritev1.0.0 -
Create Jira Version in Project
actionCreates a project version. See the documentationWritev0.1.26 -
Delete Project
actionDeletes a project. See the documentationWritev0.1.26 -
Download Attachment
actionDownloads a Jira issue attachment's binary content to the configured file-stash directory and returns its saved path plus the attachment's metadata (filename,mimeType,size, etc.). Use this after locating an attachment via Get Issue (itsfields.attachment[]array lists each attachment'sid,filename,size, andmimeType), or from an attachment reference surfaced by another Jira action or trigger — pass thatidasattachmentId. The file is saved in the file-stash directory as<attachmentId>-<sanitized filename>(the ID prefix avoids collisions when multiple attachments share the same filename); the returnedfiledatatuple points at that saved path for use in downstream file-input props. Jira's content endpoint responds with a redirect to a signed, short-lived media URL — this is followed automatically, so no extra configuration is required. See the documentationWritev0.0.6 -
Get All Projects
actionGets metadata on all projects. See the documentationRead-onlyv0.1.27 -
Get Board
actionReturns the board for the given board ID. See the documentationRead-onlyv0.0.9 -
Get Cloud ID
actionLists all accessible Jira Cloud sites and their IDs. See the documentationRead-onlyv0.0.10 -
Get Current User
actionReturns the authenticated Jira user's account ID, display name, email, and active status. Call this first when the user says 'my issues', 'assigned to me', or needs their Jira identity. Use the returnedaccountIdwith Search Issues with JQL (e.g.assignee = '{accountId}') or Assign Issue. Requires a Cloud ID to identify the Jira site. See the documentation.Read-onlyv0.0.9 -
Get Issue
actionGets the details for an issue. See the documentationRead-onlyv0.1.28 -
Get Issue Picker Suggestions
actionReturns lists of issues matching a query string. See the documentationRead-onlyv0.0.11 -
Get Issue Types
actionGets the available issue types. If a project ID is provided, returns issue types for that project. Otherwise, returns all issue types accessible to the user. See the documentationRead-onlyv0.0.11 -
Get Sprint
actionReturns the sprint for a given sprint ID. See the documentationRead-onlyv0.0.9 -
Get Task
actionGets the status of a long-running asynchronous task. See the documentationRead-onlyv0.1.26 -
Get Transitions
actionGets either all transitions or a transition that can be performed by the user on an issue, based on the issue's status. See the documentationRead-onlyv0.1.26 -
Get User
actionGets details of user. See the documentationRead-onlyv0.1.26 -
Get Users
actionGets the details for a list of users. See the documentationRead-onlyv0.0.21 -
List Board Issues
actionReturns all issues from a board, for the given board ID. See the documentationRead-onlyv0.0.9 -
List Boards
actionReturns all boards. See the documentationRead-onlyv0.0.9 -
List Epic Issues
actionReturns all issues that belong to an epic on the given board. See the documentationRead-onlyv0.0.9 -
List Epics
actionReturns all epics from a board, for the given board ID. See the documentationRead-onlyv0.0.9 -
List Issue Comments
actionLists all comments for an issue. See the documentationRead-onlyv0.1.26 -
List Labels Options
actionRetrieves available options for the Labels field.Read-onlyv0.0.7 -
List Sprint Issues
actionReturns all issues in a sprint. See the documentationRead-onlyv0.0.9 -
List Sprints
actionReturns all sprints from a board, for the given board ID. See the documentationRead-onlyv0.0.9 -
Move Issues to Sprint
actionMoves issues to a sprint, for a given sprint ID. See the documentationWritev0.0.9 -
Search Issues with JQL
actionSearch for issues using JQL (Jira Query Language). See the documentationRead-onlyv0.1.14 -
Search Issues with JQL (POST)
actionSearches for issues using JQL with enhanced search capabilities. See the documentationRead-onlyv0.0.11 -
Transition Issue
actionPerforms an issue transition and, if the transition has a screen, updates the fields from the transition screen. See the documentationWritev0.1.29 -
Update Comment
actionUpdates a comment. See the documentationWritev0.1.26 -
Update Issue
actionUpdates an issue. A transition may be applied and issue properties updated as part of the edit. See the documentationWritev1.0.0
-
New Event
triggerEmit new event when an event with subscribed event source triggered, See the documentationv0.0.26 -
New Issue Created Event (Instant)
triggerEmit new event when an issue is created. Note that Jira supports only one webhook, if more sources are needed please useNew Eventsource and select multiple events.v0.0.26 -
New Issue Deleted Event (Instant)
triggerEmit new event when an issue is deleted. Note that Jira supports only one webhook, if more sources are needed please useNew Eventsource and select multiple events.v0.0.26 -
New Issue Updated Event (Instant)
triggerEmit new event when an issue is updated. Note that Jira supports only one webhook, if more sources are needed please useNew Eventsource and select multiple events.v0.0.26
MULTI-APP
Use Jira with other popular apps
Most products don't stop at one integration. Pair Jira with the other apps your users rely on, and ship use cases that span both.
- App slug
- jira
- Authentication
- OAuth
- Categories
- Productivity
- Actions
- 39
- Triggers
- 4
- API proxy
- Available
OAuth scopes
These are the scopes Pipedream's managed Jira OAuth client requests when one of your users connects an account. Supply your own OAuth client to request a different set.
- read:jira-work
- manage:jira-project
- read:jira-user
- write:jira-work
- read:me
- offline_access
- read:issue-details:jira
- read:field:jira
- read:project:jira
- write:field.option:jira
- read:custom-field-contextual-configuration:jira
- read:jql:jira
- manage:jira-webhook
- write:sprint:jira-software
- read:epic:jira-software
- read:board-scope:jira-software
- read:sprint:jira-software