Skip to main content
Glama
tanmay4l

Futarchy MCP Server

by tanmay4l

Futarchy MCP

A server implementation for interacting with the Futarchy protocol on Solana.

Setup Instructions

  1. Clone the repository:

git clone <repository-url>
cd futarchy-mcp
  1. Install dependencies:

npm install
  1. Configure RPC URL:

    • Open src/server.ts

    • Update the RPC URL in the connection initialization:

    const connection = new Connection('YOUR_RPC_URL_HERE');
    • You can use:

      • Mainnet: https://api.mainnet-beta.solana.com

      • Devnet: https://api.devnet.solana.com

      • Or your own RPC provider URL (works only with this)

  2. Start the development server:

npm run dev

Related MCP server: Solana MCP Server

Available Routes

DAO Routes

  • GET /daos - Get all DAOs

  • GET /daos/:id - Get a specific DAO by ID

  • GET /daos/:id/proposals - Get all proposals for a specific DAO

  • POST /daos/:id/proposals - Create a new proposal for a DAO (not tested as of now because dao creation route does not exist)

    • Body:

      {
        "descriptionUrl": "string",
        "baseTokensToLP": "number",
        "quoteTokensToLP": "number"
      }

Proposal Routes

  • GET /proposals/:id - Get a specific proposal by ID

Testing

You can test the routes using tools like Postman or curl. The server runs on port 9000 by default.

Example curl commands:

# Get all DAOs
curl http://localhost:9000/daos

# Get a specific DAO
curl http://localhost:9000/daos/<dao-address>

# Get proposals for a DAO
curl http://localhost:9000/daos/<dao-address>/proposals

# Create a new proposal
curl -X POST http://localhost:9000/daos/<dao-address>/proposals \
  -H "Content-Type: application/json" \
  -d '{
    "descriptionUrl": "https://example.com/proposal",
    "baseTokensToLP": 1000,
    "quoteTokensToLP": 1000
  }'

MCP Server for Cursor

This project also includes an MCP (Model Context Protocol) server that allows Cursor to interact with the Futarchy backend through custom tools.

Setting up the MCP Server

  1. Run the setup script to install dependencies, build the project, and configure Cursor:

chmod +x setup.sh
./setup.sh
  1. Or manually configure it:

    • Install dependencies and build the project:

    npm install
    npm run build
    • Open or create ~/.cursor/mcp.json

    • Add the following configuration (adjust the path as needed):

    {
      "mcpServers": {
        "futarchy-routes": {
          "command": "node",
          "args": ["<absolute-path-to-project>/dist/mcp/bin/mcp-futarchy.js"]
        }
      }
    }

Using the MCP Server in Cursor

You can use the following tools in Cursor's chat:

  1. getDaos - Get all DAOs from the Futarchy system

  2. getDao - Get a specific DAO by ID

  3. getProposals - Get all proposals for a specific DAO

  4. getProposal - Get a specific proposal by ID

  5. createProposal - Create a new proposal for a DAO

For example, in Cursor's chat, you can say:

Use the getDaos tool to retrieve a list of all DAOs from the futarchy-routes backend.

For more details about the MCP server, see src/mcp/README.md.

Sentiment Analysis Feature

The Futarchy MCP Server now includes a sentiment analysis tool that analyzes sentiment from Discord and Twitter data for specific proposals. This feature helps in understanding community sentiment about proposals and can be used to make more informed decisions.

How It Works

  1. The sentiment analysis tool collects data from Discord and Twitter about a specific proposal.

  2. It analyzes the sentiment using natural language processing techniques.

  3. It categorizes the sentiment into different categories (Tokenomics, Protocol Parameters, etc.).

  4. It generates a summary, key points, and concerns based on the analysis.

  5. The results are presented in a structured format that can be easily consumed by frontends.

Example Response

{
  "proposalId": "F3hsZzWinRAHbr6CUxdkUFBCH8qNk6Mi9Zfu3PMX49BC",
  "sentimentScore": -0.8,
  "primaryCategory": "Tokenomics",
  "categories": [
    {
      "name": "Tokenomics",
      "score": 0.4
    },
    {
      "name": "Protocol Upgrades",
      "score": 0.3
    },
    {
      "name": "Partnerships Integrations",
      "score": 0.2
    },
    {
      "name": "Protocol Parameters",
      "score": 0.1
    }
  ],
  "summary": "The proposal to launch a new Horizon token for the Aave ecosystem has faced significant backlash from the community...",
  "keyPoints": [
    "The proposed token launch is seen as unnecessary and potentially harmful to the Aave token and community.",
    "The revenue-sharing model is perceived as frontloaded and unfair, favoring early years when adoption and revenue may be low.",
    "There is a desire to maintain the Aave token as the primary governance and utility token for the ecosystem."
  ],
  "concerns": [
    "Dilution of the Aave token's value and attention.",
    "Misalignment of incentives with the proposed revenue-sharing model.",
    "Creation of a separate entity that could compete with the Aave ecosystem.",
    "Lack of transparency and community involvement in the decision-making process."
  ],
  "sources": {
    "discord": true,
    "twitter": true
  }
}

How to Use

You can use the sentiment analysis tool in your MCP server as follows:

const result = await mcp_futarchy_routes_getProposalSentiment({
  proposalId: "F3hsZzWinRAHbr6CUxdkUFBCH8qNk6Mi9Zfu3PMX49BC"
});

This will return the sentiment analysis for the specified proposal.

Available Tools

10 tools
buyInFailMarketC

Buy tokens in the fail market for a proposal

ParametersJSON Schema
NameRequiredDescriptionDefault
proposalIdYesThe ID of the proposal to trade in
amountYesAmount to buy
userYesUser's public key

TDQS

C2.9/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 mentions 'Buy tokens' which implies a transactional operation, but doesn't specify if this requires authentication, has rate limits, affects token balances, or what happens on failure. For a financial 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.

Conciseness5/5

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

The description is a single, efficient sentence with no wasted words. It's front-loaded with the core action and target, making it easy to parse quickly. Every word contributes to understanding the tool's purpose.

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 the complexity of a financial transaction tool with no annotations and no output schema, the description is incomplete. It doesn't explain what 'fail market' entails, the expected outcome (e.g., token transfer, price impact), or error conditions. For a tool with 3 required parameters and transactional nature, more context is needed to use it 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?

Schema description coverage is 100%, so the input schema already documents all three parameters (proposalId, amount, user) with clear descriptions. The description adds no additional meaning beyond the schema, such as explaining what 'amount' represents (e.g., token units) or how 'user' is used. Baseline 3 is appropriate when 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 action ('Buy tokens') and target ('in the fail market for a proposal'), which is specific and distinguishes it from sibling tools like 'sellInFailMarket' or 'buyInPassMarket'. However, it doesn't fully explain what 'fail market' means or how it differs from 'pass market', leaving some ambiguity.

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 like 'sellInFailMarket' or 'buyInPassMarket'. It doesn't mention prerequisites, such as needing a proposal in a specific state, or contextual factors like market conditions. Without this, users might struggle to choose the right tool.

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

buyInPassMarketC

Buy tokens in the pass market for a proposal

ParametersJSON Schema
NameRequiredDescriptionDefault
proposalIdYesThe ID of the proposal to trade in
amountYesAmount to buy
userYesUser's public key

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 full burden for behavioral disclosure. It states 'Buy tokens' which implies a transactional/mutative operation, but fails to describe critical aspects like authentication needs, financial implications (e.g., token costs), rate limits, or what happens upon execution (e.g., token transfer confirmation). This leaves significant gaps for agent understanding.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It's appropriately sized and front-loaded, making it easy to parse quickly.

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 the complexity of a financial transaction tool with no annotations and no output schema, the description is insufficient. It doesn't explain return values, error conditions, or behavioral details like side effects (e.g., token balance changes). For a tool involving token purchases, more context is needed for safe and effective use.

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?

Schema description coverage is 100%, so parameters are documented in the schema. The description adds no additional meaning about parameters beyond implying 'proposalId' identifies the proposal and 'amount' specifies purchase quantity. It meets the baseline for high schema coverage but doesn't enhance parameter understanding.

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 action ('Buy tokens') and target resource ('in the pass market for a proposal'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'sellInPassMarket' or 'buyInFailMarket', which would require mentioning the specific market type or contrasting actions.

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 like 'sellInPassMarket' or 'buyInFailMarket'. It lacks context about prerequisites (e.g., proposal status) or scenarios where buying in the pass market is appropriate, offering only a basic statement of function.

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

createProposalC

Create a new proposal for a DAO

ParametersJSON Schema
NameRequiredDescriptionDefault
daoIdYesThe ID of the DAO to create a proposal for
descriptionUrlYesURL to the proposal description
baseTokensToLPYesAmount of base tokens to LP
quoteTokensToLPYesAmount of quote tokens to LP

TDQS

C2.9/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 full burden for behavioral disclosure. While 'Create' implies a write/mutation operation, the description doesn't address permissions required, whether this is an irreversible action, rate limits, or what happens upon success/failure. This is inadequate for a mutation tool with zero annotation coverage.

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

Conciseness5/5

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

The description is a single, efficient sentence that states the core purpose without unnecessary words. It's appropriately sized and front-loaded with the essential information.

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?

For a mutation tool that creates proposals with 4 required parameters and no annotations or output schema, the description is insufficient. It doesn't explain what constitutes a valid proposal, what happens after creation, or potential side effects. The context demands more comprehensive guidance.

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?

Schema description coverage is 100%, so all parameters are documented in the schema. The description adds no additional parameter information beyond what's already in the schema descriptions. This meets the baseline expectation when schema coverage is complete.

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 action ('Create a new proposal') and target resource ('for a DAO'), providing a specific verb+resource combination. However, it doesn't distinguish this tool from potential sibling tools that might also create proposals in different contexts, which prevents a perfect 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, prerequisites, or contextual constraints. With sibling tools like getProposal and getProposals existing, there's no indication of when creation versus retrieval is appropriate.

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

getDaoC

Get a specific DAO by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
daoIdYesThe ID of the DAO to retrieve

TDQS

C2.9/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 full burden. It states a read operation ('Get') but doesn't disclose behavioral traits such as error handling, authentication needs, rate limits, or what happens if the DAO ID is invalid. This leaves significant gaps for a tool with no annotation coverage.

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

Conciseness5/5

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

The description is a single, efficient sentence with zero waste, front-loading the core purpose. It's appropriately sized for a simple retrieval tool, earning full marks for conciseness.

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, no output schema, and a simple input schema, the description is incomplete. It doesn't explain return values, error cases, or behavioral context, which are crucial for a tool with zero structured coverage beyond the input parameter.

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?

Schema description coverage is 100%, so the schema already documents the single parameter 'daoId' fully. The description adds no additional meaning beyond what the schema provides, such as format examples or constraints, meeting the baseline for high schema coverage.

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 verb ('Get') and resource ('a specific DAO by ID'), making the purpose understandable. However, it doesn't differentiate from sibling 'getDaos' which likely retrieves multiple DAOs, missing explicit sibling distinction that would warrant a 5.

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?

No guidance is provided on when to use this tool versus alternatives like 'getDaos' for listing multiple DAOs or other tools for proposal-related operations. The description implies usage for retrieving a single DAO but lacks explicit when/when-not instructions or named alternatives.

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

getDaosB

Get all DAOs from the Futarchy system

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?

No annotations are provided, so the description carries full burden. It states 'Get all DAOs' but doesn't disclose behavioral traits like whether this is a read-only operation, if it requires authentication, how results are returned (e.g., pagination, format), or potential rate limits. The description is minimal and lacks critical 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.

Conciseness5/5

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

The description is a single, efficient sentence with zero waste. It's front-loaded with the core purpose and appropriately sized for a simple tool, making it easy to parse without unnecessary elaboration.

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 the lack of annotations and output schema, the description is incomplete. It doesn't explain what 'all DAOs' entails (e.g., scope, format, limitations) or provide context about the Futarchy system. For a tool with no structured support, more detail is needed to guide effective use.

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 this is appropriate given the absence of parameters. A baseline of 4 is applied as it adequately handles the zero-parameter case.

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 action ('Get all DAOs') and resource ('from the Futarchy system'), providing a specific verb+resource combination. However, it doesn't differentiate from its sibling 'getDao' (singular), which presumably retrieves a single DAO, leaving some ambiguity about when to use each tool.

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 like 'getDao' (singular) or other sibling tools. It lacks context about use cases, prerequisites, or exclusions, leaving the agent to infer usage from tool names alone.

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

getProposalC

Get a specific proposal by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
proposalIdYesThe ID of the proposal to retrieve

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 the action ('Get') but doesn't clarify if this is a read-only operation, what permissions are required, how errors are handled (e.g., invalid ID), or the response format. This leaves critical behavioral traits unspecified for a retrieval tool.

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

Conciseness5/5

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

The description is a single, direct sentence with zero waste—'Get a specific proposal by ID'—making it highly concise and front-loaded. Every word contributes to understanding the tool's core function without unnecessary elaboration.

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 the tool's complexity (simple retrieval) but lack of annotations and output schema, the description is incomplete. It doesn't explain what a 'proposal' entails in this context, potential return values, or error cases. For a tool with no structured output information, more context is needed to ensure proper usage.

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 100%, with the parameter 'proposalId' clearly documented in the schema. The description adds no additional meaning beyond implying retrieval by ID, which is already covered. This meets the baseline score of 3, as the schema adequately handles parameter semantics without extra description needed.

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 verb ('Get') and resource ('a specific proposal by ID'), making the purpose unambiguous. However, it doesn't differentiate from sibling tools like 'getProposals' (plural) or 'getProposalSentiment', which might retrieve multiple proposals or sentiment data respectively, leaving room for confusion about when to use this exact tool.

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 'getProposals' for listing multiple proposals or 'getProposalSentiment' for sentiment data, nor does it specify prerequisites such as needing a valid proposal ID. This lack of context could lead to incorrect tool selection.

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

getProposalsC

Get all proposals for a specific DAO

ParametersJSON Schema
NameRequiredDescriptionDefault
daoIdYesThe ID of the DAO to get proposals for

TDQS

C2.9/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 states the action ('Get all proposals') but does not describe key behaviors such as whether this is a read-only operation, if it requires authentication, how results are returned (e.g., pagination, sorting), or potential rate limits. This leaves significant gaps for an agent to understand the tool's behavior.

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

Conciseness5/5

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

The description is a single, clear sentence with no wasted words. It is front-loaded with the core purpose ('Get all proposals for a specific DAO'), making it efficient and easy to parse.

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 the complexity of a tool that retrieves multiple proposals, the lack of annotations and output schema means the description is incomplete. It does not cover behavioral aspects like response format, error handling, or usage context, which are crucial for an agent to use the tool effectively in a real-world scenario.

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 the 'daoId' parameter clearly documented. The description adds no additional meaning beyond what the schema provides, such as explaining what a DAO ID format looks like or providing examples. Since the schema does the heavy lifting, the baseline score of 3 is appropriate.

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 verb ('Get') and resource ('all proposals for a specific DAO'), making the purpose understandable. However, it does not explicitly differentiate from sibling tools like 'getProposal' (singular) or 'getDaos', which reduces specificity.

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. For example, it does not clarify if this should be used for listing proposals versus retrieving a single proposal with 'getProposal', or when to use it in relation to other DAO-related tools like 'getDao' or 'getDaos'.

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

getProposalSentimentC

Get sentiment analysis for a specific proposal based on Discord and Twitter data

ParametersJSON Schema
NameRequiredDescriptionDefault
proposalIdYesThe ID of the proposal to analyze

TDQS

C2.9/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 mentions the tool performs sentiment analysis using Discord and Twitter data, but doesn't describe key behaviors: what the sentiment output looks like (e.g., scores, categories), whether it's a read-only operation, potential rate limits, data freshness, or error handling. For a tool with no annotations, this leaves significant gaps in understanding its operational traits.

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

Conciseness5/5

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

The description is a single, clear sentence that efficiently conveys the core functionality without unnecessary words. It's front-loaded with the main action and resource, making it easy to parse. Every part of the sentence earns its place by specifying the tool's purpose and data sources.

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 the complexity of sentiment analysis and the lack of annotations and output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., sentiment scores, aggregated metrics, or raw data), how the analysis is performed, or any limitations. For a tool that likely outputs structured sentiment data, this omission makes it hard for an agent to use effectively without additional context.

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 'proposalId' documented as 'The ID of the proposal to analyze.' The description doesn't add any parameter-specific details beyond this, such as format examples or constraints. Since the schema already provides adequate parameter information, the baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract.

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 sentiment analysis for a specific proposal based on Discord and Twitter data.' It specifies the verb ('Get sentiment analysis'), resource ('specific proposal'), and data sources ('Discord and Twitter data'). However, it doesn't explicitly differentiate from sibling tools like 'getProposal' or 'getProposals,' which might also retrieve proposal information but without sentiment analysis.

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, such as needing a valid proposal ID, or contrast it with siblings like 'getProposal' (which might fetch basic proposal details) or 'getProposals' (which might list multiple proposals). There's no explicit when-to-use or when-not-to-use context.

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

sellInFailMarketC

Sell tokens in the fail market for a proposal

ParametersJSON Schema
NameRequiredDescriptionDefault
proposalIdYesThe ID of the proposal to trade in
amountYesAmount to sell
userYesUser's public key

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 full burden but only states the action without behavioral details. It doesn't mention if this is a destructive/mutative operation, requires authentication, has rate limits, or what happens upon execution (e.g., token transfer, market impact).

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

Conciseness5/5

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

The description is a single, efficient sentence with zero waste—it directly states the tool's purpose without unnecessary words or fluff.

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?

For a tool with 3 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain the outcome (e.g., what 'sell' entails, return values, or error conditions), leaving gaps in understanding for an AI agent.

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?

Schema description coverage is 100%, so parameters are well-documented in the schema. The description adds no additional meaning beyond implying 'proposalId' relates to a proposal in the fail market, but this is minimal value over the 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 action ('sell tokens') and the context ('in the fail market for a proposal'), which is specific and actionable. However, it doesn't explicitly differentiate from its sibling 'sellInPassMarket', which would be needed for a perfect 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 like 'sellInPassMarket' or 'buyInFailMarket'. It lacks context about prerequisites, such as needing a proposal in a 'fail' state or having tokens to sell.

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

sellInPassMarketC

Sell tokens in the pass market for a proposal

ParametersJSON Schema
NameRequiredDescriptionDefault
proposalIdYesThe ID of the proposal to trade in
amountYesAmount to sell
userYesUser's public key

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 the tool sells tokens, implying a write/mutation operation, but does not disclose any behavioral traits such as permissions needed, rate limits, side effects, or what happens upon execution. This is a significant gap for a tool that likely involves financial transactions.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded and wastes no space, making it easy to parse quickly.

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 the complexity of a token-selling operation with no annotations and no output schema, the description is insufficient. It lacks details on behavioral traits, usage context, and expected outcomes, leaving critical gaps for an AI agent to understand how to invoke this tool safely and 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 input schema has 100% description coverage, providing clear documentation for all three parameters. The description does not add any additional meaning or context beyond what the schema already specifies, such as explaining the relationship between parameters or usage nuances. This meets the baseline for high schema coverage.

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 action ('sell tokens') and the context ('in the pass market for a proposal'), which is specific and actionable. However, it does not explicitly distinguish this tool from its sibling 'sellInFailMarket', which likely sells tokens in a different market context, leaving some ambiguity in 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, such as 'sellInFailMarket' or 'buyInPassMarket'. It lacks context on prerequisites, conditions, or exclusions, 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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 1 tool updatev1.0.0
    • ChangedgetDaos1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
  2. 10 tool updates
    • First observedbuyInFailMarket
    • First observedbuyInPassMarket
    • First observedcreateProposal
    • First observedgetDao
    • First observedgetDaos
    • First observedgetProposal
    • First observedgetProposals
    • First observedgetProposalSentiment
    • First observedsellInFailMarket
    • First observedsellInPassMarket

TDQS

A3.5/5.0
Disambiguation5/5

Every tool has a clearly distinct purpose with no ambiguity. Tools are clearly separated into DAO operations (getDao, getDaos), proposal operations (createProposal, getProposal, getProposals), market operations (buy/sell in pass/fail markets), and sentiment analysis (getProposalSentiment). The descriptions make it immediately clear which tool to use for each specific action.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern throughout. The naming convention is perfectly uniform with clear action prefixes (buyIn, sellIn, create, get) followed by specific objects (FailMarket, PassMarket, Proposal, Dao, ProposalSentiment). There are no deviations in style or convention across the entire toolset.

Tool Count5/5

With 10 tools, this is well-scoped for a Futarchy system. Each tool earns its place by covering distinct aspects of the domain: DAO management, proposal lifecycle, market trading operations, and sentiment analysis. The count is appropriate for the apparent scope without being overwhelming or insufficient.

Completeness5/5

The tool surface provides complete CRUD/lifecycle coverage for the Futarchy domain. It covers DAO discovery (getDaos, getDao), proposal creation and retrieval (createProposal, getProposal, getProposals), market operations for both pass and fail outcomes (buy/sell), and even sentiment analysis. There are no obvious gaps or dead ends for agents working with this system.

Maintenance

ActivityInactive
ResponsivenessNo issues

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
    D
    maintenance
    A server that allows AI agents to interact with the Tally API to access DAO governance data, proposals, and metadata using Model Context Protocol (MCP), built with TypeScript and GraphQL.
    19
    7
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server enabling AI agents to interact with the Solana blockchain for DeFi operations like checking balances, transferring tokens, executing swaps, and fetching price data.
    29
    22
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that enables AI models to interact with the Solana blockchain, providing RPC methods, wallet management, DeFi trading capabilities, and Helius API integration for enhanced Solana development.
    5
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Solana blockchain interaction server that allows AI tools to query blockchain data using natural language, access structured token information, and generate human-readable explanations of complex blockchain concepts.
    6
    MIT

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/tanmay4l/FutarchyMCPServer'

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