Agent Tools
The agent has access to MCP toolsets (Sourcegraph, Grafana) and custom function tools registered via ADK’s functiontool.New. Tools are defined in internal/agent/ with typed args/results.
MCP toolsets
Section titled “MCP toolsets”| Toolset | Source | Purpose |
|---|---|---|
| Sourcegraph | MCP server | Code search across all repos |
| Grafana | MCP server | Dashboards, metrics, logs, alerts |
MCP auth: A custom http.RoundTripper injects auth headers for Sourcegraph (token transport). Grafana MCP requires no auth headers.
Custom function tools
Section titled “Custom function tools”create_jira_ticket
Section titled “create_jira_ticket”Creates a Jira ticket in the configured project. Registers a jira:<issueKey> session index entry so future events on the ticket resolve to the same session.
Used for: Implementation work that needs backlog tracking.
search_jira
Section titled “search_jira”Searches Jira for existing tickets using JQL.
create_github_issue
Section titled “create_github_issue”Creates a GitHub issue in a specified repository.
jira_key(optional): When provided, the issue title includes the Jira key prefix and the body contains a Jira Context section with a link back to the ticket- Registers a
github:<owner/repo>#<number>session index entry
run_claude_session
Section titled “run_claude_session”Dispatches an async Claude session via repository_dispatch with type bucky-session. Mode is optional — when empty, Claude decides what to do; when set to plan, restricts to planning only.
- Records a
PendingSessionmapping so the callback can resume the correct ADK session - The dispatch payload includes
agent_base_urlfor file uploads - Returns immediately with a session UUID
run_multi_repo_session
Section titled “run_multi_repo_session”Dispatches a cross-repo Claude session via repository_dispatch with type bucky-multi-repo-session to buck-bronson.
- Payload includes a
reposarray (list ofowner/repostrings) - GitHub issues for multi-repo sessions always live in buck-bronson
- Same
PendingSessioncallback pattern asrun_claude_session
respond_in_slack
Section titled “respond_in_slack”Posts messages to the Slack thread associated with the current session. Supports two modes:
- Plain text: Simple text message
- Block Kit: Interactive messages with buttons, selects, date pickers when
blocksare provided
The tool resolves its target via the session index (LookupBySession) rather than parsing the session ID.
A runAgentWithSlackFallback helper ensures respond_in_slack is called — if the agent finishes without posting to Slack (or errors out), a fallback message is posted automatically.
respond_in_jira
Section titled “respond_in_jira”Posts plain text comments on the Jira ticket associated with the current session. A runAgentWithJiraFallback helper provides the same guarantee for Jira-originated sessions.
respond_on_github
Section titled “respond_on_github”Posts comments on GitHub issues/PRs. A runAgentWithGitHubFallback helper provides the same guarantee for GitHub-originated sessions.
post_to_feed
Section titled “post_to_feed”Posts updates to a #bucky-feed Slack channel. When a jira_key is provided:
- Fetches Jira watchers for the ticket
- Resolves their Slack user IDs via email lookup
- Appends @mentions to the feed post
Enabled by SLACK_FEED_CHANNEL_ID.
Prompt management
Section titled “Prompt management”Large LLM prompts (system instruction, tool descriptions) live in internal/agent/prompts/*.md and are embedded at compile time via //go:embed. This keeps prompts easy to edit without touching Go code.
The agent’s system prompt includes a “Claude Code Runner Capabilities” section that teaches it what dispatched Claude sessions can do (MCP tools, shell access, browser automation, test execution) so it knows when to offload tasks to Claude Code runners.