Revuo
Agent-callable B2B SaaS directory: capability-structured, continuously verified listings.
사용해야 할까요
품질 및 안전성
발견 사항 (17)
- HIGH
- MEDIUMmcp.score_server에서
- MEDIUMdirectory.overview에서
- LOWtools.get에서
- LOWcategories.list에서
- LOWmcp.score_server에서
- LOWproducts.get_mcp_setup에서
- LOWproducts.get에서
- LOWtools.find_for_task에서
- LOWdirectory.overview에서
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"revuo": {
"url": "https://www.revuo.ai/api/mcp"
}
}
}원격 엔드포인트
https://www.revuo.ai/api/mcpstreamable-http할 수 있는 일
도구 목록
도구 (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', ... } }.
입력 스키마
{
"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"
]
}출력 스키마
{
"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.
입력 스키마
{
"type": "object",
"properties": {}
}출력 스키마
{
"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', ... } }.
입력 스키마
{
"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
}
}
}출력 스키마
{
"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', ... } }.
입력 스키마
{
"type": "object",
"properties": {
"slug": {
"description": "Product slug (URL-friendly identifier)",
"type": "string"
}
},
"required": [
"slug"
]
}출력 스키마
{
"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', ... } }.
입력 스키마
{
"type": "object",
"properties": {
"slug": {
"description": "Product slug (URL-friendly identifier)",
"type": "string"
}
},
"required": [
"slug"
]
}출력 스키마
{
"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[] }.
입력 스키마
{
"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"
]
}출력 스키마
{
"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 } }.
입력 스키마
{
"type": "object",
"properties": {}
}출력 스키마
{
"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.
입력 스키마
{
"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"
]
}출력 스키마
{
"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', ... } }.
입력 스키마
{
"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"
]
}출력 스키마
{
"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) }.
입력 스키마
{
"type": "object",
"properties": {
"name": {
"description": "Normalized tool name (e.g. 'search', 'create_issue')",
"type": "string"
}
},
"required": [
"name"
]
}출력 스키마
{
"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', ... } }.
입력 스키마
{
"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"
]
}출력 스키마
{
"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', ... } }.
입력 스키마
{
"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"
]
}출력 스키마
{
"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 } }] }.
입력 스키마
{
"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
}
}
}출력 스키마
{
"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.
입력 스키마
{
"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"
]
}출력 스키마
{
"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"
]
}
}
}커뮤니티
증거