Title94/100
Search Capabilities, Guides, Packages, Integrations, and Secrets
Shorten the title to an action and subject; move usage details into the description.
Description94/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.
Inputs80/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.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
entity
Optional exact entity reference "{type}:{id}" (capability, guide, integration, mcp-server, package, or secret), or an array of 1–10 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.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
limit
Max 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
Max response size in characters 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 schema63/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
}