MCP 服务器

Revuo

ai.revuo/revuo
商业与运营 搜索与研究 公开且可连接 MCP 2025-11-25

此 MCP 可以做什么

Offers a capability-structured directory of continuously verified B2B SaaS listings for agent-driven discovery.

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': {'error': {'type': ['object', 'null'], 'required': ['code', 'message'], 'properties': {'id': {'type': ['string', 'null']}, 'code': {'type': 'string'}, 'hint': {'type': ['string', 'null']}, 'field': {'type': ['string', 'null']}, 'message': {'type': 'string'}, 'resource': {'type': ['string', 'null']}}}, 'categories': {'type': ['array', 'null'], 'items': {'type': 'object', 'required': ['slug', 'name', 'description'], 'properties': {'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'description': {'type': ['string', 'null']}}}}}}
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': {'error': {'type': ['object', 'null'], 'required': ['code', 'message'], 'properties': {'id': {'type': ['string', 'null']}, 'code': {'type': 'string'}, 'hint': {'type': ['string', 'null']}, 'field': {'type': ['string', 'null']}, 'message': {'type': 'string'}, 'resource': {'type': ['string', 'null']}}}, 'tools': {'type': ['object', 'null'], 'required': ['search', 'byCapability', 'byTask', 'agentReady', 'productDetail'], 'properties': {'byTask': {'type': 'object', 'required': ['name', 'use'], 'properties': {'use': {'type': 'string'}, 'name': {'type': 'string'}}}, 'search': {'type': 'object', 'required': ['name', 'use'], 'properties': {'use': {'type': 'string'}, 'name': {'type': 'string'}}}, 'agentReady': {'type': 'object', 'required': ['name', 'use'], 'properties': {'use': {'type': 'string'}, 'name': {'type': 'string'}}}, 'byCapability': {'type': 'object', 'required': ['name', 'use'], 'properties': {'use': {'type': 'string'}, 'name': {'type': 'string'}}}, 'productDetail': {'type': 'object', 'required': ['name', 'use'], 'properties': {'use': {'type': 'string'}, 'name': {'type': 'string'}}}}}, 'surfaces': {'type': ['array', 'null'], 'items': {'type': 'object', 'required': ['kind', 'description', 'listedOn'], 'properties': {'kind': {'type': 'string'}, 'listedOn': {'type': 'string'}, 'description': {'type': 'string'}}}}, 'directory': {'type': ['object', 'null'], 'required': ['name', 'tagline', 'url', 'policyUrl', 'capabilityTaxonomyUrl', 'capabilityKinds'], 'properties': {'url': {'type': 'string'}, 'name': {'type': 'string'}, 'tagline': {'type': 'string'}, 'policyUrl': {'type': 'string'}, 'capabilityKinds': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'description'], 'properties': {'kind': {'type': 'string'}, 'description': {'type': 'string'}}}}, 'capabilityTaxonomyUrl': {'type': 'string'}}}, 'categories': {'type': ['array', 'null'], 'items': {'type': 'object', 'required': ['slug', 'name', 'description', 'productCount', 'isLockedVertical', 'lockedVerticalRationale', 'capabilitySlugs', 'subcategories'], 'properties': {'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'description': {'type': ['string', 'null']}, 'productCount': {'type': 'integer'}, 'subcategories': {'type': 'array', 'items': {'type': 'object', 'required': ['slug', 'name', 'description', 'productCount', 'capabilitySlugs'], 'properties': {'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'description': {'type': ['string', 'null']}, 'productCount': {'type': 'integer'}, 'capabilitySlugs': {'type': 'array', 'items': {'type': 'string'}}}}}, 'capabilitySlugs': {'type': 'array', 'items': {'type': 'string'}}, 'isLockedVertical': {'type': 'boolean'}, 'lockedVerticalRationale': {'type': ['string', 'null']}}}}, 'lockedVerticals': {'type': ['array', 'null'], 'items': {'type': 'object', 'required': ['slug', 'rationale', 'listed'], 'properties': {'slug': {'type': 'string'}, 'listed': {'type': 'boolean'}, 'rationale': {'type': 'string'}}}}}}
mcp.score_server
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': {'url': {'type': ['string', 'null'], 'default': None, 'description': 'MCP endpoint URL (HTTPS) to probe and score. Mutually exclusive with slug.'}, 'slug': {'type': ['string', 'null'], 'default': None, 'description': 'Product slug whose direct-probe MCP server to score. Mutually exclusive with url.'}, 'refresh': {'type': 'boolean', 'default': False, 'description': 'When passing slug, force a fresh probe instead of using cached probe data. Default false.'}}}
输出模式
{'type': 'object', 'properties': {'error': {'type': ['object', 'null'], 'required': ['code', 'message'], 'properties': {'id': {'type': ['string', 'null']}, 'code': {'type': 'string'}, 'hint': {'type': ['string', 'null']}, 'field': {'type': ['string', 'null']}, 'message': {'type': 'string'}, 'resource': {'type': ['string', 'null']}}}, 'probe': {'type': ['object', 'null'], 'required': ['fromCache', 'success', 'responseTimeMs', 'error', 'endpoint'], 'properties': {'error': {'type': ['string', 'null']}, 'success': {'type': 'boolean'}, 'endpoint': {'type': ['string', 'null']}, 'fromCache': {'type': 'boolean'}, 'responseTimeMs': {'type': 'integer'}}}, 'checks': {'type': ['array', 'null'], 'items': {'type': 'object', 'required': ['id', 'category', 'name', 'awarded', 'max', 'passed', 'isCore', 'fixSuggestion', 'evidence'], 'properties': {'id': {'type': 'string'}, 'max': {'type': 'number'}, 'name': {'type': 'string'}, 'isCore': {'type': 'boolean'}, 'passed': {'type': 'boolean'}, 'awarded': {'type': 'number'}, 'category': {'type': 'string'}, 'evidence': {'type': ['string', 'null']}, 'evaluated': {'type': 'boolean', 'default': True}, 'fixSuggestion': {'type': ['string', 'null']}}}}, 'server': {'type': ['object', 'null'], 'required': ['name', 'title', 'version', 'description', 'websiteUrl', 'protocolVersion', 'toolCount'], 'properties': {'name': {'type': ['string', 'null']}, 'title': {'type': ['string', 'null']}, 'version': {'type': ['string', 'null']}, 'toolCount': {'type': 'integer'}, 'websiteUrl': {'type': ['string', 'null']}, 'description': {'type': ['string', 'null']}, 'protocolVersion': {'type': ['string', 'null']}}}, 'target': {'type': ['object', 'null'], 'required': ['kind', 'value'], 'properties': {'kind': {'type': 'string'}, 'value': {'type': 'string'}}}, 'summary': {'type': ['object', 'null'], 'required': ['coreAwarded', 'coreMax', 'corePercent', 'extensionAwarded', 'extensionMax', 'extensionPercent', 'probedAt'], 'properties': {'coreMax': {'type': 'number'}, 'probedAt': {'type': 'string', 'format': 'date-time'}, 'coreAwarded': {'type': 'number'}, 'corePercent': {'type': 'number'}, 'extensionMax': {'type': 'number'}, 'extensionAwarded': {'type': 'number'}, 'extensionPercent': {'type': 'number'}}}, 'topFixes': {'type': ['array', 'null'], 'items': {'type': 'object', 'required': ['id', 'category', 'pointsAtStake', 'suggestion'], 'properties': {'id': {'type': 'string'}, 'category': {'type': 'string'}, 'suggestion': {'type': 'string'}, 'pointsAtStake': {'type': 'number'}}}}, 'categories': {'type': ['array', 'null'], 'items': {'type': 'object', 'required': ['category', 'awarded', 'max', 'percent', 'passed', 'total', 'isCore'], 'properties': {'max': {'type': 'number'}, 'total': {'type': 'integer'}, 'isCore': {'type': 'boolean'}, 'passed': {'type': 'integer'}, 'awarded': {'type': 'number'}, 'percent': {'type': 'number'}, 'category': {'type': 'string'}}}}}}
products.find_agent_ready
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': {'skip': {'type': 'integer', 'default': 0, 'description': 'Number of results to skip (for pagination). Default 0.'}, 'limit': {'type': 'integer', 'default': 20, 'description': 'Maximum number of results to return per page. Caps at 50.'}, 'minimumScore': {'type': 'integer', 'default': 30, 'description': 'Minimum composite agent readiness score (0-100). Higher = more agent-ready. 0 returns everything; 50 is a usable threshold.'}}}
输出模式
{'type': 'object', 'properties': {'error': {'type': ['object', 'null'], 'required': ['code', 'message'], 'properties': {'id': {'type': ['string', 'null']}, 'code': {'type': 'string'}, 'hint': {'type': ['string', 'null']}, 'field': {'type': ['string', 'null']}, 'message': {'type': 'string'}, 'resource': {'type': ['string', 'null']}}}, 'products': {'type': ['array', 'null'], 'items': {'type': 'object', 'required': ['position', 'rank', 'slug', 'name', 'websiteUrl', 'agentReadiness'], 'properties': {'mcp': {'type': ['object', 'null'], 'required': ['hasMcpSupport', 'totalToolCount', 'serverCount'], 'properties': {'serverCount': {'type': 'integer'}, 'hasMcpSupport': {'type': 'boolean'}, 'totalToolCount': {'type': 'integer'}}}, 'name': {'type': 'string'}, 'rank': {'type': 'number'}, 'slug': {'type': 'string'}, 'tier': {'enum': ['Free', 'Verified', 'Featured'], 'type': 'string'}, 'tagline': {'type': ['string', 'null']}, 'position': {'type': 'integer'}, 'sponsored': {'type': ['boolean', 'null']}, 'unverified': {'type': ['boolean', 'null']}, 'verifiedAt': {'type': ['string', 'null'], 'format': 'date-time'}, 'websiteUrl': {'type': 'string'}, 'houseProduct': {'type': ['boolean', 'null']}, 'agentReadiness': {'type': 'object', 'required': ['compositeScore', 'apiScore', 'protocolScore', 'sdkScore', 'integrationScore', 'dxScore'], 'properties': {'dxScore': {'type': 'number'}, 'apiScore': {'type': 'number'}, 'sdkScore': {'type': 'number'}, 'protocolScore': {'type': 'number'}, 'compositeScore': {'type': 'number'}, 'integrationScore': {'type': 'number'}}}}}}}}
products.find_by_capability
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', 'required': ['capability'], 'properties': {'limit': {'type': 'integer', 'default': 20, 'description': 'Maximum number of results to return'}, 'category': {'type': ['string', 'null'], 'default': None, 'description': "Optional category slug to scope the search (e.g. 'pim', 'tender-management', 'billing')"}, 'capability': {'type': 'string', 'description': "Capability slug ('salesforce-integration') OR natural-language description ('integrates with Salesforce')"}}}
输出模式
{'type': 'object', 'properties': {'error': {'type': ['object', 'null'], 'required': ['code', 'message'], 'properties': {'id': {'type': ['string', 'null']}, 'code': {'type': 'string'}, 'hint': {'type': ['string', 'null']}, 'field': {'type': ['string', 'null']}, 'message': {'type': 'string'}, 'resource': {'type': ['string', 'null']}}}, 'message': {'type': ['string', 'null']}, 'products': {'type': ['array', 'null'], 'items': {'type': 'object', 'required': ['position', 'rank', 'slug', 'name', 'websiteUrl', 'evidence'], 'properties': {'name': {'type': 'string'}, 'rank': {'type': 'number'}, 'slug': {'type': 'string'}, 'tier': {'enum': ['Free', 'Verified', 'Featured'], 'type': 'string'}, 'tagline': {'type': ['string', 'null']}, 'evidence': {'type': 'array', 'items': {'type': 'object', 'required': ['featureSlug', 'evidenceUrl', 'notes', 'source', 'confidence'], 'properties': {'notes': {'type': ['string', 'null']}, 'source': {'type': ['string', 'null']}, 'confidence': {'type': ['number', 'null']}, 'evidenceUrl': {'type': ['string', 'null']}, 'featureSlug': {'type': ['string', 'null']}}}}, 'position': {'type': 'integer'}, 'sponsored': {'type': ['boolean', 'null']}, 'unverified': {'type': ['boolean', 'null']}, 'verifiedAt': {'type': ['string', 'null'], 'format': 'date-time'}, 'websiteUrl': {'type': 'string'}, 'houseProduct': {'type': ['boolean', 'null']}}}}, 'matchType': {'enum': ['None', 'ExactSlug', 'CanonicalSlug', 'NlpFallback', None], 'type': ['string', 'null']}, 'capability': {'type': ['string', 'null']}, 'suggestedSlugs': {'type': ['array', 'null'], 'items': {'type': 'string'}}, 'resolvedFeatures': {'type': ['array', 'null'], 'items': {'type': 'object', 'required': ['slug', 'name', 'kind'], 'properties': {'kind': {'enum': ['Unspecified', 'Integration', 'Compliance', 'Format', 'Standard', 'Workflow'], 'type': 'string'}, 'name': {'type': 'string'}, 'slug': {'type': 'string'}}}}}}
products.get
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', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'description': 'Product slug (URL-friendly identifier)'}}}
输出模式
{'type': 'object', 'properties': {'mcp': {'type': ['object', 'null'], 'required': ['hasMcpSupport', 'totalToolCount', 'totalUseCount', 'servers'], 'properties': {'servers': {'type': 'array', 'items': {'type': 'object', 'required': ['qualifiedName', 'displayName', 'isVerified', 'verifiedSource', 'isRemoteCapable', 'useCount', 'toolCount'], 'properties': {'useCount': {'type': 'integer'}, 'toolCount': {'type': 'integer'}, 'isVerified': {'type': 'boolean'}, 'displayName': {'type': 'string'}, 'qualifiedName': {'type': 'string'}, 'verifiedSource': {'enum': ['None', 'Probe', 'Registry'], 'type': 'string'}, 'isRemoteCapable': {'type': 'boolean'}}}}, 'hasMcpSupport': {'type': 'boolean'}, 'totalUseCount': {'type': 'integer'}, 'totalToolCount': {'type': 'integer'}}}, 'error': {'type': ['object', 'null'], 'required': ['code', 'message'], 'properties': {'id': {'type': ['string', 'null']}, 'code': {'type': 'string'}, 'hint': {'type': ['string', 'null']}, 'field': {'type': ['string', 'null']}, 'message': {'type': 'string'}, 'resource': {'type': ['string', 'null']}}}, 'product': {'type': ['object', 'null'], 'required': ['slug', 'name', 'websiteUrl', 'categories'], 'properties': {'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'tier': {'enum': ['Free', 'Verified', 'Featured'], 'type': 'string'}, 'logoUrl': {'type': ['string', 'null']}, 'tagline': {'type': ['string', 'null']}, 'sponsored': {'type': ['boolean', 'null']}, 'categories': {'type': 'array', 'items': {'type': 'string'}}, 'unverified': {'type': ['boolean', 'null']}, 'verifiedAt': {'type': ['string', 'null'], 'format': 'date-time'}, 'websiteUrl': {'type': 'string'}, 'description': {'type': ['string', 'null']}, 'alternatives': {'type': ['array', 'null'], 'items': {'type': 'object', 'required': ['slug', 'name', 'tagline', 'currentScore', 'tier', 'houseProduct', 'unverified'], 'properties': {'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'tier': {'enum': ['Free', 'Verified', 'Featured'], 'type': 'string'}, 'tagline': {'type': ['string', 'null']}, 'unverified': {'type': ['boolean', 'null']}, 'currentScore': {'type': 'number'}, 'houseProduct': {'type': ['boolean', 'null']}}}}, 'currentScore': {'type': 'number'}, 'houseProduct': {'type': ['boolean', 'null']}, 'pricingModel': {'enum': ['Free', 'Freemium', 'Paid', 'Enterprise', 'ContactUs'], 'type': 'string'}, 'knownLimitations': {'type': ['array', 'null'], 'items': {'type': 'object', 'required': ['summary', 'detail', 'evidenceUrl', 'source', 'severity'], 'properties': {'detail': {'type': ['string', 'null']}, 'source': {'enum': ['UserReview', 'Editorial', 'CapabilityGap', 'ExternalSource'], 'type': 'string'}, 'summary': {'type': 'string'}, 'severity': {'enum': ['Minor', 'Notable', 'Significant'], 'type': 'string'}, 'evidenceUrl': {'type': 'string'}}}}}}, 'agentArtifacts': {'type': ['array', 'null'], 'items': {'type': 'object', 'required': ['slug', 'kind', 'name', 'description', 'runtimes', 'skillMdUrl', 'digest', 'installCommand', 'grokShareUrl', 'lastVerifiedAt'], 'properties': {'kind': {'enum': ['AgentSkill', 'GrokBot'], 'type': 'string'}, 'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'digest': {'type': ['string', 'null']}, 'runtimes': {'type': 'array', 'items': {'enum': ['ClaudeCode', 'ClaudeAi', 'GrokBuild', 'GrokBot', 'Codex', 'Cursor', 'GeminiCli', 'OpenCode', 'Generic'], 'type': 'string'}}, 'skillMdUrl': {'type': ['string', 'null']}, 'description': {'type': ['string', 'null']}, 'grokShareUrl': {'type': ['string', 'null']}, 'installCommand': {'type': ['string', 'null']}, 'lastVerifiedAt': {'type': ['string', 'null'], 'format': 'date-time'}}}}, 'agentReadiness': {'type': ['object', 'null'], 'required': ['compositeScore', 'aiSummary'], 'properties': {'aiSummary': {'type': ['string', 'null']}, 'compositeScore': {'type': 'number'}}}}}
products.get_mcp_setup
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', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'description': 'Product slug (URL-friendly identifier)'}}}
输出模式
{'type': 'object', 'properties': {'error': {'type': ['object', 'null'], 'required': ['code', 'message'], 'properties': {'id': {'type': ['string', 'null']}, 'code': {'type': 'string'}, 'hint': {'type': ['string', 'null']}, 'field': {'type': ['string', 'null']}, 'message': {'type': 'string'}, 'resource': {'type': ['string', 'null']}}}, 'message': {'type': ['string', 'null']}, 'product': {'type': ['object', 'null'], 'required': ['slug', 'name', 'websiteUrl', 'tier', 'unverified', 'verifiedAt'], 'properties': {'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'tier': {'enum': ['Free', 'Verified', 'Featured'], 'type': 'string'}, 'sponsored': {'type': ['boolean', 'null'], 'default': None}, 'unverified': {'type': ['boolean', 'null']}, 'verifiedAt': {'type': ['string', 'null'], 'format': 'date-time'}, 'websiteUrl': {'type': 'string'}, 'houseProduct': {'type': ['boolean', 'null'], 'default': None}}}, 'servers': {'type': ['array', 'null'], 'items': {'type': 'object', 'required': ['qualifiedName', 'displayName', 'description', 'repositoryUrl', 'isVerified', 'verifiedSource', 'isRemoteCapable', 'useCount', 'license', 'registries', 'tools', 'setup', 'connect', 'schema'], 'properties': {'setup': {'type': 'object', 'required': ['steps', 'isRemote', 'repositoryUrl'], 'properties': {'steps': {'type': 'array', 'items': {'type': 'string'}}, 'isRemote': {'type': 'boolean'}, 'repositoryUrl': {'type': ['string', 'null']}}}, 'tools': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'description', 'inputSchema'], 'properties': {'name': {'type': 'string'}, 'description': {'type': ['string', 'null']}, 'inputSchema': True}}}, 'schema': {'type': 'object', 'required': ['hash', 'stable', 'lastChangeAt'], 'properties': {'hash': {'type': ['string', 'null']}, 'stable': {'type': 'boolean'}, 'lastChangeAt': {'type': ['string', 'null'], 'format': 'date-time'}}}, 'connect': {'type': 'object', 'required': ['transport', 'url', 'mcpJson', 'claudeMcpAddCommand', 'installLinkUrl'], 'properties': {'url': {'type': ['string', 'null']}, 'mcpJson': {'type': ['string', 'null']}, 'transport': {'type': 'string'}, 'installLinkUrl': {'type': 'string'}, 'claudeMcpAddCommand': {'type': ['string', 'null']}}}, 'license': {'type': ['string', 'null']}, 'useCount': {'type': 'integer'}, 'isVerified': {'type': 'boolean'}, 'registries': {'type': 'array', 'items': {'type': 'string'}}, 'description': {'type': ['string', 'null']}, 'displayName': {'type': 'string'}, 'qualifiedName': {'type': 'string'}, 'repositoryUrl': {'type': ['string', 'null']}, 'verifiedSource': {'enum': ['None', 'Probe', 'Registry'], 'type': 'string'}, 'isRemoteCapable': {'type': 'boolean'}}}}, 'hasMcpSupport': {'type': ['boolean', 'null']}, 'agentReadiness': {'type': ['object', 'null'], 'required': ['compositeScore', 'api', 'aiSummary'], 'properties': {'api': {'type': 'object', 'required': ['hasPublicApi', 'apiStyles', 'authModels', 'hasFreeTier'], 'properties': {'apiStyles': {'type': 'array', 'items': {'type': 'string'}}, 'authModels': {'type': 'array', 'items': {'type': 'string'}}, 'hasFreeTier': {'type': 'boolean'}, 'hasPublicApi': {'type': 'boolean'}}}, 'aiSummary': {'type': ['string', 'null']}, 'compositeScore': {'type': 'number'}}}, 'totalToolCount': {'type': ['integer', 'null']}}}
products.search
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', 'required': ['query'], 'properties': {'query': {'type': 'string', 'description': 'Search query — capability slug or natural-language description; falls back to name match'}, 'category': {'type': ['string', 'null'], 'default': None, 'description': 'Optional category slug to filter results'}}}
输出模式
{'type': 'object', 'properties': {'error': {'type': ['object', 'null'], 'required': ['code', 'message'], 'properties': {'id': {'type': ['string', 'null']}, 'code': {'type': 'string'}, 'hint': {'type': ['string', 'null']}, 'field': {'type': ['string', 'null']}, 'message': {'type': 'string'}, 'resource': {'type': ['string', 'null']}}}, 'query': {'type': ['string', 'null']}, 'products': {'type': ['array', 'null'], 'items': {'type': 'object', 'required': ['position', 'rank', 'slug', 'name', 'websiteUrl'], 'properties': {'name': {'type': 'string'}, 'rank': {'type': 'number'}, 'slug': {'type': 'string'}, 'tier': {'enum': ['Free', 'Verified', 'Featured'], 'type': 'string'}, 'tagline': {'type': ['string', 'null']}, 'position': {'type': 'integer'}, 'sponsored': {'type': ['boolean', 'null']}, 'unverified': {'type': ['boolean', 'null']}, 'verifiedAt': {'type': ['string', 'null'], 'format': 'date-time'}, 'websiteUrl': {'type': 'string'}, 'currentScore': {'type': ['number', 'null']}, 'houseProduct': {'type': ['boolean', 'null']}, 'compositeScore': {'type': ['number', 'null']}, 'matchedCapability': {'type': ['boolean', 'null']}}}}, 'matchType': {'enum': ['None', 'ExactSlug', 'CanonicalSlug', 'NlpFallback', None], 'type': ['string', 'null']}, 'resolvedCapabilities': {'type': ['array', 'null'], 'items': {'type': 'object', 'required': ['slug', 'name', 'kind'], 'properties': {'kind': {'enum': ['Unspecified', 'Integration', 'Compliance', 'Format', 'Standard', 'Workflow'], 'type': 'string'}, 'name': {'type': 'string'}, 'slug': {'type': 'string'}}}}}}
rankings.get
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', 'required': ['category'], 'properties': {'limit': {'type': 'integer', 'default': 25, 'description': 'Max ranked entries to return (caps at 50)'}, 'category': {'type': 'string', 'description': "Category slug (e.g. 'pim-software'). Use categories.list for valid slugs."}}}
输出模式
{'type': 'object', 'properties': {'error': {'type': ['object', 'null'], 'required': ['code', 'message'], 'properties': {'id': {'type': ['string', 'null']}, 'code': {'type': 'string'}, 'hint': {'type': ['string', 'null']}, 'field': {'type': ['string', 'null']}, 'message': {'type': 'string'}, 'resource': {'type': ['string', 'null']}}}, 'entries': {'type': ['array', 'null'], 'items': {'type': 'object', 'required': ['slug', 'name'], 'properties': {'name': {'type': 'string'}, 'rank': {'type': 'number'}, 'slug': {'type': 'string'}, 'tier': {'enum': ['Free', 'Verified', 'Featured'], 'type': 'string'}, 'score': {'type': 'number'}, 'tagline': {'type': ['string', 'null']}, 'position': {'type': 'integer'}, 'breakdown': {'type': 'object', 'additionalProperties': {'type': 'number'}}, 'unverified': {'type': ['boolean', 'null']}, 'verifiedAt': {'type': ['string', 'null'], 'format': 'date-time'}, 'websiteUrl': {'type': ['string', 'null']}, 'houseProduct': {'type': ['boolean', 'null']}}}}, 'trigger': {'type': ['string', 'null']}, 'category': {'type': ['string', 'null']}, 'unranked': {'type': ['array', 'null'], 'items': {'type': 'object', 'required': ['slug', 'name', 'reason'], 'properties': {'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'reason': {'type': 'string'}}}}, 'computedAt': {'type': ['string', 'null'], 'format': 'date-time'}, 'methodologyUrl': {'type': ['string', 'null']}, 'methodologyVersion': {'type': ['string', 'null']}}}
tools.changes
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', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'description': 'Product slug whose MCP tool schema to check.'}, 'since': {'type': ['string', 'null'], 'default': None, 'description': 'ISO-8601 timestamp you last cached at. Reports whether a schema change was recorded after it.'}, 'server': {'type': ['string', 'null'], 'default': None, 'description': 'The server qualifiedName your knownHash belongs to. Required with knownHash on a multi-server product.'}, 'knownHash': {'type': ['string', 'null'], 'default': None, 'description': 'The schema hash you cached earlier (products.get_mcp_setup → server.schema.hash). Exact-mismatch drift signal.'}}}
输出模式
{'type': 'object', 'properties': {'error': {'type': ['object', 'null'], 'required': ['code', 'message'], 'properties': {'id': {'type': ['string', 'null']}, 'code': {'type': 'string'}, 'hint': {'type': ['string', 'null']}, 'field': {'type': ['string', 'null']}, 'message': {'type': 'string'}, 'resource': {'type': ['string', 'null']}}}, 'drifted': {'type': ['boolean', 'null']}, 'message': {'type': ['string', 'null']}, 'product': {'type': ['object', 'null'], 'required': ['slug', 'name', 'websiteUrl', 'tier', 'unverified', 'verifiedAt'], 'properties': {'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'tier': {'enum': ['Free', 'Verified', 'Featured'], 'type': 'string'}, 'sponsored': {'type': ['boolean', 'null'], 'default': None}, 'unverified': {'type': ['boolean', 'null']}, 'verifiedAt': {'type': ['string', 'null'], 'format': 'date-time'}, 'websiteUrl': {'type': 'string'}, 'houseProduct': {'type': ['boolean', 'null'], 'default': None}}}, 'servers': {'type': ['array', 'null'], 'items': {'type': 'object', 'required': ['qualifiedName', 'currentSchemaHash', 'schemaStable', 'lastSchemaChangeAt', 'toolCount', 'lastProbedAt', 'directlyProbed', 'driftedSinceKnownHash', 'driftedSince', 'advice'], 'properties': {'advice': {'type': 'string'}, 'toolCount': {'type': 'integer'}, 'driftedSince': {'type': ['boolean', 'null']}, 'lastProbedAt': {'type': ['string', 'null'], 'format': 'date-time'}, 'schemaStable': {'type': 'boolean'}, 'qualifiedName': {'type': 'string'}, 'directlyProbed': {'type': 'boolean'}, 'currentSchemaHash': {'type': ['string', 'null']}, 'lastSchemaChangeAt': {'type': ['string', 'null'], 'format': 'date-time'}, 'driftedSinceKnownHash': {'type': ['boolean', 'null']}}}}, 'hasMcpSupport': {'type': ['boolean', 'null']}}}
tools.find_for_task
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', 'required': ['taskDescription'], 'properties': {'limit': {'type': 'integer', 'default': 10, 'description': 'Maximum number of tool results to return'}, 'access': {'type': ['string', 'null'], 'default': None, 'description': "Optional access-class filter: 'open' (callable anonymously), 'keyed', 'account', 'commercial', or 'unknown'. Omit for all — Open tools are boosted, not required."}, 'remoteOnly': {'type': 'boolean', 'default': True, 'description': 'If true (default), only return tools from remote-capable MCP servers'}, 'taskDescription': {'type': 'string', 'description': 'Natural language description of the task you want to accomplish'}}}
输出模式
{'type': 'object', 'properties': {'task': {'type': ['string', 'null']}, 'error': {'type': ['object', 'null'], 'required': ['code', 'message'], 'properties': {'id': {'type': ['string', 'null']}, 'code': {'type': 'string'}, 'hint': {'type': ['string', 'null']}, 'field': {'type': ['string', 'null']}, 'message': {'type': 'string'}, 'resource': {'type': ['string', 'null']}}}, 'buckets': {'type': ['object', 'null'], 'required': ['callableNow', 'requiresSetup'], 'properties': {'callableNow': {'type': 'integer'}, 'requiresSetup': {'type': 'integer'}}}, 'message': {'type': ['string', 'null']}, 'results': {'type': ['array', 'null'], 'items': {'type': 'object', 'required': ['position', 'rank', 'normalizedName', 'displayName', 'productSlug', 'productName'], 'properties': {'rank': {'type': 'number'}, 'tier': {'enum': ['Free', 'Verified', 'Featured'], 'type': 'string'}, 'setup': {'type': ['string', 'null']}, 'position': {'type': 'integer'}, 'readOnly': {'type': ['boolean', 'null']}, 'relevance': {'type': ['integer', 'null']}, 'sponsored': {'type': ['boolean', 'null']}, 'unverified': {'type': ['boolean', 'null']}, 'verifiedAt': {'type': ['string', 'null'], 'format': 'date-time'}, 'accessModel': {'enum': ['Unknown', 'Open', 'Keyed', 'Account', 'Commercial', None], 'type': ['string', 'null']}, 'callableNow': {'type': ['boolean', 'null']}, 'description': {'type': ['string', 'null']}, 'destructive': {'type': ['boolean', 'null']}, 'displayName': {'type': 'string'}, 'healthScore': {'type': ['integer', 'null']}, 'inputSchema': True, 'productName': {'type': 'string'}, 'productSlug': {'type': 'string'}, 'houseProduct': {'type': ['boolean', 'null']}, 'normalizedName': {'type': 'string'}, 'isRemoteCapable': {'type': 'boolean'}, 'serverQualifiedName': {'type': ['string', 'null']}}}}, 'matchType': {'enum': ['None', 'ExactSlug', 'CanonicalSlug', 'NlpFallback', None], 'type': ['string', 'null']}, 'suggestedQueries': {'type': ['array', 'null'], 'items': {'type': 'string'}}, 'capabilityProducts': {'type': ['array', 'null'], 'items': {'type': 'object', 'required': ['position', 'rank', 'slug', 'name', 'websiteUrl', 'matchedCapabilities'], 'properties': {'name': {'type': 'string'}, 'rank': {'type': 'number'}, 'slug': {'type': 'string'}, 'tier': {'enum': ['Free', 'Verified', 'Featured'], 'type': 'string'}, 'tagline': {'type': ['string', 'null']}, 'position': {'type': 'integer'}, 'sponsored': {'type': ['boolean', 'null']}, 'unverified': {'type': ['boolean', 'null']}, 'verifiedAt': {'type': ['string', 'null'], 'format': 'date-time'}, 'websiteUrl': {'type': 'string'}, 'houseProduct': {'type': ['boolean', 'null']}, 'matchedCapabilities': {'type': 'array', 'items': {'type': 'string'}}}}}, 'resolvedCapabilities': {'type': ['array', 'null'], 'items': {'type': 'object', 'required': ['slug', 'name', 'kind'], 'properties': {'kind': {'enum': ['Unspecified', 'Integration', 'Compliance', 'Format', 'Standard', 'Workflow'], 'type': 'string'}, 'name': {'type': 'string'}, 'slug': {'type': 'string'}}}}, 'suggestedCapabilities': {'type': ['array', 'null'], 'items': {'type': 'string'}}}}
tools.get
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', 'required': ['productSlug', 'name'], 'properties': {'name': {'type': 'string', 'description': "Normalized tool name (e.g. 'search_issues', 'send_message')"}, 'productSlug': {'type': 'string', 'description': "Slug of the product that exposes this tool (e.g. 'linear', 'github')"}}}
输出模式
{'type': 'object', 'properties': {'tool': {'type': ['object', 'null'], 'required': ['position', 'rank', 'normalizedName', 'displayName', 'productSlug', 'productName'], 'properties': {'rank': {'type': 'number'}, 'tier': {'enum': ['Free', 'Verified', 'Featured'], 'type': 'string'}, 'setup': {'type': ['string', 'null']}, 'position': {'type': 'integer'}, 'readOnly': {'type': ['boolean', 'null']}, 'relevance': {'type': ['integer', 'null']}, 'sponsored': {'type': ['boolean', 'null']}, 'unverified': {'type': ['boolean', 'null']}, 'verifiedAt': {'type': ['string', 'null'], 'format': 'date-time'}, 'accessModel': {'enum': ['Unknown', 'Open', 'Keyed', 'Account', 'Commercial', None], 'type': ['string', 'null']}, 'callableNow': {'type': ['boolean', 'null']}, 'description': {'type': ['string', 'null']}, 'destructive': {'type': ['boolean', 'null']}, 'displayName': {'type': 'string'}, 'healthScore': {'type': ['integer', 'null']}, 'inputSchema': True, 'productName': {'type': 'string'}, 'productSlug': {'type': 'string'}, 'houseProduct': {'type': ['boolean', 'null']}, 'normalizedName': {'type': 'string'}, 'isRemoteCapable': {'type': 'boolean'}, 'serverQualifiedName': {'type': ['string', 'null']}}}, 'error': {'type': ['object', 'null'], 'required': ['code', 'message'], 'properties': {'id': {'type': ['string', 'null']}, 'code': {'type': 'string'}, 'hint': {'type': ['string', 'null']}, 'field': {'type': ['string', 'null']}, 'message': {'type': 'string'}, 'resource': {'type': ['string', 'null']}}}}}
tools.list_by_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', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': "Normalized tool name (e.g. 'search', 'create_issue')"}}}
输出模式
{'type': 'object', 'properties': {'error': {'type': ['object', 'null'], 'required': ['code', 'message'], 'properties': {'id': {'type': ['string', 'null']}, 'code': {'type': 'string'}, 'hint': {'type': ['string', 'null']}, 'field': {'type': ['string', 'null']}, 'message': {'type': 'string'}, 'resource': {'type': ['string', 'null']}}}, 'tools': {'type': ['array', 'null'], 'items': {'type': 'object', 'required': ['position', 'rank', 'normalizedName', 'displayName', 'productSlug', 'productName'], 'properties': {'rank': {'type': 'number'}, 'tier': {'enum': ['Free', 'Verified', 'Featured'], 'type': 'string'}, 'setup': {'type': ['string', 'null']}, 'position': {'type': 'integer'}, 'readOnly': {'type': ['boolean', 'null']}, 'relevance': {'type': ['integer', 'null']}, 'sponsored': {'type': ['boolean', 'null']}, 'unverified': {'type': ['boolean', 'null']}, 'verifiedAt': {'type': ['string', 'null'], 'format': 'date-time'}, 'accessModel': {'enum': ['Unknown', 'Open', 'Keyed', 'Account', 'Commercial', None], 'type': ['string', 'null']}, 'callableNow': {'type': ['boolean', 'null']}, 'description': {'type': ['string', 'null']}, 'destructive': {'type': ['boolean', 'null']}, 'displayName': {'type': 'string'}, 'healthScore': {'type': ['integer', 'null']}, 'inputSchema': True, 'productName': {'type': 'string'}, 'productSlug': {'type': 'string'}, 'houseProduct': {'type': ['boolean', 'null']}, 'normalizedName': {'type': 'string'}, 'isRemoteCapable': {'type': 'boolean'}, 'serverQualifiedName': {'type': ['string', 'null']}}}}, 'total': {'type': ['integer', 'null']}, 'normalizedName': {'type': ['string', 'null']}}}
tools.search
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', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'default': 20, 'description': 'Maximum number of results to return'}, 'query': {'type': 'string', 'description': 'Search query to find tools by name or capability. Natural-language phrases work best (semantic search).'}, 'access': {'type': ['string', 'null'], 'default': None, 'description': "Optional access-class filter: 'open' (callable anonymously), 'keyed', 'account', 'commercial', or 'unknown'. Omit for all."}, 'remoteOnly': {'type': 'boolean', 'default': False, 'description': 'If true, only return tools available via remote (network-hosted) MCP servers'}}}
输出模式
{'type': 'object', 'properties': {'error': {'type': ['object', 'null'], 'required': ['code', 'message'], 'properties': {'id': {'type': ['string', 'null']}, 'code': {'type': 'string'}, 'hint': {'type': ['string', 'null']}, 'field': {'type': ['string', 'null']}, 'message': {'type': 'string'}, 'resource': {'type': ['string', 'null']}}}, 'tools': {'type': ['array', 'null'], 'items': {'type': 'object', 'required': ['position', 'rank', 'normalizedName', 'displayName', 'productSlug', 'productName'], 'properties': {'rank': {'type': 'number'}, 'tier': {'enum': ['Free', 'Verified', 'Featured'], 'type': 'string'}, 'setup': {'type': ['string', 'null']}, 'position': {'type': 'integer'}, 'readOnly': {'type': ['boolean', 'null']}, 'relevance': {'type': ['integer', 'null']}, 'sponsored': {'type': ['boolean', 'null']}, 'unverified': {'type': ['boolean', 'null']}, 'verifiedAt': {'type': ['string', 'null'], 'format': 'date-time'}, 'accessModel': {'enum': ['Unknown', 'Open', 'Keyed', 'Account', 'Commercial', None], 'type': ['string', 'null']}, 'callableNow': {'type': ['boolean', 'null']}, 'description': {'type': ['string', 'null']}, 'destructive': {'type': ['boolean', 'null']}, 'displayName': {'type': 'string'}, 'healthScore': {'type': ['integer', 'null']}, 'inputSchema': True, 'productName': {'type': 'string'}, 'productSlug': {'type': 'string'}, 'houseProduct': {'type': ['boolean', 'null']}, 'normalizedName': {'type': 'string'}, 'isRemoteCapable': {'type': 'boolean'}, 'serverQualifiedName': {'type': ['string', 'null']}}}}, 'searchMode': {'type': ['string', 'null']}}}
已添加
products.find_by_capability
2026年9月17日 07:57
已添加
products.find_agent_ready
2026年9月17日 07:57
已添加
products.search
2026年9月17日 07:57
已添加
tools.changes
2026年9月17日 07:57
已添加
tools.list_by_name
2026年9月17日 07:57
已添加
tools.search
2026年9月17日 07:57
已添加
rankings.get
2026年9月17日 07:57
已添加
directory.overview
2026年9月17日 07:57
已添加
tools.find_for_task
2026年9月17日 07:57
已添加
products.get
2026年9月17日 07:57
已添加
products.get_mcp_setup
2026年9月17日 07:57
已添加
mcp.score_server
2026年9月17日 07:57
已添加
categories.list
2026年9月17日 07:57
已添加
tools.get
2026年9月17日 07:57