Skip to main content
Glama
riker-t

Ramp Developer MCP Server

by riker-t

search_documentation

Search Ramp API documentation using natural language queries to find relevant guides, authentication methods, implementation examples, and troubleshooting solutions for developers building integrations.

Instructions

šŸ” SMART DOCUMENTATION SEARCH - Finds the most relevant Ramp API documentation for your query.

What this does: • šŸŽÆ Detects your intent from natural language queries • šŸ“š Searches through all Ramp documentation and guides • 🧠 Reasons about which content is most relevant • šŸ“‹ Returns clean, actionable markdown chunks

Perfect for: • Getting started with authentication • Understanding specific API workflows • Finding implementation examples • Troubleshooting integration issues

Usage: Just describe what you're trying to do naturally. Examples: "building an integration", "setting up OAuth", "bill payment workflow", "webhook events"

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
queryYesYour question or what you're trying to accomplish. Use natural language - e.g., 'building an integration', 'OAuth setup', 'bill payments'

Implementation Reference

  • The main handler function that executes the search_documentation tool logic: processes the query, detects intent, finds relevant guides, extracts content, and returns formatted TextContent.
    async def execute(self, arguments: Dict[str, Any]) -> List[TextContent]: """Search documentation and return most relevant content""" query = arguments.get("query", "").strip() if not query: return [TextContent( type="text", text="āŒ Please provide a search query describing what you're looking for." )] try: # Step 1: Detect intent from user query detected_cluster = self.knowledge_base.detect_intent(query) # Step 2: Find and rank relevant documentation files relevant_guides = self._find_relevant_guides(query, detected_cluster) if not relevant_guides: return [TextContent( type="text", text=f"ā„¹ļø No specific documentation found for '{query}'. Try more specific keywords like 'authentication', 'bill payments', 'webhooks', or 'card management'." )] # Step 3: Extract and return the most relevant content content = self._extract_relevant_content(relevant_guides[0], query, detected_cluster) return [TextContent(type="text", text=content)] except Exception as e: return [TextContent( type="text", text=f"āŒ Error searching documentation: {str(e)}" )]
  • Defines the input schema for the tool, requiring a 'query' string parameter.
    def input_schema(self) -> Dict[str, Any]: return { "type": "object", "properties": { "query": { "type": "string", "description": "Your question or what you're trying to accomplish. Use natural language - e.g., 'building an integration', 'OAuth setup', 'bill payments'" } }, "required": ["query"] }
  • src/server.py:46-51 (registration)
    Registers the SearchDocumentationTool by instantiating it with the knowledge_base and adding to the server's tools list.
    tools = [ PingTool(), SearchDocumentationTool(knowledge_base), SubmitFeedbackTool(), GetEndpointSchemaTool(knowledge_base) ]
  • Defines the tool name as 'search_documentation' used for registration and invocation.
    def name(self) -> str: return "search_documentation"
  • Helper method to find and rank relevant documentation guides based on query and detected intent cluster.
    def _find_relevant_guides(self, query: str, detected_cluster: str) -> List[Dict[str, Any]]: """Find and rank relevant documentation files""" relevant_guides = [] # If we detected a cluster, prioritize its guides if detected_cluster and detected_cluster in self.knowledge_base.use_case_clusters: cluster_data = self.knowledge_base.use_case_clusters[detected_cluster] guide_filenames = cluster_data.get("guides", []) for guide_filename in guide_filenames: guide_content = self.knowledge_base._find_guide_by_filename(guide_filename) if guide_content: relevance_score = self._calculate_relevance(query, guide_content, guide_filename) relevant_guides.append({ 'filename': guide_filename, 'content': guide_content, 'cluster': detected_cluster, 'score': relevance_score }) # Also search all guides for keyword matches query_keywords = query.lower().split() for guide_path, guide_obj in self.knowledge_base.guides.items(): if not any(guide['filename'] in guide_path for guide in relevant_guides): relevance_score = self._calculate_relevance(query, guide_obj.content, guide_path) if relevance_score > 0.1: # Only include if somewhat relevant relevant_guides.append({ 'filename': str(guide_path), 'content': guide_obj.content, 'cluster': 'general', 'score': relevance_score }) # Sort by relevance score (highest first) relevant_guides.sort(key=lambda x: x['score'], reverse=True) return relevant_guides

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/riker-t/ramp-dev-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server