Docs

Tools

Give agents capabilities beyond text generation. Tools let agents search, store, delegate, and interact with external services.

Overview#

Tools are declared in agent.yaml. The agent decides when to use them based on the conversation context and its goals.

CategoryToolsUse Case
Webweb_search, web_fetchResearch, live data
Browserbrowser_tools (12 tools)Web automation with the user's logged-in browser
FilesartifactsReports, exports, downloads
StoragesqlitePreferences, tracking, queryable history
Delegationdelegate, report_to_parentMulti-agent orchestration
Notesjournal, recallInternal notes, session context
HTTPCustom http_toolsOAuth APIs (Gmail, Stripe, etc.)
BashCustom bash_toolsCLI commands (trivy, ffmpeg)
Audiotts, audio_mixerVoice, meditations, podcasts
UIrender_*Interactive components

Declare the tools your agent needs in the tools list. Some tools accept additional configuration:

agent.yaml
tools:
  - name: web_search
  - name: web_fetch
  - name: artifacts
  - name: delegate
    config:
      max_depth: 2
  - name: sqlite
    config:
      tables:
        history:
          columns:
            id: { type: integer, primary_key: true }
            query: { type: string, required: true }

HTTP Tools#

HTTP tools let agents interact with OAuth-based APIs like Gmail, Twitter, Stripe, and Shopify. Standard tools are generic — HTTP tools let agents interact with the user's own accounts through authenticated API calls.

Each HTTP tool defines an endpoint, method, authentication, and parameter schema:

agent.yaml
http_tools:
  twitter_post_tweet:
    description: "Post a tweet to Twitter/X"
    endpoint: "/api/v1/twitter/tweets"
    method: POST
    auth: bearer
    twitter_token: true
    params:
      text:
        type: string
        description: "The tweet text (max 280 chars)"
        required: true
    body_template: '{
      "text": "{{text}}"
      {{if reply_to}}, "reply_to": "{{reply_to}}"{{end}}
    }'
FieldDescription
descriptionWhat the tool does. Shown to the LLM for tool selection.
endpointAPI path to call. Relative to the proxy base URL.
methodHTTP method: GET, POST, PUT, DELETE, PATCH.
authAuthentication type. Usually bearer.
{service}_tokenFlags which OAuth token to inject (e.g. twitter_token, gmail_token).
paramsParameter schema. Each param has type, description, and required.
body_templateGo-style template for the request body. Uses {{param}} placeholders.
response_formatOptional. How to parse the response before returning to the LLM.

OAuth Configuration

Use the {service}_token field to specify which OAuth token the tool requires. The runtime injects the user's token automatically:

# Twitter/X
twitter_token: true

# Gmail / Google Calendar
gmail_token: true

# Stripe
stripe_token: true

Template Variables

The body_template field uses Go template syntax. Reference parameters with {{param_name}} and use conditionals with {{if field}}...{{end}}:

body_template: '{
  "text": "{{text}}"
  {{if reply_to}}, "reply_to": "{{reply_to}}"{{end}}
  {{if media_ids}}, "media_ids": {{media_ids}}{{end}}
}'

Available Integrations

ServiceToken FieldExample Endpoints
Twitter/Xtwitter_tokenPost tweets, read timeline, send DMs
Gmailgmail_tokenSend emails, search inbox, read threads
Google Calendargmail_tokenCreate events, list upcoming, check availability
Stripestripe_tokenList charges, create invoices, manage subscriptions
Shopifyshopify_tokenManage products, orders, inventory
LinkedInlinkedin_tokenPost updates, manage connections

When a user runs the agent, Rush checks if the user has the required service connected. If not, it prompts for OAuth before running.

Bash Tools#

Bash tools let agents run scoped CLI commands — security scans, media conversion, data processing. Each bash tool wraps a single command. The LLM provides arguments, not the binary name.

agent.yaml
bash_tools:
  trivy_scan:
    description: "Scan for CVE vulnerabilities"
    command: trivy
    help_command: "trivy --help"
    labels:
      running: "Scanning for vulnerabilities"
      finished: "Scan complete"
Shell ToolBash Tools
SecurityLLM can choose any commandFixed command prefix — LLM only provides arguments
DebuggingGeneric shell invocationsNamed tools with structured labels
Help ContextLLM guesses flags and syntaxHelp text injected from help_command
SchemaGeneric string inputSpecific to the command

Dependencies

If your bash tool needs an external binary (ffmpeg, trivy, imagemagick, etc.), declare it in dependencies. At install time Rush runs the check command; if it fails, the user is shown the platform-specific install line before the agent runs.

agent.yaml
dependencies:
  - name: ffmpeg
    check: "ffmpeg -version"
    install:
      darwin: "brew install ffmpeg"
      linux: "apt-get install -y ffmpeg"

  - name: trivy
    check: "trivy --version"
    install:
      darwin: "brew install aquasecurity/trivy/trivy"
      linux: "curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh -s -- -b /usr/local/bin"

check can be any command that exits zero when the dependency is present. install.darwin and install.linux are surfaced as copy-paste snippets — Rush never runs them for you.

Audio Tools#

Audio tools enable text-to-speech and audio composition. tts converts text to spoken audio, and audio_mixer composes multiple audio segments into a single output.

Use cases include guided meditations, podcast generation, voiceovers, and narrated reports.

agent.yaml
tools:
  - name: tts
  - name: audio_mixer

Quick Reference#

I need to...ToolNotes
Search the webweb_searchGeneral research
Read a webpageweb_fetchFull page content
Save a fileartifactsReports, exports
Query structured datasqliteTables, tracking
Delegate to another agentdelegateMulti-agent
Call an external APIhttp_toolsOAuth integrations
Run a CLI commandbash_toolsScoped execution
Generate speechttsVoice output
Mix audioaudio_mixerComposition
Show UI componentrender_*Interactive cards
Tools | Prix Docs