Title96/100
Search catalog
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/100
Find built-in capabilities, official guides, saved packages, integrations, connected MCP servers, and secret references (metadata only) before `execute`. Prefer short task phrases over keyword lists. **query** — compact ranked markdown + structured matches (same actionable substance on both channels; major MCP clients usually load one). Empty or broad queries return a domain index; search again with a more specific query. Domain ids appear on capability hits. Connected MCP servers appear as server hits (name, instructions); do not expect every remote tool in unscoped results. Prefer a matching package export hit over only the parent package when it fits the task. High-confidence export hits may include an inlined call contract (import + types + execute example) on both markdown and structured — use it; otherwise open `entity` for the full contract. **entity: "{type}:{id}"** — detail for one hit (`capability` | `guide` | `integration` | `mcp-server` | `package` | `secret`), or 1–10 refs. The first `:` is the type; ids may contain colons (`capability:mcp:home:set_pin`). Guide detail is the full markdown when it fits the response budget; oversized guides return a table of contents. Open a heading with `guide:{id}#{slug}` or lines with `guide:{id}#L165` / `#L165-L180`. Open one export with `package:{id}#{subpath}` (for example `package:home-controls#bond-area-shades`). Open one file with `package:{id}#README.md#slug` or `package:{id}#src/file.ts#L165`. An export subpath still wins. Capability detail includes an execute snippet. MCP server detail lists discovered tools; after that, call `kody.mcp["name"].tool_name(args)`. Example arguments: - `{ "query": "send a message" }` - `{}` - `{ "query": "send a message", "domain": "email" }` - `{ "domain": "jobs" }` - `{ "entity": "guide:package_authoring" }` https://raw.githubusercontent.com/kentcdodds/kody/main/docs/use/search.md
The description explains the capability, when to use it, and what to expect.
Inputs84/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
query
Natural language description, or a scoped `@owner/leaf` name, current-origin account package URL, owner-matching hosted package URL, or an exact saved-package UUID (`package_id`) when the name is not known.
Clear enough to supply this argument.
entity
Optional exact entity reference "{type}:{id}" (capability, guide, integration, mcp-server, package, or secret), or an array of refs to batch related detail lookups. Guide refs accept "#{heading}" or a line anchor "#L165" / "#L165-L180". Package refs accept "#{subpath}" to open one export contract (leading "./" is optional), or "#{path}" / "#{path}#L165" / "#{path}#heading" to open one file. A fragment that matches an export subpath still opens that export. Use "mcp-server:{name}" to list tools on a connected MCP server.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
domain
Optional capability domain id (for example "email" or "mcp:linear"). With "query", ranks only that domain's capabilities; without "query", lists the domain's capabilities.
Clear enough to supply this argument.
limit
Number of ranked results to return. Defaults to 15.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
maxResponseSize
Response size budget before trimming low-ranked results. Defaults to 4000.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
conversationId
Optional short conversation identifier. Ties related calls together. If you already have a `conversationId` from an earlier response in the same conversation, pass it back unchanged. Otherwise omit this field to receive a server-generated ID, then reuse the returned `conversationId` on subsequent calls - this enables optimizations like reduced response size. Do not invent your own `conversationId`.
Clear enough to supply this argument.
memoryContext › task
Optional task or goal summary for future memory retrieval.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
memoryContext › query
Optional task or goal summary for future memory retrieval.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
memoryContext › entities
Optional short phrases that identify important entities, constraints, or references for future memory retrieval.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
memoryContext › constraints
Optional short phrases that identify important entities, constraints, or references for future memory retrieval.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
includeHiddenPackages
Include hidden packages in search results (hidden packages are excluded by default).
Clear enough to supply this argument.
Annotations100/100
All four behavior hints are declared.
{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Output schema60/100
Declare the result fields and their types in the output schema.
View output schema
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"error": {
"type": "string",
"description": "Error summary when the search failed (isError is set)."
},
"result": {
"description": "Mode-specific structured payload: ranked matches with telemetry, domain browse listing, entity detail, or entity-batch results."
},
"timing": {
"description": "Server-side timing: startedAt, endedAt, durationMs, optional serverTiming phases."
},
"rateLimit": {
"description": "Abuse rate-limit fields when search is refused (code, window, retryAfterSeconds, limit, plan). Omitted otherwise."
},
"entitlement": {
"description": "Focused plan-limit or quota fields when a call is denied. Omitted from ordinary successes."
},
"conversationId": {
"type": "string",
"description": "Tool conversation id; pass it back on subsequent search/execute calls."
}
},
"additionalProperties": false
}