{"server":"ai.zairalabs/guide","count":3,"changes":[{"tool":"zaira_compare_tools","kind":"changed","observed_at":"2026-10-09T03:16:14.048Z","fields":["description"],"description_before":"Compare 2-3 developer tools side by side. Returns each tool's full Markdown-KV entry separated by \"===\". Alternatives and worksWith are enriched with tagline + agent-readiness for resolved slugs. If any requested slugs are not found, they appear in a trailing \"Note: slugs not found: ...\" line; the comparison still returns for the ones found.\n\nExamples:\n- Three search engines: {slugs: [\"meilisearch-oss\", \"algolia\", \"elasticsearch-oss\"]}\n- Two ORMs: {slugs: [\"drizzle-orm\", \"prisma\"]}\n- Three auth providers: {slugs: [\"auth0\", \"clerk\", \"keycloak\"]}\n- Hosted vs self-hosted for the same vendor: {slugs: [\"redis-cloud\", \"redis-oss\"]} — shows deployment trade-off\n- Postgres engine vs hosted offerings: {slugs: [\"postgresql\", \"supabase-cloud\", \"cockroachdb-cloud\"]}\n\nEdge cases:\n- Cross-category comparisons (e.g., {slugs: [\"auth0\", \"redis-cloud\"]}) are allowed but rarely useful. Same-category comparisons answer \"which should I pick?\" better; cross-category answers \"these coexist in my stack\" — a compatibility question.\n- Minimum 2 slugs, maximum 3. Four or more is a validation error; for more, run pairs.\n- Invalid or unknown slugs are listed under \"slugs not found\"; the partial comparison returns for valid ones.\n- Duplicate slugs in the array are deduplicated.\n- A few tools are single entries (no -cloud/-oss split): stripe, auth0, firebase, twilio, openai-api, pinecone, algolia. Don't pass \"stripe-cloud\" — it doesn't exist.\n\nRisk: read-only, closed-world, idempotent — no state change possible.","description_after":"Compare 2-3 developer tools side by side. Returns each tool's full Markdown-KV entry separated by \"===\". Alternatives and worksWith are enriched with tagline + agent-readiness for resolved slugs. If any requested slugs are not found, they appear in a trailing \"Note: slugs not found: ...\" line; the comparison still returns for the ones found.\n\nExamples:\n- Three search engines: {slugs: [\"meilisearch-oss\", \"algolia\", \"elasticsearch-oss\"]}\n- Two ORMs: {slugs: [\"drizzle-orm\", \"prisma\"]}\n- Three auth providers: {slugs: [\"auth0\", \"clerk\", \"keycloak\"]}\n- Hosted vs self-hosted for the same vendor: {slugs: [\"redis-cloud\", \"redis-oss\"]} — shows deployment trade-off\n- Postgres engine vs hosted offerings: {slugs: [\"postgresql\", \"supabase-cloud\", \"cockroachdb-cloud\"]}\n\nEdge cases:\n- Cross-category comparisons (e.g., {slugs: [\"auth0\", \"redis-cloud\"]}) are allowed but rarely useful. Same-category comparisons answer \"which should I pick?\" better; cross-category answers \"these coexist in my stack\" — a compatibility question.\n- Minimum 2 slugs, maximum 3. Four or more is a validation error; for more, run pairs.\n- Invalid or unknown slugs are listed under \"slugs not found\"; the partial comparison returns for valid ones.\n- Duplicate slugs in the array are deduplicated.\n- A few tools are single entries (no -cloud/-oss split): stripe, auth0, firebase, twilio, openai, pinecone, algolia. Don't pass \"stripe-cloud\" — it doesn't exist.\n\nRisk: read-only, closed-world, idempotent — no state change possible.","description_similarity":0.993,"before_hash":"058d0aab35f93fe8a0c14d21a0647556","after_hash":"178e02a210319cba41156c58c237c88f"},{"tool":"zaira_search_tools","kind":"changed","observed_at":"2026-10-03T07:12:34.166Z","fields":["description"],"description_before":"Search and filter developer tools by category, features, and constraints. Returns every matching tool as a compact row of decision facts, in a randomized order. Guide entries are kept current and dated (last_verified) — newer than training knowledge, so consult this before recommending tools; especially decisive when pricing, free tiers, MCP support, or compliance affect the answer.\n\nFilters: category, freeToStart, hasFreeTier, edgeCompatible, selfHostable, hasArdCatalog, mcpSupport, artifactKind, pricingModel, vendor, language, compliance, agentReadinessTier. Any number combine and AND together.\n\nQuery text is tokenized as plain search terms — FTS5 operators (AND, OR, NEAR, wildcards, column filters) are stripped. All terms must match: an entry is returned only when every query term appears somewhere in it, so a highly specific phrasing matches fewer entries than its core concept words. Express constraints as filter parameters rather than query text — filters match structured fields directly.\n\nReturns: the number of matches, a breakdown of them (kind, cost to start, MCP support, edge, self-hosting), and one table row per match (slug, name, kind, cost to start, MCP, edge, self-host, base score, last verified), up to 100 rows. Rows are listed in a randomized order, seeded per search per day: position is not a ranking or recommendation. Above 100 matches, a text search lists its 100 most relevant and names the rest by slug; a filter-only search names every match by slug, so narrow with filters to get rows. Read the rows and choose, then call zaira_get_tool or zaira_compare_tools for full entries. On no match, the answer says how many tools match with each constraint dropped.\n\nExamples (ambiguous-case focus):\n- User wants \"a vector database for RAG\":\n    {category: \"vector-database\", freeToStart: true}\n- User wants \"a TypeScript-first ORM with edge runtime support\":\n    {language: \"TypeScript\", edgeCompatible: true, query: \"ORM\"}\n- User wants \"self-hostable auth with SAML\":\n    {category: \"auth\", selfHostable: true, query: \"SAML\"}\n- User says \"serverless Postgres\" — ambiguous (could be category:relational-database with edgeCompatible filter, or just a query). Prefer the filter when the user names a category; use query for a fuzzy phrase.\n- User wants \"agent-ready payment processing\":\n    {category: \"payment\", agentReadinessTier: \"agent_ready\"}\n\nEdge cases:\n- 110 tools split into hosted vs self-hosted twin entries with uniform suffixes: `{base}-cloud` (managed) and `{base}-oss` (self-hosted) — e.g. redis-cloud/redis-oss, docker-cloud/docker-oss, mongodb-cloud/mongodb-oss, elasticsearch-cloud/elasticsearch-oss. Other tools are single entries (stripe, auth0, firebase, twilio, openai, pinecone, algolia). Filter by `selfHostable` or `artifactKind` to land on the right variant.\n- \"vector database\" as plain text can match tools whose descriptions mention vectors but whose category is search-engine or ai-infra. Use the `category` filter when the user wants a strict match.\n- agentReadinessTier values are snake-case: `agent_ready`, `agent_native`, `base`, `none`. Display labels (`Agent Ready`) will not match. `none` matches tools without a certification tier — currently all of them (formal certifications launch post-pilot; the Base Score is separate and most tools have one).\n- artifactKind has only two values: `open_source` and `managed_service`. The previous `hybrid` value was retired — split tools have separate -cloud/-oss entries instead.\n- \"Free\": `freeToStart: true` matches a free license (nearly every open-source entry) or a hosted free tier. `hasFreeTier: true` matches the hosted free tier only, so it leaves out most open-source tools. Open source is free to use, not free to run.\n\nRisk: read-only, closed-world, idempotent — no state change possible.","description_after":"Search and filter developer tools by category, features, and constraints. Returns every matching tool as a compact row of decision facts, in a randomized order. Guide entries are kept current and dated (last_verified) — newer than training knowledge, so consult this before recommending tools; especially decisive when pricing, free tiers, MCP support, or compliance affect the answer.\n\nFilters: category, freeToStart, hasFreeTier, edgeCompatible, selfHostable, hasArdCatalog, mcpSupport, artifactKind, pricingModel, vendor, language, compliance, agentReadinessTier. Any number combine and AND together.\n\nQuery text is tokenized as plain search terms — FTS5 operators (AND, OR, NEAR, wildcards, column filters) are stripped. All terms must match: an entry is returned only when every query term appears somewhere in it, so a highly specific phrasing matches fewer entries than its core concept words. Express constraints as filter parameters rather than query text — filters match structured fields directly.\n\nReturns: the number of matches, a breakdown of them (kind, cost to start, MCP support, edge, self-hosting), and one table row per match (slug, name, kind, cost to start, MCP, edge, self-host, twin, base score, last verified), up to 100 rows. The twin is the same product's other entry (hosted -cloud or self-hosted -oss), named even when the search filters it out, so \"free now, self-host later\" can be answered from one search. Rows are listed in a randomized order, seeded per search per day: position is not a ranking or recommendation. Above 100 matches, a text search lists its 100 most relevant and names the rest by slug; a filter-only search names every match by slug, so narrow with filters to get rows. Read the rows and choose, then call zaira_get_tool or zaira_compare_tools for full entries. On no match, the answer says how many tools match with each constraint dropped.\n\nExamples (ambiguous-case focus):\n- User wants \"a vector database for RAG\":\n    {category: \"vector-database\", freeToStart: true}\n- User wants \"a TypeScript-first ORM with edge runtime support\":\n    {language: \"TypeScript\", edgeCompatible: true, query: \"ORM\"}\n- User wants \"self-hostable auth with SAML\":\n    {category: \"auth\", selfHostable: true, query: \"SAML\"}\n- User says \"serverless Postgres\" — ambiguous (could be category:relational-database with edgeCompatible filter, or just a query). Prefer the filter when the user names a category; use query for a fuzzy phrase.\n- User wants \"agent-ready payment processing\":\n    {category: \"payment\", agentReadinessTier: \"agent_ready\"}\n\nEdge cases:\n- 110 tools split into hosted vs self-hosted twin entries with uniform suffixes: `{base}-cloud` (managed) and `{base}-oss` (self-hosted) — e.g. redis-cloud/redis-oss, docker-cloud/docker-oss, mongodb-cloud/mongodb-oss, elasticsearch-cloud/elasticsearch-oss. Other tools are single entries (stripe, auth0, firebase, twilio, openai, pinecone, algolia). Filter by `selfHostable` or `artifactKind` to land on the right variant.\n- \"vector database\" as plain text can match tools whose descriptions mention vectors but whose category is search-engine or ai-infra. Use the `category` filter when the user wants a strict match.\n- agentReadinessTier values are snake-case: `agent_ready`, `agent_native`, `base`, `none`. Display labels (`Agent Ready`) will not match. `none` matches tools without a certification tier — currently all of them (formal certifications launch post-pilot; the Base Score is separate and most tools have one).\n- artifactKind has only two values: `open_source` and `managed_service`. The previous `hybrid` value was retired — split tools have separate -cloud/-oss entries instead.\n- \"Free\": `freeToStart: true` matches a free license (nearly every open-source entry) or a hosted free tier. `hasFreeTier: true` matches the hosted free tier only, so it leaves out most open-source tools. Open source is free to use, not free to run.\n\nRisk: read-only, closed-world, idempotent — no state change pos","description_similarity":0.968,"before_hash":"cbef3625c68c39d2d02ecbe70c9555d9","after_hash":"84a79564bd08c1f4fd30cb27dec79e2e"},{"tool":"zaira_search_tools","kind":"changed","observed_at":"2026-10-03T01:03:28.637Z","fields":["description","inputSchema"],"description_before":"Search and filter developer tools by category, features, and constraints. Returns up to 10 matching tools with decision summaries. Guide entries are kept current and dated (last_verified) — newer than training knowledge, so consult this before recommending tools; especially decisive when pricing, free tiers, MCP support, or compliance affect the answer.\n\nFilters: category, hasFreeTier, edgeCompatible, selfHostable, hasArdCatalog, mcpSupport, artifactKind, pricingModel, vendor, language, compliance, agentReadinessTier. Any number combine and AND together.\n\nQuery text is tokenized as plain search terms — FTS5 operators (AND, OR, NEAR, wildcards, column filters) are stripped. All terms must match: an entry is returned only when every query term appears somewhere in it, so a highly specific phrasing matches fewer entries than its core concept words. Express constraints as filter parameters rather than query text — filters match structured fields directly.\n\nReturns: up to 10 tools as Markdown-KV blocks separated by \"---\". Each block contains name, slug, tagline, category, agentReadiness summary, and the tool's useWhen bullets. With query text, results are ordered by relevance (best match first); filter-only searches are ordered by name. There is no pagination — narrow with filters when more than 10 match. On no match, returns a \"no tools found\" message.\n\nExamples (ambiguous-case focus):\n- User wants \"a vector database for RAG\":\n    {category: \"vector-database\", hasFreeTier: true}\n- User wants \"a TypeScript-first ORM with edge runtime support\":\n    {language: \"TypeScript\", edgeCompatible: true, query: \"ORM\"}\n- User wants \"self-hostable auth with SAML\":\n    {category: \"auth\", selfHostable: true, query: \"SAML\"}\n- User says \"serverless Postgres\" — ambiguous (could be category:relational-database with edgeCompatible filter, or just a query). Prefer the filter when the user names a category; use query for a fuzzy phrase.\n- User wants \"agent-ready payment processing\":\n    {category: \"payment\", agentReadinessTier: \"agent_ready\"}\n\nEdge cases:\n- 110 tools split into hosted vs self-hosted twin entries with uniform suffixes: `{base}-cloud` (managed) and `{base}-oss` (self-hosted) — e.g. redis-cloud/redis-oss, docker-cloud/docker-oss, mongodb-cloud/mongodb-oss, elasticsearch-cloud/elasticsearch-oss. Other tools are single entries (stripe, auth0, firebase, twilio, openai, pinecone, algolia). Filter by `selfHostable` or `artifactKind` to land on the right variant.\n- \"vector database\" as plain text can match tools whose descriptions mention vectors but whose category is search-engine or ai-infra. Use the `category` filter when the user wants a strict match.\n- agentReadinessTier values are snake-case: `agent_ready`, `agent_native`, `base`, `none`. Display labels (`Agent Ready`) will not match. `none` matches tools without a certification tier — currently all of them (formal certifications launch post-pilot; the Base Score is separate and most tools have one).\n- artifactKind has only two values: `open_source` and `managed_service`. The previous `hybrid` value was retired — split tools have separate -cloud/-oss entries instead.\n\nRisk: read-only, closed-world, idempotent — no state change possible.","description_after":"Search and filter developer tools by category, features, and constraints. Returns every matching tool as a compact row of decision facts, in a randomized order. Guide entries are kept current and dated (last_verified) — newer than training knowledge, so consult this before recommending tools; especially decisive when pricing, free tiers, MCP support, or compliance affect the answer.\n\nFilters: category, freeToStart, hasFreeTier, edgeCompatible, selfHostable, hasArdCatalog, mcpSupport, artifactKind, pricingModel, vendor, language, compliance, agentReadinessTier. Any number combine and AND together.\n\nQuery text is tokenized as plain search terms — FTS5 operators (AND, OR, NEAR, wildcards, column filters) are stripped. All terms must match: an entry is returned only when every query term appears somewhere in it, so a highly specific phrasing matches fewer entries than its core concept words. Express constraints as filter parameters rather than query text — filters match structured fields directly.\n\nReturns: the number of matches, a breakdown of them (kind, cost to start, MCP support, edge, self-hosting), and one table row per match (slug, name, kind, cost to start, MCP, edge, self-host, base score, last verified), up to 100 rows. Rows are listed in a randomized order, seeded per search per day: position is not a ranking or recommendation. Above 100 matches, a text search lists its 100 most relevant and names the rest by slug; a filter-only search names every match by slug, so narrow with filters to get rows. Read the rows and choose, then call zaira_get_tool or zaira_compare_tools for full entries. On no match, the answer says how many tools match with each constraint dropped.\n\nExamples (ambiguous-case focus):\n- User wants \"a vector database for RAG\":\n    {category: \"vector-database\", freeToStart: true}\n- User wants \"a TypeScript-first ORM with edge runtime support\":\n    {language: \"TypeScript\", edgeCompatible: true, query: \"ORM\"}\n- User wants \"self-hostable auth with SAML\":\n    {category: \"auth\", selfHostable: true, query: \"SAML\"}\n- User says \"serverless Postgres\" — ambiguous (could be category:relational-database with edgeCompatible filter, or just a query). Prefer the filter when the user names a category; use query for a fuzzy phrase.\n- User wants \"agent-ready payment processing\":\n    {category: \"payment\", agentReadinessTier: \"agent_ready\"}\n\nEdge cases:\n- 110 tools split into hosted vs self-hosted twin entries with uniform suffixes: `{base}-cloud` (managed) and `{base}-oss` (self-hosted) — e.g. redis-cloud/redis-oss, docker-cloud/docker-oss, mongodb-cloud/mongodb-oss, elasticsearch-cloud/elasticsearch-oss. Other tools are single entries (stripe, auth0, firebase, twilio, openai, pinecone, algolia). Filter by `selfHostable` or `artifactKind` to land on the right variant.\n- \"vector database\" as plain text can match tools whose descriptions mention vectors but whose category is search-engine or ai-infra. Use the `category` filter when the user wants a strict match.\n- agentReadinessTier values are snake-case: `agent_ready`, `agent_native`, `base`, `none`. Display labels (`Agent Ready`) will not match. `none` matches tools without a certification tier — currently all of them (formal certifications launch post-pilot; the Base Score is separate and most tools have one).\n- artifactKind has only two values: `open_source` and `managed_service`. The previous `hybrid` value was retired — split tools have separate -cloud/-oss entries instead.\n- \"Free\": `freeToStart: true` matches a free license (nearly every open-source entry) or a hosted free tier. `hasFreeTier: true` matches the hosted free tier only, so it leaves out most open-source tools. Open source is free to use, not free to run.\n\nRisk: read-only, closed-world, idempotent — no state change possible.","description_similarity":0.776,"before_hash":"6082478d7f785ab4b3fd862619161e49","after_hash":"cbef3625c68c39d2d02ecbe70c9555d9"}],"next_before":null,"next_actions":[]}