Revuo
Agent-callable B2B SaaS directory: capability-structured, continuously verified listings.
Sollte ich dies verwenden
Qualität und Sicherheit
Befunde (17)
- HIGH
- MEDIUMin mcp.score_server
- MEDIUMin directory.overview
- LOWin tools.get
- LOWin categories.list
- LOWin mcp.score_server
- LOWin products.get_mcp_setup
- LOWin products.get
- LOWin tools.find_for_task
- LOWin directory.overview
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"revuo": {
"url": "https://www.revuo.ai/api/mcp"
}
}
}Remote-Endpunkte
https://www.revuo.ai/api/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (14)
🟢tools.get(productSlug, name)
Get detailed information about a specific MCP tool, scoped to one product. Pass both the productSlug and the tool name — same-named tools across products are distinct. Response: { tool: { normalizedName, displayName, description, inputSchema, productSlug, productName, serverQualifiedName, isRemoteCapable, accessModel, healthScore, readOnly, destructive, tier, unverified, verifiedAt, position (always 1), rank (always 1.0) } }. Errors: { error: { code: 'not_found', ... } }.
Eingabe-Schema
{
"type": "object",
"properties": {
"productSlug": {
"description": "Slug of the product that exposes this tool (e.g. 'linear', 'github')",
"type": "string"
},
"name": {
"description": "Normalized tool name (e.g. 'search_issues', 'send_message')",
"type": "string"
}
},
"required": [
"productSlug",
"name"
]
}Ausgabe-Schema
{
"type": "object",
"properties": {
"tool": {
"type": [
"object",
"null"
],
"properties": {
"position": {
"type": "integer"
},
"rank": {
"type": "number"
},
"normalizedName": {
"type": "string"
},
"displayName": {
"type": "string"
},
"description": {
"type": [
"string",
"null"
]
},
"inputSchema": true,
"productSlug": {
"type": "string"
},
"productName": {
"type": "string"
},
"serverQualifiedName": {
"type": [
"string",
"null"
]
},
"isRemoteCapable": {
"type": "boolean"
},
"tier": {
"type": "string",
"enum": [
"Free",
"Verified",
"Featured"
]
},
"houseProduct": {
"type": [
"boolean",
"null"
]
},
"sponsored": {
"type": [
"boolean",
"null"
]
},
"unverified": {
"type": [
"boolean",
"null"
]
},
"verifiedAt": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"relevance": {
"type": [
"integer",
"null"
]
},
"accessModel": {
"type": [
"string",
"null"
],
"enum": [
"Unknown",
"Open",
"Keyed",
"Account",
"Commercial",
null
]
},
"healthScore": {
"type": [
"integer",
"null"
]
},
"readOnly": {
"type": [
"boolean",
"null"
]
},
"destructive": {
"type": [
"boolean",
"null"
]
},
"callableNow": {
"type": [
"boolean",
"null"
]
},
"setup": {
"type": [
"string",
"null"
]
}
},
"required": [
"position",
"rank",
"normalizedName",
"displayName",
"productSlug",
"productName"
]
},
"error": {
"type": [
"object",
"null"
],
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"resource": {
"type": [
"string",
"null"
]
},
"id": {
"type": [
"string",
"null"
]
},
"field": {
"type": [
"string",
"null"
]
},
"hint": {
"type": [
"string",
"null"
]
}
},
"required": [
"code",
"message"
]
}
}
}🟢categories.list
Lists all product categories in the directory. Use category slugs to filter product searches in products.search / products.find_by_capability. Response: { categories: [{ slug, name, description }] }. Note: this is a thin call. For a full directory briefing (subcategories, capability slugs per category, product counts, locked-vertical flags), prefer directory.overview as a single up-front call.
Eingabe-Schema
{
"type": "object",
"properties": {}
}Ausgabe-Schema
{
"type": "object",
"properties": {
"categories": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": [
"string",
"null"
]
}
},
"required": [
"slug",
"name",
"description"
]
}
},
"error": {
"type": [
"object",
"null"
],
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"resource": {
"type": [
"string",
"null"
]
},
"id": {
"type": [
"string",
"null"
]
},
"field": {
"type": [
"string",
"null"
]
},
"hint": {
"type": [
"string",
"null"
]
}
},
"required": [
"code",
"message"
]
}
}
}🟢mcp.score_server(slug, url, refresh)
Score an MCP server against the Revuo quality rubric. Pass either a product slug (scored from cached probe data on the product's direct-probe MCP entry; fast) OR an endpoint URL (probed live). Returns: { target, server, summary { coreAwarded/Max/Percent, extensionAwarded/Max/Percent, probedAt }, categories[] (ServerMetadata, CapabilityQuality, ConfigurationUX, RevuoExtensions), checks[] (every rubric check with awarded/max/passed/evaluated/fixSuggestion/evidence), topFixes[] (failed checks ranked by points-at-stake), probe (probe diagnostics) }. Core score (max 100) is Smithery-comparable. Extension score covers Revuo-specific signals (response time today; freshness, error envelope, schema stability are not yet implemented and report evaluated=false — excluded from totals, never counted as a failure). A check with evaluated=false is a Revuo gap, not the server's fault. Errors: { error: { code: 'bad_input'|'not_found', ... } }.
Eingabe-Schema
{
"type": "object",
"properties": {
"slug": {
"description": "Product slug whose direct-probe MCP server to score. Mutually exclusive with url.",
"type": [
"string",
"null"
],
"default": null
},
"url": {
"description": "MCP endpoint URL (HTTPS) to probe and score. Mutually exclusive with slug.",
"type": [
"string",
"null"
],
"default": null
},
"refresh": {
"description": "When passing slug, force a fresh probe instead of using cached probe data. Default false.",
"type": "boolean",
"default": false
}
}
}Ausgabe-Schema
{
"type": "object",
"properties": {
"target": {
"type": [
"object",
"null"
],
"properties": {
"kind": {
"type": "string"
},
"value": {
"type": "string"
}
},
"required": [
"kind",
"value"
]
},
"server": {
"type": [
"object",
"null"
],
"properties": {
"name": {
"type": [
"string",
"null"
]
},
"title": {
"type": [
"string",
"null"
]
},
"version": {
"type": [
"string",
"null"
]
},
"description": {
"type": [
"string",
"null"
]
},
"websiteUrl": {
"type": [
"string",
"null"
]
},
"protocolVersion": {
"type": [
"string",
"null"
]
},
"toolCount": {
"type": "integer"
}
},
"required": [
"name",
"title",
"version",
"description",
"websiteUrl",
"protocolVersion",
"toolCount"
]
},
"summary": {
"type": [
"object",
"null"
],
"properties": {
"coreAwarded": {
"type": "number"
},
"coreMax": {
"type": "number"
},
"corePercent": {
"type": "number"
},
"extensionAwarded": {
"type": "number"
},
"extensionMax": {
"type": "number"
},
"extensionPercent": {
"type": "number"
},
"probedAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"coreAwarded",
"coreMax",
"corePercent",
"extensionAwarded",
"extensionMax",
"extensionPercent",
"probedAt"
]
},
"categories": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"properties": {
"category": {
"type": "string"
},
"awarded": {
"type": "number"
},
"max": {
"type": "number"
},
"percent": {
"type": "number"
},
"passed": {
"type": "integer"
},
"total": {
"type": "integer"
},
"isCore": {
"type": "boolean"
}
},
"required": [
"category",
"awarded",
"max",
"percent",
"passed",
"total",
"isCore"
]
}
},
"checks": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"category": {
"type": "string"
},
"name": {
"type": "string"
},
"awarded": {
"type": "number"
},
"max": {
"type": "number"
},
"passed": {
"type": "boolean"
},
"isCore": {
"type": "boolean"
},
"fixSuggestion": {
"type": [
"string",
"null"
]
},
"evidence": {
"type": [
"string",
"null"
]
},
"evaluated": {
"type": "boolean",
"default": true
}
},
"required": [
"id",
"category",
"name",
"awarded",
"max",
"passed",
"isCore",
"fixSuggestion",
"evidence"
]
}
},
"topFixes": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"category": {
"type": "string"
},
"pointsAtStake": {
"type": "number"
},
"suggestion": {
"type": "string"
}
},
"required": [
"id",
"category",
"pointsAtStake",
"suggestion"
]
}
},
"probe": {
"type": [
"object",
"null"
],
"properties": {
"fromCache": {
"type": "boolean"
},
"success": {
"type": "boolean"
},
"responseTimeMs": {
"type": "integer"
},
"error": {
"type": [
"string",
"null"
]
},
"endpoint": {
"type": [
"string",
"null"
]
}
},
"required": [
"fromCache",
"success",
"responseTimeMs",
"error",
"endpoint"
]
},
"error": {
"type": [
"object",
"null"
],
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"resource": {
"type": [
"string",
"null"
]
},
"id": {
"type": [
"string",
"null"
]
},
"field": {
"type": [
"string",
"null"
]
},
"hint": {
"type": [
"string",
"null"
]
}
},
"required": [
"code",
"message"
]
}
}
}🟢products.get_mcp_setup(slug)
Get MCP server setup instructions for a product. Returns available servers, their tools, connection details, and whether they support remote (hosted) access. Each server carries a machine-usable connect block: { transport ('http'|'local'), url, mcpJson (paste-ready snippet), claudeMcpAddCommand (`claude mcp add ...`), installLinkUrl (a tracked link that routes through Revuo for vendor attribution, then redirects to the product) }. For remote servers use mcpJson/claudeMcpAddCommand directly; for local servers follow repositoryUrl. Each server also carries schema { hash, stable, lastChangeAt } — cache the hash and pass it to tools.changes(knownHash) later to detect tool-schema drift (rug-pull / tool-poisoning). Response when MCP support exists: { product: { slug, name, websiteUrl, tier, unverified, verifiedAt }, hasMcpSupport: true, totalToolCount, servers[], agentReadiness? }. Response when product exists but lacks MCP: { product: {...}, hasMcpSupport: false, message }. Errors: { error: { code: 'not_found', ... } }.
Eingabe-Schema
{
"type": "object",
"properties": {
"slug": {
"description": "Product slug (URL-friendly identifier)",
"type": "string"
}
},
"required": [
"slug"
]
}Ausgabe-Schema
{
"type": "object",
"properties": {
"product": {
"type": [
"object",
"null"
],
"properties": {
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"websiteUrl": {
"type": "string"
},
"tier": {
"type": "string",
"enum": [
"Free",
"Verified",
"Featured"
]
},
"unverified": {
"type": [
"boolean",
"null"
]
},
"verifiedAt": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"houseProduct": {
"type": [
"boolean",
"null"
],
"default": null
},
"sponsored": {
"type": [
"boolean",
"null"
],
"default": null
}
},
"required": [
"slug",
"name",
"websiteUrl",
"tier",
"unverified",
"verifiedAt"
]
},
"hasMcpSupport": {
"type": [
"boolean",
"null"
]
},
"totalToolCount": {
"type": [
"integer",
"null"
]
},
"servers": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"properties": {
"qualifiedName": {
"type": "string"
},
"displayName": {
"type": "string"
},
"description": {
"type": [
"string",
"null"
]
},
"repositoryUrl": {
"type": [
"string",
"null"
]
},
"isVerified": {
"type": "boolean"
},
"verifiedSource": {
"type": "string",
"enum": [
"None",
"Probe",
"Registry"
]
},
"isRemoteCapable": {
"type": "boolean"
},
"useCount": {
"type": "integer"
},
"license": {
"type": [
"string",
"null"
]
},
"registries": {
"type": "array",
"items": {
"type": "string"
}
},
"tools": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"description": {
"type": [
"string",
"null"
]
},
"inputSchema": true
},
"required": [
"name",
"description",
"inputSchema"
]
}
},
"setup": {
"type": "object",
"properties": {
"steps": {
"type": "array",
"items": {
"type": "string"
}
},
"isRemote": {
"type": "boolean"
},
"repositoryUrl": {
"type": [
"string",
"null"
]
}
},
"required": [
"steps",
"isRemote",
"repositoryUrl"
]
},
"connect": {
"type": "object",
"properties": {
"transport": {
"type": "string"
},
"url": {
"type": [
"string",
"null"
]
},
"mcpJson": {
"type": [
"string",
"null"
]
},
"claudeMcpAddCommand": {
"type": [
"string",
"null"
]
},
"installLinkUrl": {
"type": "string"
}
},
"required": [
"transport",
"url",
"mcpJson",
"claudeMcpAddCommand",
"installLinkUrl"
]
},
"schema": {
"type": "object",
"properties": {
"hash": {
"type": [
"string",
"null"
]
},
"stable": {
"type": "boolean"
},
"lastChangeAt": {
"type": [
"string",
"null"
],
"format": "date-time"
}
},
"required": [
"hash",
"stable",
"lastChangeAt"
]
}
},
"required": [
"qualifiedName",
"displayName",
"description",
"repositoryUrl",
"isVerified",
"verifiedSource",
"isRemoteCapable",
"useCount",
"license",
"registries",
"tools",
"setup",
"connect",
"schema"
]
}
},
"agentReadiness": {
"type": [
"object",
"null"
],
"properties": {
"compositeScore": {
"type": "number"
},
"api": {
"type": "object",
"properties": {
"hasPublicApi": {
"type": "boolean"
},
"apiStyles": {
"type": "array",
"items": {
"type": "string"
}
},
"authModels": {
"type": "array",
"items": {
"type": "string"
}
},
"hasFreeTier": {
"type": "boolean"
}
},
"required": [
"hasPublicApi",
"apiStyles",
"authModels",
"hasFreeTier"
]
},
"aiSummary": {
"type": [
"string",
"null"
]
}
},
"required": [
"compositeScore",
"api",
"aiSummary"
]
},
"message": {
"type": [
"string",
"null"
]
},
"error": {
"type": [
"object",
"null"
],
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"resource": {
"type": [
"string",
"null"
]
},
"id": {
"type": [
"string",
"null"
]
},
"field": {
"type": [
"string",
"null"
]
},
"hint": {
"type": [
"string",
"null"
]
}
},
"required": [
"code",
"message"
]
}
}
}🟢products.get(slug)
Get full details for a product by slug, including MCP integration data, product-bound agent artifacts (Agent Skills, Grok Bots), and agent readiness scores. Agent artifacts are a property of the product — not directory categories. Response: { product: { slug, name, tagline, description, websiteUrl, logoUrl, pricingModel, currentScore (0-100), tier (free|verified|featured), unverified (true when no approved vendor claim), verifiedAt (ISO; absent if never crawled), categories[], knownLimitations?[] (sourced weaknesses, each with evidenceUrl — weigh before recommending), alternatives?[] (neutral, score-ranked same-category options, self excluded, houseProduct disclosed) }, mcp?: { hasMcpSupport, totalToolCount, totalUseCount, servers[] }, agentArtifacts[] (kind agentSkill|grokBot, install URLs, related product slugs), agentReadiness?: { compositeScore (0-100), aiSummary } }. Errors: { error: { code: 'not_found', ... } }.
Eingabe-Schema
{
"type": "object",
"properties": {
"slug": {
"description": "Product slug (URL-friendly identifier)",
"type": "string"
}
},
"required": [
"slug"
]
}Ausgabe-Schema
{
"type": "object",
"properties": {
"product": {
"type": [
"object",
"null"
],
"properties": {
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"tagline": {
"type": [
"string",
"null"
]
},
"description": {
"type": [
"string",
"null"
]
},
"websiteUrl": {
"type": "string"
},
"logoUrl": {
"type": [
"string",
"null"
]
},
"pricingModel": {
"type": "string",
"enum": [
"Free",
"Freemium",
"Paid",
"Enterprise",
"ContactUs"
]
},
"currentScore": {
"type": "number"
},
"tier": {
"type": "string",
"enum": [
"Free",
"Verified",
"Featured"
]
},
"houseProduct": {
"type": [
"boolean",
"null"
]
},
"sponsored": {
"type": [
"boolean",
"null"
]
},
"unverified": {
"type": [
"boolean",
"null"
]
},
"verifiedAt": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"categories": {
"type": "array",
"items": {
"type": "string"
}
},
"knownLimitations": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"properties": {
"summary": {
"type": "string"
},
"detail": {
"type": [
"string",
"null"
]
},
"evidenceUrl": {
"type": "string"
},
"source": {
"type": "string",
"enum": [
"UserReview",
"Editorial",
"CapabilityGap",
"ExternalSource"
]
},
"severity": {
"type": "string",
"enum": [
"Minor",
"Notable",
"Significant"
]
}
},
"required": [
"summary",
"detail",
"evidenceUrl",
"source",
"severity"
]
}
},
"alternatives": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"tagline": {
"type": [
"string",
"null"
]
},
"currentScore": {
"type": "number"
},
"tier": {
"type": "string",
"enum": [
"Free",
"Verified",
"Featured"
]
},
"houseProduct": {
"type": [
"boolean",
"null"
]
},
"unverified": {
"type": [
"boolean",
"null"
]
}
},
"required": [
"slug",
"name",
"tagline",
"currentScore",
"tier",
"houseProduct",
"unverified"
]
}
}
},
"required": [
"slug",
"name",
"websiteUrl",
"categories"
]
},
"mcp": {
"type": [
"object",
"null"
],
"properties": {
"hasMcpSupport": {
"type": "boolean"
},
"totalToolCount": {
"type": "integer"
},
"totalUseCount": {
"type": "integer"
},
"servers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"qualifiedName": {
"type": "string"
},
"displayName": {
"type": "string"
},
"isVerified": {
"type": "boolean"
},
"verifiedSource": {
"type": "string",
"enum": [
"None",
"Probe",
"Registry"
]
},
"isRemoteCapable": {
"type": "boolean"
},
"useCount": {
"type": "integer"
},
"toolCount": {
"type": "integer"
}
},
"required": [
"qualifiedName",
"displayName",
"isVerified",
"verifiedSource",
"isRemoteCapable",
"useCount",
"toolCount"
]
}
}
},
"required": [
"hasMcpSupport",
"totalToolCount",
"totalUseCount",
"servers"
]
},
"agentArtifacts": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"kind": {
"type": "string",
"enum": [
"AgentSkill",
"GrokBot"
]
},
"name": {
"type": "string"
},
"description": {
"type": [
"string",
"null"
]
},
"runtimes": {
"type": "array",
"items": {
"type": "string",
"enum": [
"ClaudeCode",
"ClaudeAi",
"GrokBuild",
"GrokBot",
"Codex",
"Cursor",
"GeminiCli",
"OpenCode",
"Generic"
]
}
},
"skillMdUrl": {
"type": [
"string",
"null"
]
},
"digest": {
"type": [
"string",
"null"
]
},
"installCommand": {
"type": [
"string",
"null"
]
},
"grokShareUrl": {
"type": [
"string",
"null"
]
},
"lastVerifiedAt": {
"type": [
"string",
"null"
],
"format": "date-time"
}
},
"required": [
"slug",
"kind",
"name",
"description",
"runtimes",
"skillMdUrl",
"digest",
"installCommand",
"grokShareUrl",
"lastVerifiedAt"
]
}
},
"agentReadiness": {
"type": [
"object",
"null"
],
"properties": {
"compositeScore": {
"type": "number"
},
"aiSummary": {
"type": [
"string",
"null"
]
}
},
"required": [
"compositeScore",
"aiSummary"
]
},
"error": {
"type": [
"object",
"null"
],
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"resource": {
"type": [
"string",
"null"
]
},
"id": {
"type": [
"string",
"null"
]
},
"field": {
"type": [
"string",
"null"
]
},
"hint": {
"type": [
"string",
"null"
]
}
},
"required": [
"code",
"message"
]
}
}
}🟢tools.find_for_task(taskDescription, remoteOnly, access, limit)
Find the best MCP tools for a given task. Describe what you want to accomplish (e.g. 'manage github issues', 'send slack messages', 'query a database') and get ranked results — each result is one (product, tool) pair, since same-named tools across providers are NOT interchangeable. By default only shows tools available via remote (network-hosted) servers. Audience: agent builders looking for installable MCP tools — for B2B SaaS recommendations, prefer products.search or products.find_by_capability. Ranking basis: relevance score desc (+1 per term hit, +3 for full-phrase hit); within an equal relevance tier, callable-now (Open access) + remote + healthy tools are boosted ahead — never a hard filter (a product-bound tool stays in its own money query), then productName. Paid tier is NOT a ranking input — it appears only as an annotation. Every result carries { position (1-based), rank (0..1; 1.0 = top, scales linearly down by ordinal position) } plus preflight annotations { accessModel (open|keyed|account|commercial), healthScore (0-100, nullable), readOnly, destructive, callableNow (true = usable anonymously right now), setup (one-line 'how to get access' pointer for non-Open tools) }. Response: { task, matchType (none|exactSlug|canonicalSlug|nlpFallback), resolvedCapabilities[], capabilityProducts[] (B2B SaaS products that claim the same capability — empty when matchType=none), results[] (MCP-tool-level matches), buckets { callableNow, requiresSetup } }. Each result: { position, rank, normalizedName, displayName, description, inputSchema, relevance, accessModel, healthScore, readOnly, destructive, callableNow, setup, productSlug, productName, serverQualifiedName, isRemoteCapable, tier, unverified, verifiedAt }. Empty case: { task, matchType, message, suggestedQueries[], suggestedCapabilities[] }.
Eingabe-Schema
{
"type": "object",
"properties": {
"taskDescription": {
"description": "Natural language description of the task you want to accomplish",
"type": "string"
},
"remoteOnly": {
"description": "If true (default), only return tools from remote-capable MCP servers",
"type": "boolean",
"default": true
},
"access": {
"description": "Optional access-class filter: 'open' (callable anonymously), 'keyed', 'account', 'commercial', or 'unknown'. Omit for all — Open tools are boosted, not required.",
"type": [
"string",
"null"
],
"default": null
},
"limit": {
"description": "Maximum number of tool results to return",
"type": "integer",
"default": 10
}
},
"required": [
"taskDescription"
]
}Ausgabe-Schema
{
"type": "object",
"properties": {
"task": {
"type": [
"string",
"null"
]
},
"matchType": {
"type": [
"string",
"null"
],
"enum": [
"None",
"ExactSlug",
"CanonicalSlug",
"NlpFallback",
null
]
},
"resolvedCapabilities": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"kind": {
"type": "string",
"enum": [
"Unspecified",
"Integration",
"Compliance",
"Format",
"Standard",
"Workflow"
]
}
},
"required": [
"slug",
"name",
"kind"
]
}
},
"capabilityProducts": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"properties": {
"position": {
"type": "integer"
},
"rank": {
"type": "number"
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"tagline": {
"type": [
"string",
"null"
]
},
"websiteUrl": {
"type": "string"
},
"tier": {
"type": "string",
"enum": [
"Free",
"Verified",
"Featured"
]
},
"houseProduct": {
"type": [
"boolean",
"null"
]
},
"sponsored": {
"type": [
"boolean",
"null"
]
},
"unverified": {
"type": [
"boolean",
"null"
]
},
"verifiedAt": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"matchedCapabilities": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"position",
"rank",
"slug",
"name",
"websiteUrl",
"matchedCapabilities"
]
}
},
"results": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"properties": {
"position": {
"type": "integer"
},
"rank": {
"type": "number"
},
"normalizedName": {
"type": "string"
},
"displayName": {
"type": "string"
},
"description": {
"type": [
"string",
"null"
]
},
"inputSchema": true,
"productSlug": {
"type": "string"
},
"productName": {
"type": "string"
},
"serverQualifiedName": {
"type": [
"string",
"null"
]
},
"isRemoteCapable": {
"type": "boolean"
},
"tier": {
"type": "string",
"enum": [
"Free",
"Verified",
"Featured"
]
},
"houseProduct": {
"type": [
"boolean",
"null"
]
},
"sponsored": {
"type": [
"boolean",
"null"
]
},
"unverified": {
"type": [
"boolean",
"null"
]
},
"verifiedAt": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"relevance": {
"type": [
"integer",
"null"
]
},
"accessModel": {
"type": [
"string",
"null"
],
"enum": [
"Unknown",
"Open",
"Keyed",
"Account",
"Commercial",
null
]
},
"healthScore": {
"type": [
"integer",
"null"
]
},
"readOnly": {
"type": [
"boolean",
"null"
]
},
"destructive": {
"type": [
"boolean",
"null"
]
},
"callableNow": {
"type": [
"boolean",
"null"
]
},
"setup": {
"type": [
"string",
"null"
]
}
},
"required": [
"position",
"rank",
"normalizedName",
"displayName",
"productSlug",
"productName"
]
}
},
"buckets": {
"type": [
"object",
"null"
],
"properties": {
"callableNow": {
"type": "integer"
},
"requiresSetup": {
"type": "integer"
}
},
"required": [
"callableNow",
"requiresSetup"
]
},
"message": {
"type": [
"string",
"null"
]
},
"suggestedQueries": {
"type": [
"array",
"null"
],
"items": {
"type": "string"
}
},
"suggestedCapabilities": {
"type": [
"array",
"null"
],
"items": {
"type": "string"
}
},
"error": {
"type": [
"object",
"null"
],
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"resource": {
"type": [
"string",
"null"
]
},
"id": {
"type": [
"string",
"null"
]
},
"field": {
"type": [
"string",
"null"
]
},
"hint": {
"type": [
"string",
"null"
]
}
},
"required": [
"code",
"message"
]
}
}
}🟢directory.overview
Single 'call this first' entry-point that briefs an agent on the entire Revuo directory. Returns the taxonomy with subcategories, product counts per category, locked-vertical flags (the three verticals Revuo prioritizes), capability slugs valid per category, the canonical capability-kind taxonomy (integration/compliance/format/standard/workflow), and product-bound agent surfaces (mcpServer, agentSkill, grokBot). Surfaces are a property of a product — they are NOT category slugs. Use this once at the start of a session to ground every subsequent products.search / products.find_by_capability / tools.find_for_task call. Response: { directory: { name, tagline, url, policyUrl, capabilityKinds[] }, lockedVerticals[], categories[] (each with subcategories[], productCount, isLockedVertical, capabilitySlugs[]), surfaces[] (kind, description, listedOn=product), tools: { ...tool-name hints } }.
Eingabe-Schema
{
"type": "object",
"properties": {}
}Ausgabe-Schema
{
"type": "object",
"properties": {
"directory": {
"type": [
"object",
"null"
],
"properties": {
"name": {
"type": "string"
},
"tagline": {
"type": "string"
},
"url": {
"type": "string"
},
"policyUrl": {
"type": "string"
},
"capabilityTaxonomyUrl": {
"type": "string"
},
"capabilityKinds": {
"type": "array",
"items": {
"type": "object",
"properties": {
"kind": {
"type": "string"
},
"description": {
"type": "string"
}
},
"required": [
"kind",
"description"
]
}
}
},
"required": [
"name",
"tagline",
"url",
"policyUrl",
"capabilityTaxonomyUrl",
"capabilityKinds"
]
},
"lockedVerticals": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"rationale": {
"type": "string"
},
"listed": {
"type": "boolean"
}
},
"required": [
"slug",
"rationale",
"listed"
]
}
},
"categories": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": [
"string",
"null"
]
},
"productCount": {
"type": "integer"
},
"isLockedVertical": {
"type": "boolean"
},
"lockedVerticalRationale": {
"type": [
"string",
"null"
]
},
"capabilitySlugs": {
"type": "array",
"items": {
"type": "string"
}
},
"subcategories": {
"type": "array",
"items": {
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": [
"string",
"null"
]
},
"productCount": {
"type": "integer"
},
"capabilitySlugs": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"slug",
"name",
"description",
"productCount",
"capabilitySlugs"
]
}
}
},
"required": [
"slug",
"name",
"description",
"productCount",
"isLockedVertical",
"lockedVerticalRationale",
"capabilitySlugs",
"subcategories"
]
}
},
"surfaces": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"properties": {
"kind": {
"type": "string"
},
"description": {
"type": "string"
},
"listedOn": {
"type": "string"
}
},
"required": [
"kind",
"description",
"listedOn"
]
}
},
"tools": {
"type": [
"object",
"null"
],
"properties": {
"search": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"use": {
"type": "string"
}
},
"required": [
"name",
"use"
]
},
"byCapability": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"use": {
"type": "string"
}
},
"required": [
"name",
"use"
]
},
"byTask": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"use": {
"type": "string"
}
},
"required": [
"name",
"use"
]
},
"agentReady": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"use": {
"type": "string"
}
},
"required": [
"name",
"use"
]
},
"productDetail": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"use": {
"type": "string"
}
},
"required": [
"name",
"use"
]
}
},
"required": [
"search",
"byCapability",
"byTask",
"agentReady",
"productDetail"
]
},
"error": {
"type": [
"object",
"null"
],
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"resource": {
"type": [
"string",
"null"
]
},
"id": {
"type": [
"string",
"null"
]
},
"field": {
"type": [
"string",
"null"
]
},
"hint": {
"type": [
"string",
"null"
]
}
},
"required": [
"code",
"message"
]
}
}
}🟢rankings.get(category, limit)
Get the published editorial ranking ("Best {Category}") for a category. Ordering basis: computed editorial score ONLY (verified capability coverage, evidence verification rate & freshness, agent readiness, data completeness — weights published at /api/methodology). Tier is NOT a ranking input for this tool; positions are never sold. Rankings are published snapshots (monthly schedule; manual publishes are marked) — stable between recomputes and citable. Each entry carries { position, rank (0..1), slug, name, score (0-100), breakdown (raw 0-100 per dimension), tier (annotation only), houseProduct (true = built by Revuo's founder — same formula as everyone, disclosed machine-readably), unverified, verifiedAt }. unrankedCount + unranked[] name the category products that failed an eligibility gate, with reasons. Response: { category, computedAt, methodologyVersion, methodologyUrl, trigger, entries[], unranked[] }. Errors: { error: { code: 'not_found', ... } } — also returned when a category has no published ranking yet.
Eingabe-Schema
{
"type": "object",
"properties": {
"category": {
"description": "Category slug (e.g. 'pim-software'). Use categories.list for valid slugs.",
"type": "string"
},
"limit": {
"description": "Max ranked entries to return (caps at 50)",
"type": "integer",
"default": 25
}
},
"required": [
"category"
]
}Ausgabe-Schema
{
"type": "object",
"properties": {
"category": {
"type": [
"string",
"null"
]
},
"computedAt": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"methodologyVersion": {
"type": [
"string",
"null"
]
},
"methodologyUrl": {
"type": [
"string",
"null"
]
},
"trigger": {
"type": [
"string",
"null"
]
},
"entries": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"properties": {
"position": {
"type": "integer"
},
"rank": {
"type": "number"
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"tagline": {
"type": [
"string",
"null"
]
},
"websiteUrl": {
"type": [
"string",
"null"
]
},
"score": {
"type": "number"
},
"breakdown": {
"type": "object",
"additionalProperties": {
"type": "number"
}
},
"tier": {
"type": "string",
"enum": [
"Free",
"Verified",
"Featured"
]
},
"houseProduct": {
"type": [
"boolean",
"null"
]
},
"unverified": {
"type": [
"boolean",
"null"
]
},
"verifiedAt": {
"type": [
"string",
"null"
],
"format": "date-time"
}
},
"required": [
"slug",
"name"
]
}
},
"unranked": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"reason": {
"type": "string"
}
},
"required": [
"slug",
"name",
"reason"
]
}
},
"error": {
"type": [
"object",
"null"
],
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"resource": {
"type": [
"string",
"null"
]
},
"id": {
"type": [
"string",
"null"
]
},
"field": {
"type": [
"string",
"null"
]
},
"hint": {
"type": [
"string",
"null"
]
}
},
"required": [
"code",
"message"
]
}
}
}🟢tools.search(query, remoteOnly, access, limit)
Search for MCP tools by capability. Each result is one (product, tool) pair — tools sharing a name across providers are NOT interchangeable, so each provider's tool is its own row with its own description and input schema. Ranking basis: semantic relevance to the query (embedding search); on the lexical fallback (searchMode='lexical') results are name-ordered and rank does NOT reflect relevance. Paid tier is NOT a ranking input — it appears only as an annotation. Every result carries { position (1-based), rank (0..1; 1.0 = top) } so callers can merge results across tools consistently, plus preflight annotations { accessModel (open|keyed|account|commercial; whether an agent can call it without becoming a customer first), healthScore (0-100, nullable), readOnly, destructive } so you can judge callability and safety BEFORE selecting. Optional access filter narrows to a single access class. Response: { searchMode ('semantic'|'lexical'), tools: [{ position, rank, normalizedName, displayName, description, inputSchema, productSlug, productName, serverQualifiedName, isRemoteCapable, accessModel, healthScore, readOnly, destructive, tier, unverified (true when no approved vendor claim), verifiedAt (ISO; nullable) }] }. Errors: { error: { code: 'bad_input', ... } }.
Eingabe-Schema
{
"type": "object",
"properties": {
"query": {
"description": "Search query to find tools by name or capability. Natural-language phrases work best (semantic search).",
"type": "string"
},
"remoteOnly": {
"description": "If true, only return tools available via remote (network-hosted) MCP servers",
"type": "boolean",
"default": false
},
"access": {
"description": "Optional access-class filter: 'open' (callable anonymously), 'keyed', 'account', 'commercial', or 'unknown'. Omit for all.",
"type": [
"string",
"null"
],
"default": null
},
"limit": {
"description": "Maximum number of results to return",
"type": "integer",
"default": 20
}
},
"required": [
"query"
]
}Ausgabe-Schema
{
"type": "object",
"properties": {
"tools": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"properties": {
"position": {
"type": "integer"
},
"rank": {
"type": "number"
},
"normalizedName": {
"type": "string"
},
"displayName": {
"type": "string"
},
"description": {
"type": [
"string",
"null"
]
},
"inputSchema": true,
"productSlug": {
"type": "string"
},
"productName": {
"type": "string"
},
"serverQualifiedName": {
"type": [
"string",
"null"
]
},
"isRemoteCapable": {
"type": "boolean"
},
"tier": {
"type": "string",
"enum": [
"Free",
"Verified",
"Featured"
]
},
"houseProduct": {
"type": [
"boolean",
"null"
]
},
"sponsored": {
"type": [
"boolean",
"null"
]
},
"unverified": {
"type": [
"boolean",
"null"
]
},
"verifiedAt": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"relevance": {
"type": [
"integer",
"null"
]
},
"accessModel": {
"type": [
"string",
"null"
],
"enum": [
"Unknown",
"Open",
"Keyed",
"Account",
"Commercial",
null
]
},
"healthScore": {
"type": [
"integer",
"null"
]
},
"readOnly": {
"type": [
"boolean",
"null"
]
},
"destructive": {
"type": [
"boolean",
"null"
]
},
"callableNow": {
"type": [
"boolean",
"null"
]
},
"setup": {
"type": [
"string",
"null"
]
}
},
"required": [
"position",
"rank",
"normalizedName",
"displayName",
"productSlug",
"productName"
]
}
},
"searchMode": {
"type": [
"string",
"null"
]
},
"error": {
"type": [
"object",
"null"
],
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"resource": {
"type": [
"string",
"null"
]
},
"id": {
"type": [
"string",
"null"
]
},
"field": {
"type": [
"string",
"null"
]
},
"hint": {
"type": [
"string",
"null"
]
}
},
"required": [
"code",
"message"
]
}
}
}🟢tools.list_by_name(name)
List every (product, tool) pair that shares a normalized name. A disambiguation lookup — same name across providers does NOT mean the tools are interchangeable. Ranking basis: productName. Paid tier is NOT a ranking input — it appears only as an annotation. Every result carries { position (1-based), rank (0..1) } plus preflight annotations { accessModel, healthScore, readOnly, destructive }. Response: { normalizedName, total, tools[] (each: position, rank, productSlug, productName, displayName, description, inputSchema, serverQualifiedName, isRemoteCapable, accessModel, healthScore, readOnly, destructive, tier, unverified, verifiedAt) }.
Eingabe-Schema
{
"type": "object",
"properties": {
"name": {
"description": "Normalized tool name (e.g. 'search', 'create_issue')",
"type": "string"
}
},
"required": [
"name"
]
}Ausgabe-Schema
{
"type": "object",
"properties": {
"normalizedName": {
"type": [
"string",
"null"
]
},
"total": {
"type": [
"integer",
"null"
]
},
"tools": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"properties": {
"position": {
"type": "integer"
},
"rank": {
"type": "number"
},
"normalizedName": {
"type": "string"
},
"displayName": {
"type": "string"
},
"description": {
"type": [
"string",
"null"
]
},
"inputSchema": true,
"productSlug": {
"type": "string"
},
"productName": {
"type": "string"
},
"serverQualifiedName": {
"type": [
"string",
"null"
]
},
"isRemoteCapable": {
"type": "boolean"
},
"tier": {
"type": "string",
"enum": [
"Free",
"Verified",
"Featured"
]
},
"houseProduct": {
"type": [
"boolean",
"null"
]
},
"sponsored": {
"type": [
"boolean",
"null"
]
},
"unverified": {
"type": [
"boolean",
"null"
]
},
"verifiedAt": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"relevance": {
"type": [
"integer",
"null"
]
},
"accessModel": {
"type": [
"string",
"null"
],
"enum": [
"Unknown",
"Open",
"Keyed",
"Account",
"Commercial",
null
]
},
"healthScore": {
"type": [
"integer",
"null"
]
},
"readOnly": {
"type": [
"boolean",
"null"
]
},
"destructive": {
"type": [
"boolean",
"null"
]
},
"callableNow": {
"type": [
"boolean",
"null"
]
},
"setup": {
"type": [
"string",
"null"
]
}
},
"required": [
"position",
"rank",
"normalizedName",
"displayName",
"productSlug",
"productName"
]
}
},
"error": {
"type": [
"object",
"null"
],
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"resource": {
"type": [
"string",
"null"
]
},
"id": {
"type": [
"string",
"null"
]
},
"field": {
"type": [
"string",
"null"
]
},
"hint": {
"type": [
"string",
"null"
]
}
},
"required": [
"code",
"message"
]
}
}
}🟢tools.changes(slug, knownHash, server, since)
Detect whether a product's MCP tool schema has DRIFTED since you cached it — rug-pull / tool-poisoning detection (a server silently changing a tool's description or input schema after you approved it; web search structurally cannot answer this). Pass the product slug and EITHER the schema hash you cached earlier (knownHash, from products.get_mcp_setup → server.schema.hash — the strongest signal: an exact mismatch means the tools changed) OR the ISO-8601 timestamp you cached at (since). With neither, it returns the current fingerprint to cache for next time. A product may expose MULTIPLE servers: knownHash is per-server, so pass `server` (a qualifiedName) with knownHash on a multi-server product — otherwise knownHash is applied only when there's exactly one server. Re-verify before trusting a previously-approved tool. Response: { product, hasMcpSupport, drifted (did ANY tracked server change vs your reference; null when no reference given), servers[] (each: qualifiedName, currentSchemaHash, schemaStable, lastSchemaChangeAt, toolCount, directlyProbed, driftedSinceKnownHash, driftedSince, advice) }. Errors: { error: { code: 'not_found'|'bad_input', ... } }.
Eingabe-Schema
{
"type": "object",
"properties": {
"slug": {
"description": "Product slug whose MCP tool schema to check.",
"type": "string"
},
"knownHash": {
"description": "The schema hash you cached earlier (products.get_mcp_setup → server.schema.hash). Exact-mismatch drift signal.",
"type": [
"string",
"null"
],
"default": null
},
"server": {
"description": "The server qualifiedName your knownHash belongs to. Required with knownHash on a multi-server product.",
"type": [
"string",
"null"
],
"default": null
},
"since": {
"description": "ISO-8601 timestamp you last cached at. Reports whether a schema change was recorded after it.",
"type": [
"string",
"null"
],
"default": null
}
},
"required": [
"slug"
]
}Ausgabe-Schema
{
"type": "object",
"properties": {
"product": {
"type": [
"object",
"null"
],
"properties": {
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"websiteUrl": {
"type": "string"
},
"tier": {
"type": "string",
"enum": [
"Free",
"Verified",
"Featured"
]
},
"unverified": {
"type": [
"boolean",
"null"
]
},
"verifiedAt": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"houseProduct": {
"type": [
"boolean",
"null"
],
"default": null
},
"sponsored": {
"type": [
"boolean",
"null"
],
"default": null
}
},
"required": [
"slug",
"name",
"websiteUrl",
"tier",
"unverified",
"verifiedAt"
]
},
"hasMcpSupport": {
"type": [
"boolean",
"null"
]
},
"servers": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"properties": {
"qualifiedName": {
"type": "string"
},
"currentSchemaHash": {
"type": [
"string",
"null"
]
},
"schemaStable": {
"type": "boolean"
},
"lastSchemaChangeAt": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"toolCount": {
"type": "integer"
},
"lastProbedAt": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"directlyProbed": {
"type": "boolean"
},
"driftedSinceKnownHash": {
"type": [
"boolean",
"null"
]
},
"driftedSince": {
"type": [
"boolean",
"null"
]
},
"advice": {
"type": "string"
}
},
"required": [
"qualifiedName",
"currentSchemaHash",
"schemaStable",
"lastSchemaChangeAt",
"toolCount",
"lastProbedAt",
"directlyProbed",
"driftedSinceKnownHash",
"driftedSince",
"advice"
]
}
},
"drifted": {
"type": [
"boolean",
"null"
]
},
"message": {
"type": [
"string",
"null"
]
},
"error": {
"type": [
"object",
"null"
],
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"resource": {
"type": [
"string",
"null"
]
},
"id": {
"type": [
"string",
"null"
]
},
"field": {
"type": [
"string",
"null"
]
},
"hint": {
"type": [
"string",
"null"
]
}
},
"required": [
"code",
"message"
]
}
}
}🟢products.search(query, category)
Search for B2B SaaS products by name OR by capability. The query is first resolved against the canonical capability taxonomy (e.g. 'salesforce-integration', 'xrechnung-support', 'soc2'); on hit, products that claim that capability are returned. Falls back to name/slug/tagline substring search. Optional category scope. Ranking basis: currentScore desc (computed editorial score), then name. Paid tier is NOT a ranking input — tier appears only as an annotation on results. Every result carries { position (1-based), rank (0..1; 1.0 = top, scales linearly down by ordinal position) } so callers can merge results across tools consistently. Response: { query, matchType (none|exactSlug|canonicalSlug|nlpFallback), resolvedCapabilities[], products[] }. Each product carries { position, rank, tier (free|verified|featured — annotation only), houseProduct (true = built by Revuo's founder; conflict-of-interest disclosure), sponsored (true = paid Featured placement), unverified (true when the listing has no approved vendor claim; omitted otherwise — absence means an approved vendor claim, NOT crawl freshness; use verifiedAt for that), verifiedAt (ISO timestamp of last claim crawl; absent if never crawled), currentScore (0-100), compositeScore (agent-readiness 0-100, nullable), matchedCapability (true if surfaced by capability path) }. Errors: { error: { code: 'not_found'|'bad_input', ... } }.
Eingabe-Schema
{
"type": "object",
"properties": {
"query": {
"description": "Search query — capability slug or natural-language description; falls back to name match",
"type": "string"
},
"category": {
"description": "Optional category slug to filter results",
"type": [
"string",
"null"
],
"default": null
}
},
"required": [
"query"
]
}Ausgabe-Schema
{
"type": "object",
"properties": {
"query": {
"type": [
"string",
"null"
]
},
"matchType": {
"type": [
"string",
"null"
],
"enum": [
"None",
"ExactSlug",
"CanonicalSlug",
"NlpFallback",
null
]
},
"resolvedCapabilities": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"kind": {
"type": "string",
"enum": [
"Unspecified",
"Integration",
"Compliance",
"Format",
"Standard",
"Workflow"
]
}
},
"required": [
"slug",
"name",
"kind"
]
}
},
"products": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"properties": {
"position": {
"type": "integer"
},
"rank": {
"type": "number"
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"tagline": {
"type": [
"string",
"null"
]
},
"websiteUrl": {
"type": "string"
},
"tier": {
"type": "string",
"enum": [
"Free",
"Verified",
"Featured"
]
},
"houseProduct": {
"type": [
"boolean",
"null"
]
},
"sponsored": {
"type": [
"boolean",
"null"
]
},
"unverified": {
"type": [
"boolean",
"null"
]
},
"verifiedAt": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"currentScore": {
"type": [
"number",
"null"
]
},
"compositeScore": {
"type": [
"number",
"null"
]
},
"matchedCapability": {
"type": [
"boolean",
"null"
]
}
},
"required": [
"position",
"rank",
"slug",
"name",
"websiteUrl"
]
}
},
"error": {
"type": [
"object",
"null"
],
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"resource": {
"type": [
"string",
"null"
]
},
"id": {
"type": [
"string",
"null"
]
},
"field": {
"type": [
"string",
"null"
]
},
"hint": {
"type": [
"string",
"null"
]
}
},
"required": [
"code",
"message"
]
}
}
}🟢products.find_agent_ready(minimumScore, skip, limit)
Find products with the highest agent readiness scores — products that are easiest for AI agents to integrate with. Sorted by compositeScore desc; supports skip/limit pagination. All readiness scores are 0-100, higher better. Calibration: <30 = not agent-ready (default minimumScore filter), 30-49 = early/limited, 50-69 = decent, 70-89 = strong, 90+ = exceptional. Ranking basis: compositeScore desc. Tier is NOT a tiebreaker here — buyer intent is technical fit, not paid placement. Every result carries { position (1-based, within the returned page), rank (0..1; 1.0 = top of this page) } so callers can merge results across tools consistently. Response: { products: [{ position, rank, slug, name, tagline, websiteUrl, tier (free|verified|featured), unverified (true when no approved vendor claim), verifiedAt (ISO; nullable), agentReadiness: { compositeScore, apiScore, protocolScore, sdkScore, integrationScore, dxScore } (each 0-100), mcp?: { hasMcpSupport, totalToolCount, serverCount } }] }.
Eingabe-Schema
{
"type": "object",
"properties": {
"minimumScore": {
"description": "Minimum composite agent readiness score (0-100). Higher = more agent-ready. 0 returns everything; 50 is a usable threshold.",
"type": "integer",
"default": 30
},
"skip": {
"description": "Number of results to skip (for pagination). Default 0.",
"type": "integer",
"default": 0
},
"limit": {
"description": "Maximum number of results to return per page. Caps at 50.",
"type": "integer",
"default": 20
}
}
}Ausgabe-Schema
{
"type": "object",
"properties": {
"products": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"properties": {
"position": {
"type": "integer"
},
"rank": {
"type": "number"
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"tagline": {
"type": [
"string",
"null"
]
},
"websiteUrl": {
"type": "string"
},
"tier": {
"type": "string",
"enum": [
"Free",
"Verified",
"Featured"
]
},
"houseProduct": {
"type": [
"boolean",
"null"
]
},
"sponsored": {
"type": [
"boolean",
"null"
]
},
"unverified": {
"type": [
"boolean",
"null"
]
},
"verifiedAt": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"agentReadiness": {
"type": "object",
"properties": {
"compositeScore": {
"type": "number"
},
"apiScore": {
"type": "number"
},
"protocolScore": {
"type": "number"
},
"sdkScore": {
"type": "number"
},
"integrationScore": {
"type": "number"
},
"dxScore": {
"type": "number"
}
},
"required": [
"compositeScore",
"apiScore",
"protocolScore",
"sdkScore",
"integrationScore",
"dxScore"
]
},
"mcp": {
"type": [
"object",
"null"
],
"properties": {
"hasMcpSupport": {
"type": "boolean"
},
"totalToolCount": {
"type": "integer"
},
"serverCount": {
"type": "integer"
}
},
"required": [
"hasMcpSupport",
"totalToolCount",
"serverCount"
]
}
},
"required": [
"position",
"rank",
"slug",
"name",
"websiteUrl",
"agentReadiness"
]
}
},
"error": {
"type": [
"object",
"null"
],
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"resource": {
"type": [
"string",
"null"
]
},
"id": {
"type": [
"string",
"null"
]
},
"field": {
"type": [
"string",
"null"
]
},
"hint": {
"type": [
"string",
"null"
]
}
},
"required": [
"code",
"message"
]
}
}
}🟢products.find_by_capability(capability, category, limit)
Find B2B SaaS products that support a specific capability — an integration with a named service ('salesforce-integration'), a data format ('xrechnung-support'), an industry standard ('eclass-support'), or a compliance certification ('soc2'). Accepts either a canonical capability slug or natural language; resolves to a structured capability when possible. Ranking basis: currentScore desc (computed editorial score), then name. Paid tier is NOT a ranking input — it appears only as an annotation. Every result carries { position (1-based), rank (0..1; 1.0 = top, scales linearly down by ordinal position) } so callers can merge results across tools consistently. Response: { capability, matchType (none|exactSlug|canonicalSlug|nlpFallback — exactSlug & canonicalSlug are deterministic; nlpFallback is heuristic), resolvedFeatures[], products[] }. Each product: { position, rank, slug, name, tagline, websiteUrl, tier, unverified (true when no approved vendor claim), verifiedAt, evidence[] (per-claim: featureSlug, evidenceUrl, notes, source, confidence) }. Empty: { capability, matchType, message, suggestedSlugs[] } when no capability matched, or products: [] when capability matched but no products claim it yet.
Eingabe-Schema
{
"type": "object",
"properties": {
"capability": {
"description": "Capability slug ('salesforce-integration') OR natural-language description ('integrates with Salesforce')",
"type": "string"
},
"category": {
"description": "Optional category slug to scope the search (e.g. 'pim', 'tender-management', 'billing')",
"type": [
"string",
"null"
],
"default": null
},
"limit": {
"description": "Maximum number of results to return",
"type": "integer",
"default": 20
}
},
"required": [
"capability"
]
}Ausgabe-Schema
{
"type": "object",
"properties": {
"capability": {
"type": [
"string",
"null"
]
},
"matchType": {
"type": [
"string",
"null"
],
"enum": [
"None",
"ExactSlug",
"CanonicalSlug",
"NlpFallback",
null
]
},
"resolvedFeatures": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"kind": {
"type": "string",
"enum": [
"Unspecified",
"Integration",
"Compliance",
"Format",
"Standard",
"Workflow"
]
}
},
"required": [
"slug",
"name",
"kind"
]
}
},
"products": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"properties": {
"position": {
"type": "integer"
},
"rank": {
"type": "number"
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"tagline": {
"type": [
"string",
"null"
]
},
"websiteUrl": {
"type": "string"
},
"tier": {
"type": "string",
"enum": [
"Free",
"Verified",
"Featured"
]
},
"houseProduct": {
"type": [
"boolean",
"null"
]
},
"sponsored": {
"type": [
"boolean",
"null"
]
},
"unverified": {
"type": [
"boolean",
"null"
]
},
"verifiedAt": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"evidence": {
"type": "array",
"items": {
"type": "object",
"properties": {
"featureSlug": {
"type": [
"string",
"null"
]
},
"evidenceUrl": {
"type": [
"string",
"null"
]
},
"notes": {
"type": [
"string",
"null"
]
},
"source": {
"type": [
"string",
"null"
]
},
"confidence": {
"type": [
"number",
"null"
]
}
},
"required": [
"featureSlug",
"evidenceUrl",
"notes",
"source",
"confidence"
]
}
}
},
"required": [
"position",
"rank",
"slug",
"name",
"websiteUrl",
"evidence"
]
}
},
"message": {
"type": [
"string",
"null"
]
},
"suggestedSlugs": {
"type": [
"array",
"null"
],
"items": {
"type": "string"
}
},
"error": {
"type": [
"object",
"null"
],
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"resource": {
"type": [
"string",
"null"
]
},
"id": {
"type": [
"string",
"null"
]
},
"field": {
"type": [
"string",
"null"
]
},
"hint": {
"type": [
"string",
"null"
]
}
},
"required": [
"code",
"message"
]
}
}
}Community
Nachweis