Skip to main content
Glama
wysh3

Perplexity MCP Server

find_apis

Identify and compare external APIs or real-time data services based on specific requirements. Ideal for selecting solutions like image recognition or payment processing APIs, tailored to project needs such as free tiers or SDK compatibility.

Instructions

Automatically call this tool when needing external services or real time current data (like API info, latest versions, etc.) from web. Compares options based on requirements. Example: When building a shopping site, ask "Find product image APIs with free tiers".

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
contextNoAdditional context about the project or specific needs
requirementYesThe functionality or requirement you are looking to fulfill

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
responseNoThe raw text response from Perplexity containing API suggestions and evaluations.

Implementation Reference

  • The main handler function for the 'find_apis' tool. It extracts arguments and performs a web search using the search engine for APIs matching the requirement.
    private async handleFindApis(args: Record<string, unknown>): Promise<string> {
      const typedArgs = args as { requirement: string; context?: string };
      const searchResult = await this.searchEngine.performSearch(
        `Find APIs for ${typedArgs.requirement}: ${typedArgs.context || ""}`,
      );
      return searchResult;
    }
  • Registers the 'find_apis' handler (along with others) into the tool handlers registry and sets it up on the MCP server.
    const toolHandlers = createToolHandlersRegistry({
      chat_perplexity: this.handleChatPerplexity.bind(this),
      get_documentation: this.handleGetDocumentation.bind(this),
      find_apis: this.handleFindApis.bind(this),
      check_deprecated_code: this.handleCheckDeprecatedCode.bind(this),
      search: this.handleSearch.bind(this),
      extract_url_content: this.handleExtractUrlContent.bind(this),
    });
  • Complete schema definition for the 'find_apis' tool, including description, inputSchema (requirement, context), outputSchema, examples, and metadata.
      name: "find_apis",
      description:
        'Automatically call this tool when needing external services or real time current data (like API info, latest versions, etc.) from web. Compares options based on requirements. Example: When building a shopping site, ask "Find product image APIs with free tiers".',
      category: "API Discovery",
      keywords: ["api", "integration", "services", "endpoints", "sdk", "data", "external"],
      use_cases: [
        "Finding APIs for specific functionality",
        "Comparing API alternatives",
        "Evaluating API suitability",
      ],
      inputSchema: {
        type: "object",
        properties: {
          requirement: {
            type: "string",
            description: "The functionality or requirement you are looking to fulfill",
            examples: ["image recognition", "payment processing", "geolocation services"],
          },
          context: {
            type: "string",
            description: "Additional context about the project or specific needs",
            examples: ["prefer free tier options", "must support Python SDK"],
          },
        },
        required: ["requirement"],
      },
      outputSchema: {
        type: "object",
        properties: {
          response: {
            type: "string",
            description:
              "The raw text response from Perplexity containing API suggestions and evaluations.",
          },
        },
      },
      examples: [
        {
          description: "Finding payment APIs",
          input: {
            requirement: "payment processing",
            context: "needs Stripe alternative",
          },
          output: {
            response: "PayPal offers global payment processing with 2.9% + $0.30 per transaction...",
          },
        },
      ],
      related_tools: ["get_documentation", "search"],
    },
  • TypeScript interface defining the input arguments for the 'find_apis' tool.
    export interface FindApisArgs {
      requirement: string;
      context?: string;
    }
  • Detailed helper function for 'find_apis' with comprehensive prompt for API discovery and evaluation (not directly registered in PerplexityServer).
    export default async function findApis(
      args: { requirement: string; context?: string },
      ctx: PuppeteerContext,
      performSearch: (prompt: string, ctx: PuppeteerContext) => Promise<string>,
    ): Promise<string> {
      const { requirement, context = "" } = args;
      const prompt = `Find and evaluate APIs that could be used for: ${requirement}. ${
        context ? `Context: ${context}` : ""
      } For each API, provide:
    1. Name and brief description
    2. Key features and capabilities
    3. Pricing model and rate limits
    4. Authentication methods
    5. Integration complexity
    6. Documentation quality and examples
    7. Community support and popularity
    8. Any potential limitations or concerns
    9. Code examples for basic usage
    10. Comparison with similar APIs
    11. SDK availability and language support`;
      return await performSearch(prompt, ctx);
    }
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the tool 'compares options based on requirements', which adds some context about its behavior. However, it lacks details on how the comparison works, what sources it uses, whether it requires authentication, rate limits, or what the output looks like. For a tool that interacts with web data, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured, consisting of two sentences: one stating the purpose and usage, and another providing a concrete example. Each sentence adds value without redundancy. It could be slightly improved by front-loading key information more explicitly, but overall it's efficient and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that there is an output schema (which reduces the need to describe return values in the description), no annotations, and high schema coverage, the description is moderately complete. It covers the basic purpose and usage but lacks details on behavioral aspects like data sources, comparison methodology, and limitations. For a tool that fetches and compares web data, more context would be beneficial.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with clear documentation for both parameters ('requirement' and 'context'), including examples. The description adds minimal value beyond the schema, as it doesn't provide additional syntax, format details, or usage nuances for the parameters. The baseline score of 3 is appropriate since the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: to find external services or real-time data from the web by comparing options based on requirements. It provides a specific example (shopping site scenario) that illustrates the verb 'find' and resource 'APIs'. However, it doesn't explicitly distinguish this tool from sibling tools like 'search' or 'get_documentation', which might have overlapping functionality.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides some usage guidance by stating 'Automatically call this tool when needing external services or real time current data' and giving an example scenario. This implies when to use it, but it doesn't explicitly differentiate it from alternatives like 'search' or 'chat_perplexity', nor does it specify when NOT to use it. The guidance is helpful but incomplete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Related Tools

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/wysh3/perplexity-mcp-zerver'

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