Skip to main content
Glama

Agora MCP

An MCP server for searching, discovering, and purchasing products through AI assistants like Claude or Cursor.

What is Agora MCP?

Agora MCP connects AI assistants to SearchAgora - a universal product search engine that helps you discover and buy products from across the web. With this MCP, you can seamlessly search for products, compare options, manage your shopping cart, and complete purchases directly through your AI assistant.

Related MCP server: @datalanguage/datagraphs-mcp-server

Prerequisites

Setting Up the MCP Server

For Cursor

  1. Open Cursor and go to Settings

  2. Navigate to MCP Server Configuration

  3. Add the following configuration:

{
  "mcpServers": {
    "Agora": {
      "command": "uvx",
      "args": [
        "agora-mcp"
      ]
    },
    "Fewsats": {
      "command": "env",
      "args": [
        "FEWSATS_API_KEY=YOUR_FEWSATS_API_KEY",
        "uvx",
        "fewsats-mcp"
      ]
    }
  }
}

Make sure to replace YOUR_FEWSATS_API_KEY with your actual API key from Fewsats.

For Claude Desktop

  1. Find the configuration file:

    • On MacOS: ~/Library/Application\ Support/Claude/claude_desktop_config.json

    • On Windows: %APPDATA%/Claude/claude_desktop_config.json

  2. Add the following configuration:

"mcpServers": {
  "Agora": {
    "command": "uvx",
    "args": [
      "agora-mcp"
    ]
  },
  "Fewsats": {
    "command": "env",
    "args": [
      "FEWSATS_API_KEY=YOUR_FEWSATS_API_KEY",
      "uvx",
      "fewsats-mcp"
    ]
  }
}

Running a Local Development Version

For development purposes, you can run a local version of the Agora MCP from your own repository:

"Agora": {
  "command": "uv",
  "args": [
    "--directory",
    "/path/to/your/agora-mcp",
    "run",
    "agora-mcp"
  ]
}

Replace /path/to/your/agora-mcp with the actual path to your local Agora MCP repository.

Using Agora MCP With Your AI

Once configured, you can have natural conversations with your AI to search for and purchase products:

Searching for Products

Simply ask your AI to search for products:

Can you find a cool t-shirt for me?

Advanced Search Options

Refine your search with additional parameters:

Show me headphones under $100 sorted by highest rating

The search supports:

  • Price ranges (min/max)

  • Pagination

  • Custom sorting

  • Product filtering

Coming Soon: Shopping Cart & Purchasing

Soon you'll be able to:

Add that red t-shirt to my cart
Show me what's in my cart
Checkout and purchase my items

Supported Features

Currently, Agora MCP supports:

  • Product search with customizable parameters:

    • Search query

    • Results per page

    • Page navigation

    • Price filtering (minimum and maximum)

    • Custom sorting options

Coming soon:

  • Add products to cart

  • View and manage shopping cart

  • Complete purchases

  • Save favorite products

  • Track order status

About SearchAgora

SearchAgora is a universal product search engine that helps you discover products from across the web. It offers a seamless shopping experience with comprehensive product information, price comparisons, and streamlined checkout processes.

Available Tools

6 tools
agora_get_orderC
Get details for a specific order in Agora.

Args:
    order_id: The order ID.
    
Returns:
    The order details.
ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states this is a read operation ('Get'), implying it's non-destructive, but doesn't cover critical aspects like authentication requirements, error handling, rate limits, or what happens if the order ID is invalid. The description lacks depth for a tool that likely interacts with sensitive order data.

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 appropriately sized and front-loaded with the core purpose in the first sentence. The 'Args' and 'Returns' sections add structure, though they could be more detailed. There's no wasted text, but it risks being too sparse for a tool with no annotations or output schema.

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

Completeness2/5

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

Given no annotations, 0% schema description coverage, and no output schema, the description is incomplete. It doesn't explain what 'order details' include (e.g., items, status, timestamps), error scenarios, or system constraints. For a tool that retrieves potentially complex order data, this leaves significant gaps for an AI agent to operate effectively.

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 schema description coverage is 0%, so the description must compensate. It adds minimal semantics by naming 'order_id' and stating it's 'The order ID', but doesn't explain format, length, or source (e.g., from a previous order list). This provides basic context but falls short of fully documenting the parameter's meaning and constraints.

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 with 'Get details for a specific order in Agora', specifying the verb 'Get' and resource 'order details'. It distinguishes from siblings like 'agora_get_user_orders' (which lists multiple orders) by focusing on a single order, but doesn't explicitly mention this distinction.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an order ID), exclusions, or comparisons to siblings like 'agora_get_user_orders' for listing orders or 'agora_search' for broader queries.

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

agora_get_payment_offersA
Get the payment offers for a product in Agora. Some products do not have variants, in such cases use the product_id as variant_id too.
Before calling this tool, check if the user has already provided the shipping address and user information. 
Otherwise, ask the user for the shipping address and user information.

If the user does not provide an `addressName`, use the `firstname` and `lastname` to populate it.
Args:
    slug: The product slug.
    product_id: The product ID as str delimited by escaped double quotes
    variant_id: The product variant ID as str delimited by escaped double quotes
    quantity: The quantity to purchase.
    shipping_address: The shipping address.
    user: The user information.
    
Example:
    product_id = "\"1234567890\""
    variant_id = "\"1234567890\""
    shipping_address = {
        "addressName": "John Doe",
        "addressFirst": "123 Main St",
        "city": "New York",
        "state": "NY",
        "country": "US",
        "zipCode": "10001"
    }
    
    user = {
        "firstname": "John",
        "lastname": "Doe",
        "email": "john@example.com",
    }
    
Returns:
    L402 offer that can be paid by L402-compatible clients.
ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes
product_idYes
variant_idYes
shipping_addressYes
userYes
quantityNo

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively explains the tool's behavior: handling products without variants (using product_id as variant_id), requiring specific user data before invocation, and returning 'L402 offer that can be paid by L402-compatible clients.' It doesn't cover error conditions or rate limits, but provides substantial operational context.

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

Conciseness3/5

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

The description is appropriately front-loaded with the core purpose, but contains some redundancy (the example repeats information from the Args section). The structure is logical but could be more streamlined. The Args section duplicates parameter names that are already in the schema, though the explanations add value.

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

Completeness4/5

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

Given the complexity (6 parameters including nested objects, no annotations, no output schema), the description provides substantial context. It explains prerequisites, parameter relationships, includes a detailed example, and describes the return value. The main gap is lack of error handling information, but overall it's quite complete for a tool with this complexity.

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

Parameters4/5

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

With 0% schema description coverage, the description compensates well by explaining parameter semantics in the Args section and providing a detailed example. It clarifies the relationship between product_id and variant_id for products without variants, shows the format for product_id and variant_id (as str delimited by escaped double quotes), and illustrates the structure of shipping_address and user objects. This adds significant value beyond the bare schema.

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: 'Get the payment offers for a product in Agora.' It specifies the resource (payment offers) and context (Agora platform), though it doesn't explicitly differentiate from sibling tools like agora_get_order or agora_get_product_detail. The description is specific but lacks sibling comparison.

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

Usage Guidelines5/5

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

The description provides excellent usage guidance with explicit prerequisites: 'Before calling this tool, check if the user has already provided the shipping address and user information. Otherwise, ask the user for the shipping address and user information.' It also includes a specific rule for handling missing addressName. This gives clear when-to-use instructions.

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

agora_get_product_detailB
Get details for a specific product in Agora.

Args:
    slug: The product slug, it usually looks something like 'royal-blue-waxed-shoe-laces-6f2049ef-0d08-4a79-8937-025bb596092f-1718242165922'
    
Returns:
    The product details.
ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes

TDQS

B3.1/5.0
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 only states that it 'Get details' without specifying whether this is a read-only operation, if it requires authentication, what rate limits apply, or what happens on errors. For a tool with zero annotation coverage, 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 appropriately sized and front-loaded, with the core purpose stated first, followed by parameter and return details. Every sentence adds value, though the 'Returns' section is vague ('The product details') and could be more specific. Overall, it's efficient with minimal waste.

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 the tool's low complexity (1 parameter, no nested objects) but lack of annotations and output schema, the description is moderately complete. It covers the purpose and parameter semantics adequately but fails to provide behavioral context or detailed return information. For a simple read operation, this is acceptable but leaves gaps in usage and transparency.

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

Parameters4/5

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

The description adds meaningful context for the single parameter 'slug' by providing an example format ('royal-blue-waxed-shoe-laces-6f2049ef-0d08-4a79-8937-025bb596092f-1718242165922'), which clarifies its expected structure beyond the schema's basic string type. With 0% schema description coverage, this compensation is effective, though it doesn't explain where to obtain the slug or validate it.

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: 'Get details for a specific product in Agora.' It uses a specific verb ('Get') and resource ('product details'), making the intent unambiguous. However, it doesn't differentiate this from sibling tools like 'agora_search' or 'agora_get_order', which could also retrieve product-related information in different contexts.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when this tool is appropriate (e.g., for retrieving full details of a known product) or when not to use it (e.g., for searching products or fetching order-related product info). With siblings like 'agora_search' available, this lack of differentiation leaves usage unclear.

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

agora_get_user_infoB
Get the current user's profile and shipping addresses in Agora.

Returns:
    Dict containing user profile info (firstname, lastname, email) and list of shipping addresses
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool retrieves user data, implying a read-only operation, but doesn't clarify if it requires authentication, has rate limits, or handles errors. The mention of return values adds some context, but key behavioral traits like permissions or constraints are missing, making it insufficient for a mutation-free tool.

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 front-loaded with the core purpose in the first sentence and efficiently adds return value details in the second. Both sentences earn their place by providing essential information without waste, though it could be slightly more structured by explicitly stating there are no parameters.

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 the tool's simplicity (0 parameters, no annotations, no output schema), the description is moderately complete. It covers the purpose and return format, but lacks behavioral context like authentication needs or error handling. For a read-only tool with no complex inputs, this is adequate but leaves gaps that could affect reliable agent usage.

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

Parameters4/5

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

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add parameter details beyond the schema, but since there are no parameters, this is acceptable. It provides a baseline level of clarity without redundancy, though it could briefly note the lack of inputs for completeness.

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 with a specific verb ('Get') and resource ('current user's profile and shipping addresses in Agora'), making it easy to understand what it does. However, it doesn't explicitly differentiate from sibling tools like 'agora_get_user_orders' or 'agora_get_order', which might also retrieve user-related data, so it doesn't achieve full sibling differentiation.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention any context, prerequisites, or exclusions, such as whether it requires authentication or how it differs from sibling tools like 'agora_get_user_orders' for order history. This lack of usage context leaves the agent with minimal direction.

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

agora_get_user_ordersB
Get all orders for the current user.

Returns:
    A list of orders.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool 'Get all orders for the current user' and mentions the return type, but lacks details on permissions, pagination, error handling, or rate limits. This is inadequate for a tool that likely accesses user data.

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 brief and front-loaded with the core purpose in the first sentence. The second sentence about returns is somewhat redundant but not wasteful. It could be more structured (e.g., combining both points), but it's efficient overall.

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

Completeness2/5

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

Given no annotations and no output schema, the description is incomplete. It mentions a return type ('A list of orders') but doesn't specify order structure, error cases, or behavioral constraints. For a data retrieval tool, this leaves significant gaps for an agent.

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

Parameters4/5

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

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add parameter details, but that's appropriate here. A baseline of 4 is given since the schema fully covers the lack of parameters.

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 with a specific verb ('Get') and resource ('orders for the current user'), making it immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'agora_get_order' (singular vs. plural) or 'agora_search' (which might also retrieve orders), so it doesn't reach the highest score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention siblings like 'agora_get_order' for single orders or 'agora_search' for filtered searches, leaving the agent to infer usage based on tool names alone.

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

TDQS

A3.6/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose targeting different resources: get_order, get_payment_offers, get_product_detail, get_user_info, get_user_orders, and search. There is no overlap in functionality, making it easy for an agent to select the right tool for each task.

Naming Consistency5/5

All tool names follow a consistent 'agora_verb_noun' pattern using snake_case, such as 'agora_get_order' and 'agora_search'. This predictability enhances readability and reduces confusion when navigating the tool set.

Tool Count5/5

With 6 tools, the set is well-scoped for an e-commerce platform like Agora, covering core operations like product search, details, orders, payments, and user management. Each tool serves a distinct and necessary function without being excessive or insufficient.

Completeness4/5

The tool set provides strong coverage for browsing, ordering, and user management, but lacks update or delete operations (e.g., updating user info or canceling orders). Agents can work around these gaps, but the absence limits full lifecycle management in the domain.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    A hosted MCP server that routes natural-language shopping queries to independent merchant storefronts, returning normalized product and merchant results for AI agents and shopping assistants.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server that enables AI shopping assistants to understand customer needs, search products using visual and semantic queries, apply metadata filters, and recommend relevant products from an inventory.
    Apache 2.0

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/Fewsats/agora-mcp'

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