Documentation Index
Fetch the complete documentation index at: https://redop.useagents.site/docs/llms.txt
Use this file to discover all available pages before exploring further.
Shape
Fields
| Field | Required | Purpose |
|---|---|---|
description | No | Human-readable description shown to clients. |
inputSchema | No | Schema used for runtime parsing and tool discovery. |
outputSchema | No | Structured output schema surfaced to clients when the result is an object. Accepts the same supported schema styles as inputSchema. |
title | No | UI-friendly display title. |
icons | No | Tool icons for clients that support them. |
annotations | No | Behavioral hints forwarded to clients. Redop does not enforce them automatically. |
middleware | No | Middleware scoped to this tool only. |
before | No | Tool-local hook that runs before middleware and the handler. |
after | No | Tool-local hook that runs after a successful result and may replace it. |
afterResponse | No | Tool-local hook that runs after the response is written. Receives either result or error and cannot replace the response. |
taskSupport | No | Task support hint: "forbidden", "optional", or "required". |
handler | Yes | Tool implementation. |
Handler event
The handler receives:inputfor parsed tool inputctxfor mutable per-request contextrequestfor transport metadatatoolfor the resolved tool nameemit.progress(...)for progress updatessignalfor cancellation support
annotations
annotations help clients reason about tool behavior before they call it.
| Field | Meaning | Typical use |
|---|---|---|
readOnlyHint | The tool reads data and does not mutate state. | Search, list, inspect, preview, validate. |
destructiveHint | The tool may make hard-to-undo or high-impact changes. | Delete, cancel, revoke, overwrite, charge. |
idempotentHint | Repeating the same call should have the same effect without compounding side effects. | Sync, replace, ensure-state, upsert. |
openWorldHint | The tool depends on external or live information beyond the server’s local state. | Web search, external APIs, live SaaS lookups. |
- annotations are hints for clients and agents, not runtime enforcement
- tools can combine multiple hints when they describe different aspects of behavior
- avoid contradictory hints such as
readOnlyHint: trueanddestructiveHint: true
Notes
- If you omit
inputSchema, the handler receives the raw params object. outputSchemais exported to clients as JSON Schema, but Redop does not validate returned values against it at runtime.- Prefer explicit names such as
notes.listorbilling.invoice.createwhen a tool belongs to a feature area. afterResponseis the right place for per-tool analytics, impressions, and logging that should happen after the client response.- Tool-local hooks are the right place for per-tool post-processing.
- Shared concerns belong in global hooks or plugins instead.