For each external service, you have three choices:Documentation Index
Fetch the complete documentation index at: https://smithers.sh/llms.txt
Use this file to discover all available pages before exploring further.
- OpenAPI tools — point
createOpenApiTools()at the service’s OpenAPI spec. See/llms-openapi.txt. - CLI in a task — if the service has a CLI (
gh,linear,notion,slack), run it inside a<Task>via thebashtool. See/recipes#side-effect-tools-with-idempotency. - Custom
defineTool— wrap the service’s REST API in a Zod-validated tool. See/llms-integrations.txt#definetool.
Quick decision
| Service | Recommended approach |
|---|---|
| GitHub | gh CLI in a task (auth via gh auth login) |
| Linear | linear CLI in a task, or OpenAPI tools |
| Notion | OpenAPI tools (Notion publishes a spec) |
| Slack | OpenAPI tools or slack CLI |
| Obsidian | bash tool with vault path; no API needed |
sideEffect: true and use ctx.idempotencyKey so retries don’t double-fire.