Jira
Jira integration lets you delegate work from your Jira board to Errand’s AI agents. When a Jira issue matches your configured filters (issue type, label, project), Errand automatically creates a task, executes it, and posts the results back to the Jira issue as comments, status transitions, and label updates.
Features
Section titled “Features”- Webhook triggers — automatically create tasks when Jira issues are created or updated
- Configurable filters — match on event type, issue type, labels, and project key
- Completion actions — comment results, transition status, assign issues, add labels
- Atlassian MCP tools — give agents the ability to read and interact with Jira during task execution
- Bidirectional tracking — Errand tracks the link between tasks and Jira issues for deduplication and callbacks
Prerequisites
Section titled “Prerequisites”- A Jira Cloud instance (Jira Server/Data Center is not supported)
- A service account with an API token scoped to your Jira instance
- A way for Jira to reach your Errand installation:
- Errand Cloud (recommended) — the Cloud Service relays Jira webhooks to your local installation
- Self-managed — expose your Errand server to the internet so Jira can deliver webhooks directly
Overview
Section titled “Overview”Setup has three parts:
- Connect Jira credentials — so Errand can call the Jira API for completion actions
- Create a webhook trigger — configure which Jira events create tasks and what happens on completion
- Register the webhook in Jira — point Jira at your Errand webhook URL
Optionally, you can also add the Atlassian MCP server to a task profile so that agents can interact with Jira issues during execution.
Step 1: Create a Jira API Token
Section titled “Step 1: Create a Jira API Token”- Log in to id.atlassian.com with the account you want to use as the service account
- Go to Security > API tokens
- Click Create API token
- Give it a label (e.g. “Errand”) and click Create
- Copy the token — you won’t be able to see it again
Step 2: Find Your Cloud ID
Section titled “Step 2: Find Your Cloud ID”Your Atlassian Cloud ID identifies your Jira instance. To find it:
- Go to your Jira instance (e.g.
https://yourcompany.atlassian.net) - Navigate to
https://yourcompany.atlassian.net/_edge/tenant_info - Copy the
cloudIdvalue from the JSON response
Step 3: Connect Jira in Errand
Section titled “Step 3: Connect Jira in Errand”- Open the Errand UI and go to Settings > Integrations
- Find the Jira card and click Connect Jira
- Fill in:
- Site URL — your Jira instance URL (e.g.
https://yourcompany.atlassian.net) - Cloud ID — from Step 2
- API Token — from Step 1
- Service Account Email — the email address of the account that owns the API token
- Site URL — your Jira instance URL (e.g.
- Click Save & Verify
Errand verifies the token by calling the Jira API. If verification succeeds, the card shows “Connected” with the account display name.
Step 4: Create a Webhook Trigger
Section titled “Step 4: Create a Webhook Trigger”- Go to Settings > Task Generators
- In the Webhook Triggers section, click Add Trigger
- Configure the trigger:
Source and Name
Section titled “Source and Name”- Source — select “Jira”
- Name — a descriptive name (e.g. “Jira Bug Triage”, “Story Analysis”)
Task Profile
Section titled “Task Profile”Select which task profile the agent should use when executing tasks from this trigger. The profile controls the model, system prompt, MCP tools, and skills available to the agent.
Filters
Section titled “Filters”Filters determine which Jira events create tasks. All filters are ANDed together — an event must match every configured filter. Leave a filter empty to match all values.
| Filter | Description | Example |
|---|---|---|
| Event Types | Which Jira events to react to | jira:issue_created, jira:issue_updated |
| Issue Types | Which issue types to match | Story, Bug, Task, Feature, Epic |
| Labels | Trigger when an issue has this label | errand, ai-review |
| Projects | Which Jira project keys to scope to | SCRUM, WEBAPP |
Completion Actions
Section titled “Completion Actions”Configure what Errand does when a task finishes:
| Action | Description |
|---|---|
| Assign to service account | Claims the Jira issue when the task starts |
| Add comment with task reference | Posts a comment when the task starts and when it finishes |
| Comment output on complete | Includes the full task output in the completion comment |
| Add label on complete | Adds a label to the issue (e.g. errand-done) |
| Transition on complete | Moves the issue to a target status (e.g. Done) |
Webhook Secret
Section titled “Webhook Secret”Click Generate to create a cryptographic secret, or paste your own. This secret is used for HMAC-SHA256 signature verification — Jira signs each webhook payload with it, and Errand verifies the signature before processing.
The secret is stored encrypted and never shown again after the initial save. If you need to change it, generate a new one and update the webhook configuration in Jira.
- Click Save
Step 5: Register the Webhook in Jira
Section titled “Step 5: Register the Webhook in Jira”- In Jira, go to Settings (gear icon) > System > WebHooks
- Click Create a WebHook
- Configure:
- Name — e.g. “Errand”
- Status — Enabled
- URL — your Errand webhook URL:
- Direct:
https://your-errand-instance/webhooks/jira - Errand Cloud: the cloud relay URL shown on the trigger detail page in Errand
- Direct:
- Secret — paste the webhook secret from Step 4
- Under Events, select the events that match your trigger’s event type filters:
- For
jira:issue_created— check Issue > created - For
jira:issue_updated— check Issue > updated
- For
- Optionally filter by JQL to limit which issues fire the webhook (e.g.
project = SCRUM) - Click Create
Optional: Add Atlassian MCP Server to Task Profiles
Section titled “Optional: Add Atlassian MCP Server to Task Profiles”The webhook trigger handles inbound events and completion callbacks. If you also want the AI agent to read and interact with Jira issues during task execution (e.g. look up related issues, read comments, create sub-tasks), add the Atlassian MCP server to the task profile.
- Go to Settings > Agent Configuration
- Expand the MCP Server Configuration section
- In the JSON text box, add the Atlassian MCP server. If the field is empty, paste this full configuration:
If you already have other MCP servers configured, add the{"mcpServers": {"atlassian": {"url": "https://mcp.atlassian.com/v1/mcp","headers": {"Authorization": "Bearer ${JIRA_API_TOKEN}"}}}}
"atlassian"entry alongside them inside the existing"mcpServers"object. - Click Save
The ${JIRA_API_TOKEN} placeholder is automatically replaced with the API token from your Jira credentials (configured in Step 3) at task execution time. You don’t need to hardcode the token.
If you only want certain task profiles to have Jira access, add the MCP server to those specific profiles in Settings > Task Profiles rather than to the global agent configuration. The profile assigned to your webhook trigger controls which MCP servers are available during execution.
How It Works
Section titled “How It Works”When everything is connected, the flow is:
- A Jira issue is created or updated, matching your trigger filters
- Jira sends a webhook to Errand (directly or via Cloud relay)
- Errand verifies the HMAC signature and identifies the matching trigger
- Errand creates a task with the issue summary, description, and the trigger’s task profile
- The AI agent executes the task using the configured model, tools, and skills
- On completion, Errand posts results back to the Jira issue (comments, transitions, labels)
Each Jira issue creates at most one task — duplicate webhooks for the same issue are automatically deduplicated.
Troubleshooting
Section titled “Troubleshooting”| Issue | Solution |
|---|---|
| ”Not Connected” on Jira card | Verify the Cloud ID, API token, and site URL in Settings > Integrations > Jira |
| Webhooks arrive but no tasks created | Check the trigger’s filters — the server log shows which filter rejected the event and why (event type, issue type, labels, project) |
| “Add Trigger” button is disabled | Jira credentials must be connected first — go to Settings > Integrations |
| Completion comments not appearing | Verify the API token has permission to comment on issues in the target project |
| Transition fails | The target status name must match an available transition exactly (case-insensitive). Check the issue’s current workflow for valid transitions |
${JIRA_API_TOKEN} not replaced | Ensure Jira credentials are saved in Settings > Integrations > Jira — the placeholder is resolved from those stored credentials |
| Cloud relay returns 401 | The webhook secret in Jira must match the secret configured on the trigger in Errand |