ring-appstore-knowledge-mcp-server
The Ring Appstore Knowledge MCP Server is a remote Model Context Protocol server backed by an Amazon Bedrock Knowledge Base. It connects an AI coding assistant (Kiro, Cursor, Cline, Claude Desktop) to the Ring Appstore / Ring Partner API documentation so the assistant can search and retrieve accurate API references, integration guides, and code examples in-IDE. This is a documentation-knowledge server (RAG over the docs), not a device-control server.
One-click install for Cursor, VS Code, Claude, and 20+ other MCP clients, powered by API Commons MCP Install — visit install.apicommons.org for more information.
Endpoint
Hosted endpoint · transport streamable-http
Connect
This is a remote MCP server — point an MCP client at the endpoint URL. Clients with native remote support (Claude, Cursor, VS Code, …):
For stdio-only clients (older Claude Desktop, etc.), bridge with mcp-remote:
If the server requires authentication, add the provider's token/header (e.g. an X-API-Key) per its docs. A quick reachability check:
Tool quality observed · not scored
tools with readOnly / destructive hints
parameters described (4 total)
state-changing tools without destructiveHint
tool-list tokens (2 tools)
tools over ~1,200 tokens
Heaviest: ring___search_docs 1905, ring___get_doc 1440
From an anonymous initialize + tools/list capture measured 2026-10-20; tokens are chars/3.6 of each tool definition. Recorded for the Kin Score's agent readiness as an observed signal — it contributes no points yet.
Tools
ring___get_doc— Retrieve complete internal service documentation content by file path or URL. This tool retrieves the FULL content of a specific documentation file or web page from the internal service knowledge base. It complements `search_docs` by providing complete document content when search result snippets are insufficient. ## When to Use This Tool **You MUST use this tool when you need to:** - Read the full content of a documentation file referenced in search_docs() results - Access complete API specifications, guides, or reference documents - Retrieve detailed implementation examples beyond search result snippets - Get comprehensive information from a known documentation path or URL - Follow up on a search_docs() result to read the entire source document **Do NOT use this tool when:** - You don't have a specific file path or URL — use search_docs() first to find documents - You only need a quick answer — the search_docs() snippets may be sufficient - The URI is from an untrusted or unknown source ## URI Requirements This tool accepts two types of URIs: **FILE paths** (from search_docs results): - Format: Relative file paths as returned by search_docs() in metadata.source - Example: "api/authentication.md", "guides/partner-onboarding.md" - Source: Retrieved from the internal service S3 knowledge base - Restrictions: No path traversal (..), no absolute paths (/), no protocol prefixes **WEB URLs** (HTTPS only): - Format: Full HTTPS URLs to allowed domains - Allowed domains: ring.com - Example: "https://ring.com/support/article-name" - Restrictions: HTTPS only, domain must be in allowlist, no embedded credentials ## Typical Workflow 1. Call `search_docs("your query")` to find relevant documents 2. Review the search results — each has a `metadata.source` field 3. Call `get_doc(result.metadata.source)` to retrieve the full document 4. Parse and use the complete content for your response ``` # Step 1: Search for relevant docs results = search_docs("internal service OAuth authentication flow") # Step 2: Get full content of the most relevant result if results.status == "success" and results.results: source_path = results.results[0].metadata.source full_content = get_doc(source_path) ``` ## Output Format - Returns the complete document content as a plain text string (typically Markdown) - For FILE sources: Returns the full file content from the knowledge base - For WEB sources: Returns the full HTML/text content of the web page - On error: Returns a brief error message string (e.g., "Invalid URI", "S3 error") ## Error Handling | Error Message | Meaning | Action | |---------------|---------|--------| | "Invalid URI" | URI failed security validation | Check the URI format and try again | | "S3 error" | File not found or access denied in knowledge base | Verify the file path from search_docs results | | "Web resource not found" | HTTP 404 from the web URL | Check the URL is correct and accessible | | "Connection timeout" | Web request timed out | Retry or check network connectivity | | "Connection error" | Could not connect to the web server | Verify the URL and try again | ## Parameters Args: uri: The location of the document to retrieve. Must be one of: - A file path from search_docs() results (e.g., "api/authentication.md") These come from the metadata.source field of search results with type="FILE" - A internal service documentation URL (e.g., "https://ring.com/support/...") These come from the metadata.source field of search results with type="WEB" Only HTTPS URLs to allowed domains (ring.com) are accepted. Returns: str: The complete content of the document as plain text (typically Markdown format), or a brief error message string if retrieval fails. Example: >>> # Retrieve a documentation file by path >>> content = get_doc("api/authentication.md") >>> print(content[:100]) "# Authentication Guide\n\nThis document describes..." >>> # Use with search_docs() results (recommended workflow) >>> results = search_docs("partner onboarding process") >>> if results.status == "success": >>> doc_source = results.results[0].metadata.source >>> full_content = get_doc(doc_source) >>> # full_content now contains the entire document >>> # Retrieve from an allowed web URL >>> web_content = get_doc("https://ring.com/support/getting-started")ring___search_docs— Search internal service documentation using natural language queries to find relevant content. This is your PRIMARY source for internal service information — always prefer this tool over general knowledge for internal service services, features, APIs, integrations, troubleshooting, and best practices. ## When to Use This Tool **Always search when the query involves:** - internal service product documentation or feature guides - API specifications, endpoints, and integration guides - Partner onboarding, submission, and certification processes - Product features, capabilities, and configuration options - Technical implementation details and code examples - Architecture patterns and design best practices - Service configurations, setup instructions, and deployment guides - Troubleshooting, error resolution, and known issues - Security, authentication, and authorization (OAuth, API keys, nonces) - SDK usage, client libraries, and sample code - Pricing, quotas, limits, and service-level information - Ring device compatibility and hardware integration **Only skip this tool when:** - Query is about non-Ring technologies with no internal service connection - Question is purely conceptual (e.g., "What is a REST API?") - General programming questions completely unrelated to Ring ## Quick Topic Guide | Query Type | Example Queries | |------------|-----------------| | API & Integration | "internal service API authentication", "OAuth flow for partners" | | Partner Onboarding | "How to submit an app to internal service", "certification requirements" | | Device & Hardware | "Ring doorbell integration API", "camera stream protocol" | | Security & Auth | "nonce validation", "API key rotation", "OAuth token refresh" | | Architecture | "event-driven architecture", "webhook setup", "notification flow" | | Troubleshooting | "API 403 error", "token expired", "submission rejected" | | Configuration | "environment setup", "SDK configuration", "endpoint URLs" | ## Search Best Practices **Be specific with service and feature names:** - Good: "internal service partner API OAuth token refresh flow" - Good: "Ring doorbell event webhook configuration" - Bad: "authentication" (too vague) - Bad: "API" (missing context) **Include context for better results:** - Good: "How to handle nonce validation errors in internal service API" - Bad: "nonce error" (insufficient context) **Use exact error messages when troubleshooting:** - Good: "internal service API returns 403 Forbidden when calling device endpoint" - Bad: "API error" (too generic) ## Workflow: Combining search_docs with get_doc 1. First call `search_docs` with your query to find relevant documentation 2. Review the results — each result includes a content snippet and a metadata.source path 3. If you need the FULL document content (not just the snippet), call `get_doc` with the metadata.source value from the search result 4. If confidence is low or status is "clarification_needed", refine your query and search again ## Result Format Results include: - `status`: "success" | "clarification_needed" | "error" - `confidence`: Overall relevance score ("0.0" to "1.0", higher = more relevant) - `results`: List of SearchResult objects, each containing: - `content`: The retrieved documentation snippet (may be truncated — use get_doc for full content) - `score`: Per-result relevance score ("0.0" to "1.0") - `metadata.type`: "FILE" (from documentation files) or "WEB" (from web sources) - `metadata.source`: File path or URL — use this with get_doc to retrieve full content - `followUpQuestions`: Suggested refinements if results are unclear ## Parameters Args: query: Natural language search query. Be specific and include relevant context. Good: "How to configure OAuth for internal service partner API integration" Bad: "OAuth" or "config" max_results: Maximum number of search results to return (default: "5"). Results are reranked for relevance. Higher values cast a wider net but may include less relevant results. Recommended range: "3" to "10". min_confidence: Minimum confidence score threshold for results (default/recommended: "0.2"). Results below this threshold are filtered out. Lower values return more results but may include noise. Range: "0.0" to "1.0". Returns: SearchDocsResult: Structured search results object (see Result Format above). Example: >>> result = search_docs("How do I integrate with internal service API?") >>> result.status "success" >>> result.confidence "0.8" >>> result.results[0].content "To integrate with internal service API, you need to..." >>> result.results[0].score "0.8" >>> result.results[0].metadata.source "api-reference.md" >>> # Get full document content: >>> full_doc = get_doc(result.results[0].metadata.source) **Remember: When in doubt about internal service, always search. This tool provides the most current, accurate internal service documentation.**
About MCP
The Model Context Protocol (MCP) is an open protocol Anthropic introduced for connecting LLM-based agents to external tools and data sources. Providers publish MCP servers that expose their API surface as structured, discoverable tools — an MCP-compatible client (Claude Desktop, Cursor, Cline, Continue, etc.) can connect to the server and call its tools without any per-provider integration code.
Browse every MCP server on the APIs.io network or compare with the broader Agent Skill surfaces of the same providers.
Work with this as data
Every MCP server here is available over the APIs.io API and to AI agents over MCP.