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
- 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)