Skip to main content
Glama
PaulieB14

Limitless MCP

get_market_trades

Retrieve on-chain trade data for specific markets, including price, volume, and fee details for BUY/SELL transactions.

Instructions

Get trades for a specific market. Returns trade details with maker/taker, price, volume, and fees from on-chain data.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
conditionIdYesMarket conditionId
firstNoNumber of trades
tradeTypeNoFilter by trade type
orderDirectionNodesc

Implementation Reference

  • The implementation of the get_market_trades tool. It queries both simple and negrisk markets for trade data, combines the results, sorts them, and returns them along with market information.
    server.registerTool(
      "get_market_trades",
      {
        description:
          "Get trades for a specific market. Returns trade details with maker/taker, price, volume, and fees from on-chain data.",
        inputSchema: {
          conditionId: z.string().describe("Market conditionId"),
          first: z.number().default(20).describe("Number of trades"),
          tradeType: z
            .enum(["BUY", "SELL"])
            .optional()
            .describe("Filter by trade type"),
          orderDirection: z.enum(["asc", "desc"]).default("desc"),
        },
      },
      async ({ conditionId, first, tradeType, orderDirection }) => {
        try {
          const typeFilter = tradeType ? `, type: "${tradeType}"` : "";
          const tradesQuery = `{
            trades(
              where: { market: "${conditionId}"${typeFilter} }
              first: ${first}
              orderBy: timestamp
              orderDirection: ${orderDirection}
            ) {
              id type maker taker
              makerAmountFilled takerAmountFilled
              amountUSD fee feeUSD price
              venue timestamp blockNumber txHash
            }
          }`;
    
          const [simpleData, negriskData, name] = await Promise.all([
            querySimple(tradesQuery).catch(() => ({ trades: [] })),
            queryNegRisk(tradesQuery).catch(() => ({ trades: [] })),
            getMarketName(conditionId),
          ]);
    
          const simpleTrades = (simpleData.trades || []).map((t: any) => ({
            ...t,
            marketType: "simple",
          }));
          const negriskTrades = (negriskData.trades || []).map((t: any) => ({
            ...t,
            marketType: "negrisk",
          }));
    
          const allTrades = [...simpleTrades, ...negriskTrades]
            .sort((a, b) =>
              orderDirection === "desc"
                ? Number(b.timestamp) - Number(a.timestamp)
                : Number(a.timestamp) - Number(b.timestamp)
            )
            .slice(0, first);
    
          return textResult({ market: name, conditionId, trades: allTrades });
        } catch (e) {
          return errorResult(e);
        }
      }
    );

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/PaulieB14/limitless-subgraphs'

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