Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

JIRA tools (mediated)

The broker contains a native JIRA Cloud client (the shared ujira crate). It gives the sandboxed agent the read and comment functions of that client over the MCP connection of the broker. This is the ADR-0002 mediation pattern applied to JIRA: the agent gets JIRA tools but never has an Atlassian credential. There is no upstream MCP child process. The broker calls the JIRA REST API directly, on the server side.

What the agent sees

The broker has three JIRA tools. Their names have the broker name as prefix, for example mcp__epp-broker__jira_search:

ToolArgsReturns
jira_searchjql, limit (default 25)compact rows: {key, summary, type, status, labels}
jira_get_issueissue_key, raw (default false)a short record that uses few tokens. Set raw=true for the full issue.
jira_add_commentissue_key, comment{id, url}

jira_add_comment is the only write. The agent has no tool to create, transition, edit, or delete. When the broker creates the client, it limits the client to read and comment (crucible-broker/src/jira.rs). The code enforces the scope. It does not depend on the agent. If JIRA is not configured, the tools return {"status":"disabled"}, as build_epp and profile do when their feature is disabled. The tools are always present.

Context hint. The deployment can name its projects with BROKER_JIRA_PROJECTS (comma-separated, for example PROJ,PROJ2). The jira_search tool description then tells the agent to limit JQL to those boards and not to search the whole instance. BROKER_DESC_JIRA_JQL_EXAMPLE and BROKER_DESC_JIRA_KEY_EXAMPLE set the inline examples in the descriptions. If they are not set, the descriptions are generic.

Trust boundary

The Atlassian credentials are in the environment of the broker pod. They are never in [agent.env], so the sandbox never sees a token, as for the build and deploy credentials. The agent can reach only the broker endpoint, which is already on the egress allowlist. The REST calls to Atlassian Cloud use the egress of the loop pod, not of the sandbox, so the sandbox egress does not change.

Enable it (broker pod environment)

EnvMeaning
JIRA_URLThe Cloud site, e.g. https://your-org.atlassian.net.
JIRA_USERNAMEThe account email (Cloud basic auth is JIRA_USERNAME:JIRA_API_TOKEN).
JIRA_API_TOKENThe API token, from a Secret.

If all three are set, the jira_* tools work. If one is missing, they answer disabled. The broker sets the access level to read and comment, whatever the environment or the configuration of the shared crate allows.