Discovery Tool

A tool that reveals available operations, schema, or capabilities.

category: Tool
arcade.dev/patterns

Context

Building tools that help agents explore what's possible.

Problem

Agents need to understand what data exists and what operations are available before taking action.

Solution

A Discovery Tool reveals structure:
- list_tables(): What data exists
- describe_schema(): What fields are available
- get_capabilities(): What operations are possible
- who_am_i(): Current user context

Examples

Python
@tool
def list_available_reports() -> list[ReportType]:
    """List all report types the user can generate.
    Call this first to see what's available."""
    return report_service.get_available_types(current_user)
TypeScript
const listTables = tool({
  name: "list_tables",
  description: "List database tables. Call before querying.",
  execute: async () => db.getTables()
});

Considerations

  • Discovery tools are essential for schema-on-read scenarios
  • Return enough detail for the agent to make informed decisions
  • Consider layered discovery (list → describe → sample)

Related Patterns

More in Tool