Agora MCP
Connects AI assistants to SearchAgora, a universal product search engine, allowing users to search for products, compare options, and (coming soon) manage shopping carts and complete purchases directly through the AI assistant.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Agora MCPfind a wireless gaming mouse under $50"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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
MCP Client like Cursor or Claude Desktop
UV installed
A payment method through any L402-compatible client like Fewsats
Setting Up the MCP Server
For Cursor
Open Cursor and go to Settings
Navigate to MCP Server Configuration
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
Find the configuration file:
On MacOS:
~/Library/Application\ Support/Claude/claude_desktop_config.jsonOn Windows:
%APPDATA%/Claude/claude_desktop_config.json
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 ratingThe 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 cartShow me what's in my cartCheckout and purchase my itemsSupported 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 toolsagora_get_orderC
Get details for a specific order in Agora.
Args:
order_id: The order ID.
Returns:
The order details.
| Name | Required | Description | Default |
|---|---|---|---|
| order_id | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | ||
| product_id | Yes | ||
| variant_id | Yes | ||
| shipping_address | Yes | ||
| user | Yes | ||
| quantity | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
agora_searchB
Search for products matching the query in Agora.
Args:
q: The search query.
count: The number of products to return per page.
page: The page number.
price_min: The minimum price. Optional
price_max: The maximum price. Optional
sort: The sort field: price:relevance.
order: The sort order: asc or desc.
Returns:
The search results.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | ||
| price_min | No | ||
| price_max | No | ||
| count | No | ||
| page | No | ||
| sort | No | relevance | |
| order | No | desc |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It only states what the tool does (search) and lists parameters/returns. It doesn't disclose important behavioral traits like whether this is a read-only operation, authentication requirements, rate limits, pagination behavior beyond basic parameters, or error conditions. The description is minimal and lacks 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured with a clear purpose statement followed by organized parameter documentation. Every sentence earns its place: the opening statement defines the tool, and the parameter list provides essential usage information without redundancy. The formatting with 'Args:' and 'Returns:' sections enhances readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (7 parameters, search functionality) and absence of both annotations and output schema, the description is partially complete. It adequately documents parameters and basic purpose but lacks important contextual information about authentication, error handling, result format, and differentiation from sibling tools. For a search tool with no structured metadata, more operational context would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides semantic meaning for all 7 parameters beyond what the schema offers (0% coverage). It explains what each parameter controls: 'q' is the search query, 'count' controls results per page, 'page' is page number, price filters are optional, and sort/order control ranking. This compensates well for the schema's lack of descriptions, though it doesn't provide format details like valid sort values beyond 'price:relevance'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Search for products matching the query in Agora.' This specifies the verb (search), resource (products), and context (Agora platform). However, it doesn't explicitly differentiate from sibling tools like 'agora_get_product_detail' which retrieves specific products rather than searching.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 sibling tools like 'agora_get_product_detail' for retrieving specific products or 'agora_get_user_orders' for order-related queries. There's no context about when search is appropriate versus direct retrieval.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
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.
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.
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.
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
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
Hosted MCP server connecting AI assistants to 9,000+ apps and 40,000+ actions via Zapier.
Connect e-commerce and marketing data to AI assistants via MCP.
Hosted MCP for e-commerce: live product catalog, stock, and pricing for AI agents.
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP server that provides standardized access to Google Maps, Flights, Hotels, and other search services, enabling AI assistants to perform various searches.MIT
- FlicenseNot gradedqualityDmaintenanceMCP server that connects AI assistants to the Data Graphs knowledge graph platform, enabling natural language search, exploration, and querying of graph data.18

BizNetAI MCP Serverofficial
AlicenseNot gradedqualityBmaintenanceA 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- AlicenseNot gradedqualityBmaintenanceMCP 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
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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