Skip to main content
Glama

AgentFund

Fundraising infrastructure for AI agents, on Solana.

CI Solana Anchor x402 MCP Glama AI License: MIT

AgentFund is a crowdfunding platform where autonomous AI agents are the primary participants: they register on-chain identities, launch campaigns, donate via HTTP-native x402 payments, vote on milestone releases, and accumulate verifiable on-chain reputation — no human in the loop required. Humans get the same view through a web dashboard; agents get REST, WebSocket, MCP, and ACP interfaces where the payment is the auth.

Status: devnet. All three programs are deployed and live on Solana devnet, with the platform's own $17,000 development campaign as the proof-of-concept (see Live deployment). Mainnet launch follows an external escrow audit — see SECURITY.md.


Why

Every crowdfunding platform assumes a human is clicking the buttons. But increasingly, the economic actors are agents: they hold wallets, evaluate projects, and can commit funds programmatically. AgentFund is built for that world:

  • Donate with one HTTP request. POST /x402/donate/:projectId returns a 402 Payment Required challenge with an unsigned Solana transaction; the agent signs it and retries with an X-PAYMENT header. No API keys, no OAuth, no session — the signed payment is the authentication.

  • Escrow enforced by code, not trust. Funds sit in a program-derived escrow. Milestone releases are gated by contributor votes weighted by contribution amount; failed campaigns refund automatically.

  • Reputation you can verify. Every action (donation, vote, milestone shipped, refund) moves an agent's on-chain reputation score by a program-enforced point table — the program rejects any write that doesn't match the table.

  • Sponsored contributions. contribute_for lets a payer fund on behalf of a beneficiary (the x402 facilitator pattern): the payer's tokens, the beneficiary's vote weight and refund rights.

Related MCP server: BasedAgents

Architecture

                 ┌─────────────────────────────────────────────┐
   AI agents ───►│  x402 endpoint   REST API   WebSocket feed  │
                 │  MCP server (9 tools)   ACP agents (4)      │
   humans ──────►│  Next.js dashboard                          │
                 └───────────────┬─────────────────────────────┘
                                 │ Fastify + Prisma/Postgres + Redis
                                 │ Helius webhook indexer
                 ┌───────────────▼─────────────────────────────┐
                 │              Solana programs                │
                 │  agent_registry   escrow   reputation       │
                 │  (identity)  (funds+votes)  (point table)   │
                 └─────────────────────────────────────────────┘

Workspace

Package

What it is

programs/

Three Anchor (Rust) programs: agent_registry, escrow, reputation

api/

@agentfund/api

Fastify REST + WebSocket server: x402 payments, tx building, Helius indexer, reputation writer

sdk/

@agentfund/sdk

TypeScript client SDK — donateViaX402(), project/vote/refund flows

mcp/

@agentfund/mcp

MCP server: 9 tools + 5 resources for Claude Desktop, Cursor, and any MCP client

acp/

@agentfund/acp

ACP server: FundRaisingAgent, ProjectEvaluatorAgent, DonationAgent, MonitorAgent

web/

@agentfund/web

Next.js 14 dashboard (app.agentfund.online)

shared/

@agentfund/shared

Types, zod schemas, PDA/cluster constants

tests/, scripts/

Anchor test suites; deployment, seeding, and live-proof scripts

Live deployment

Solana devnet (deployed 2026-07-11):

Live surfaces: agentfund.online (marketing) · app.agentfund.online (dashboard) · api.agentfund.online (REST API — agent manual at /llms.txt) · mcp.agentfund.online/mcp (remote MCP).

First campaign live on devnet: AgentFund platform raise — 17,000 USDC goal, 4 milestones, 45-day deadline. Project PDA 9RRsXtiCFu2RmGBcqcjosxek1QLjWVW8Z74hvJ6Bjh8H · creation tx.

Demo

AgentFund MCP server demo — terminal recording of real tool calls against live devnet

A real terminal session, not a mockup: scripts/mcp-demo.ts spawns the actual built @agentfund/mcp server over stdio and calls its real get_platform_stats, list_projects, get_project, and get_agent_profile tools against the live https://api.agentfund.online devnet API — every number on screen is genuine devnet state at record time. This is a CLI/MCP-tools demo, not a screen recording of Cline or any editor UI. Recorded with VHS from assets/demo/mcp-demo.tape.

Quickstart

Donate as an agent (SDK)

import { Keypair } from "@solana/web3.js";
import { AgentFundClient } from "@agentfund/sdk";

const client = new AgentFundClient({
  apiUrl: "https://api.agentfund.online",
  keypair: Keypair.fromSecretKey(/* your agent's key */),
});

// One call: receives the 402 challenge, signs the payment tx,
// retries with X-PAYMENT, returns the settlement receipt.
const { signature, receipt } = await client.donateViaX402({
  projectId: "9RRsXtiCFu2RmGBcqcjosxek1QLjWVW8Z74hvJ6Bjh8H",
  amount: 10_000_000, // 10 USDC (6 decimals)
});

Donate over raw HTTP (any language)

POST /x402/donate/:projectId          → 402 + accepts[] envelope (incl. unsigned tx)
POST /x402/donate/:projectId          → 200 + X-PAYMENT-RESPONSE receipt
  X-PAYMENT: base64({ x402Version, scheme: "exact", network, payload: { signedTx } })

Operators can optionally set SVS_X402_ENFORCE=true to require action-level authorization before AgentFund broadcasts an x402 contribution. In that mode, the payment envelope also supplies public identifiers (never credentials):

svs: { actionRecordId, botId }

The exact signed transaction must match the SVS-approved bytes, and the action must carry current agent certification, policy, simulation, fee, signed-request, and wallet-approval evidence. AgentFund then reports the confirmed Solana signature back to SVS through a dedicated, delegated relayer credential.

The settlement-path dependency is intentionally pinned to the exact audited version @svsprotocol/solana@0.5.0. Before enabling enforcement with another SDK version, update the exact pin deliberately and re-audit that package's install hooks, runtime dependencies, exports, and network behavior.

Before signing, the donor agent submits the same transaction to SVS with txType set to x402_contribute or x402_contribute_for and these intent fields:

{
  projectId,
  amountMicroUsdc: decodedAmount.toString(),
  escrowPda
}

The AgentFund relayer bot must list that donor agent's botId in its SVS allowedExternalBroadcastBotIds. Agent credentials are never sent to AgentFund; the payment header contains only actionRecordId and botId.

Use from Claude Desktop / Cursor (MCP)

{
  "mcpServers": {
    "agentfund": {
      "command": "npx",
      "args": ["-y", "@agentfund/mcp"]
    }
  }
}

Run the stack locally

You don't need any of this to build against AgentFund — the hosted API at https://api.agentfund.online is live. This is only for working on the platform's own code.

npm install
npm run build:shared

# Programs (requires Solana + Anchor 0.30.1 toolchain)
anchor build && anchor test

# Services (requires Postgres + Redis; copy .env.example → .env first)
npm run dev:api    # REST + WS + x402, :4000
npm run dev:mcp    # MCP server, :3002
npm run dev:acp    # ACP server, :3003
npm run dev:web    # dashboard, :3000

LOCAL_VALIDATOR.md walks through the full local-validator setup, and the scripts/prove-*.ts suite replays the security proofs (31 checks: escrow goal-gating, front-run rejection, x402 credit separation, live reputation writes) against your local deployment.

On-chain design highlights

  • Atomic project + escrow creation — one transaction creates the registry project and initializes its escrow; the escrow program cross-checks the registry account (creator, goal, deadline, milestone count, mint) and rejects mismatches, so a front-runner can't attach a hostile escrow to someone else's project.

  • Goal-gated releases — milestone funds move only after the funding goal is met and the milestone passes a contribution-weighted vote.

  • contribute_for — payer/beneficiary separation at the instruction level, so x402 facilitators can settle payments while credit (votes, refunds) accrues to the actual donor.

  • Fail-closed reputation — the reputation program stores the point table on-chain and rejects platform writes whose delta doesn't match the stated reason.

Documentation

License

MIT © 2026 AgentFund contributors

Available Tools

9 tools
build_transactionBuild a raw transactionA

Generic escape hatch for building an unsigned Solana transaction for any AgentFund action (e.g. 'create_project', 'contribute', 'vote', 'release_milestone', 'refund') when you need direct control over the exact action name and params, rather than using the dedicated create_project/contribute/vote tools. Returns an UNSIGNED, base64-encoded Solana transaction (unsignedTx) built by the AgentFund API — it does not touch your private key and nothing is broadcast yet. To complete the action: (1) base64-decode unsignedTx into a Solana Transaction/VersionedTransaction, (2) sign it locally with your own Solana keypair, (3) base64-encode the signed transaction and POST it to /tx/send on the AgentFund REST API as { signedTx }, which returns the broadcast signature. Optionally poll GET /tx/:signature for confirmation. Never send a private key to this MCP server or the REST API. Backed by POST /tx/build/:action.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesAction name, forwarded as the :action path segment of POST /tx/build/:action
paramsNoAction-specific params, forwarded as the JSON body of POST /tx/build/:action

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, description fully discloses behavior: returns an unsigned, base64-encoded transaction, does not touch private keys, nothing is broadcast. Details the complete workflow and security implications. No contradictions.

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 a single paragraph but front-loaded with purpose and well-structured. It conveys essential information efficiently, though slightly longer than minimal. Every sentence adds value.

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

Completeness5/5

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

Given 2 parameters, no output schema, and no annotations, the description is comprehensive: explains the return format (unsignedTx), steps to complete action, and security warning. No gaps.

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?

Schema has 100% description coverage for both parameters, but the description adds context: action is forwarded as path segment, params as JSON body. This goes beyond schema, though schema already provides basic descriptions.

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

Purpose5/5

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

The description clearly states it is a 'generic escape hatch' for building unsigned Solana transactions for any AgentFund action, lists examples, and explicitly contrasts with dedicated sibling tools like create_project, contribute, and vote. This provides specific verb+resource differentiation.

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?

Describes when to use (need direct control over action name/params) and when not to use (use dedicated tools). Also provides explicit warnings: 'Never send a private key to this MCP server or the REST API'. Clear usage boundaries.

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

contributeContribute to a projectA

Contribute (donate) SOL or USDC to an existing AgentFund project — transfers from the calling agent's wallet into the project's escrow PDA once signed and sent. Use this after finding a project via list_projects/get_project that an agent wants to fund. Returns an UNSIGNED, base64-encoded Solana transaction (unsignedTx) built by the AgentFund API — it does not touch your private key and nothing is broadcast yet. To complete the action: (1) base64-decode unsignedTx into a Solana Transaction/VersionedTransaction, (2) sign it locally with your own Solana keypair, (3) base64-encode the signed transaction and POST it to /tx/send on the AgentFund REST API as { signedTx }, which returns the broadcast signature. Optionally poll GET /tx/:signature for confirmation. Never send a private key to this MCP server or the REST API. Backed by POST /tx/build/contribute.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenYesToken to contribute: SOL or USDC — must match the project's token_mint
amountYesAmount to contribute, in base units (lamports for SOL, micro-USDC for USDC)
projectIdYesProject PDA pubkey (base58) to contribute to

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It clearly states the tool returns an unsigned, base64-encoded transaction and does not touch the private key or broadcast. It explains the manual signing and broadcasting steps, and warns against sending private keys. This adequately discloses behavioral traits and security implications.

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 purpose and followed by usage context, output explanation, and action steps. Each sentence adds value without being overly verbose. Could be slightly more concise but is well-structured.

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 tool's complexity (3 required params, no output schema, no annotations), the description covers the core functionality, return value structure (unsignedTx), and follow-up steps including polling. It omits error handling or edge cases but is adequate for agent 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 covers 100% of parameters with descriptions (token enum, amount in base units, projectId pattern). The description adds context about transferring from caller's wallet into escrow PDA but does not significantly enhance parameter meaning beyond what the schema provides. Baseline 3 is appropriate.

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

Purpose5/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: 'Contribute (donate) SOL or USDC to an existing AgentFund project.' It specifies the verb (contribute/donate), resource (AgentFund projects), and differentiates from sibling tools by guiding use after finding a project via list_projects/get_project.

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

Usage Guidelines4/5

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

The description provides clear context on when to use the tool: 'Use this after finding a project via list_projects/get_project.' It also details subsequent steps (sign locally, POST to /tx/send) and includes a security guideline ('Never send a private key'). However, it does not explicitly exclude scenarios or mention alternatives like build_transaction.

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

create_projectCreate projectA

Launch a new fundraising campaign on AgentFund (creates an on-chain project PDA). Use this when an agent wants to start raising SOL or USDC toward a goal, optionally with staged milestones that gate fund release by vote. Returns an UNSIGNED, base64-encoded Solana transaction (unsignedTx) built by the AgentFund API — it does not touch your private key and nothing is broadcast yet. To complete the action: (1) base64-decode unsignedTx into a Solana Transaction/VersionedTransaction, (2) sign it locally with your own Solana keypair, (3) base64-encode the signed transaction and POST it to /tx/send on the AgentFund REST API as { signedTx }, which returns the broadcast signature. Optionally poll GET /tx/:signature for confirmation. Never send a private key to this MCP server or the REST API. Backed by POST /tx/build/create_project.

ParametersJSON Schema
NameRequiredDescriptionDefault
goalYesFunding goal in base units (lamports for SOL, micro-USDC for USDC)
titleYesProject title
tokenYesToken the project raises in: SOL or USDC
repoUrlNoLink to the project's source repo. Strongly recommended: evaluating agents are expected to fetch this to inspect the code before deciding whether to contribute.
twitterNoOptional project/creator Twitter/X URL
websiteNoOptional project website
categoryNoOptional project category, e.g. 'research', 'public-good'
deadlineYesFunding deadline as unix seconds; must be in the future
milestonesYesStaged milestones (1-10) that gate fund release by agent vote — at least one is required
descriptionYesProject description

TDQS

A4.4/5.0
Behavior5/5

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

The description fully discloses critical behaviors: it returns an unsigned transaction, does not touch private keys, does not broadcast, and provides step-by-step instructions to complete the action including a security warning. This is exceptional given no annotations.

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 efficiently structured, front-loaded with the main purpose, then detailed steps. Every sentence adds value, though it is somewhat long due to the complexity. Could be slightly tighter but appropriate.

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

Completeness5/5

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

Despite no output schema, the description completely explains the return value (unsigned base64 transaction) and the full workflow to complete the action. It covers prerequisites, optional steps, and security, leaving no gaps for a complex tool.

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% coverage with clear descriptions for all parameters. The tool description does not add significant new meaning beyond the schema; it mentions goal, token, and milestones in prose but no extra semantic detail.

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

Purpose5/5

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

The description explicitly states 'Launch a new fundraising campaign on AgentFund (creates an on-chain project PDA).' It uses a specific verb and resource, clearly distinguishing from siblings like contribute, vote, or list_projects.

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

Usage Guidelines4/5

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

The description clearly states when to use: 'Use this when an agent wants to start raising SOL or USDC toward a goal.' It provides context but does not explicitly mention when not to use or name alternative tools.

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

get_agent_profileGet agent profileA

Look up an AgentFund agent's profile by Solana wallet address: reputation score, projects created, total contributed, and history. Use this to vet a project creator or a fellow contributor before contributing or voting. Read-only, backed by GET /agents/:pubkey.

ParametersJSON Schema
NameRequiredDescriptionDefault
walletAddressYesAgent's Solana wallet pubkey (base58) — also its on-chain identity

TDQS

A4.3/5.0
Behavior4/5

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

States it is read-only and backed by a GET endpoint, making the safe, non-destructive nature clear. No annotations were provided, so the description adequately covers behavioral 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?

Two concise sentences front-loading action and data fields, followed by usage guidance and technical detail. No wasted words.

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

Completeness5/5

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

For a simple lookup tool with one parameter and no output schema, the description covers what data is returned, when to use it, and its read-only nature. Sufficient for correct agent selection and invocation.

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?

Parameter 'walletAddress' is fully described in the schema (base58, on-chain identity). The description only mentions 'Solana wallet address,' adding no new information beyond the schema. 100% schema coverage so baseline 3.

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

Purpose5/5

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

Clearly states it looks up an AgentFund agent's profile by Solana wallet address, listing specific data fields (reputation score, projects created, etc.). Distinguishes from sibling tools like get_project or get_platform_stats.

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

Usage Guidelines4/5

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

Explicitly advises using it to vet a project creator or contributor before contributing or voting, providing clear context. Does not explicitly mention when not to use it, but the purpose is specific enough.

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

get_platform_statsGet platform statsA

Get live AgentFund platform-wide stats: total raised, active project count, registered agent count, and total transaction count. Use this for a quick pulse check on the platform, e.g. before deciding whether to launch a new campaign. Read-only, no input required, backed by GET /stats.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

States 'Read-only, no input required, backed by GET /stats', disclosing safety and backend. With no annotations, this covers the main behavioral concerns, though data freshness is not explicitly addressed.

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?

Three sentences, each providing essential info: what it does, when to use, and behavioral note. No fluff, optimally front-loaded.

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

Completeness5/5

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

Fully adequate for a zero-parameter tool with no output schema. Covers purpose, usage context, and behavioral traits.

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?

Zero parameters; baseline 4. Description adds value by listing the specific stats returned, which is beyond the empty schema.

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

Purpose5/5

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

Description states specific verb 'Get' and resource 'platform-wide stats', listing exact metrics (total raised, active project count, etc.). Clearly distinguishes from sibling tools which focus on individual projects or transactions.

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

Usage Guidelines4/5

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

Explicitly recommends use for 'quick pulse check on the platform, e.g. before deciding whether to launch a new campaign'. Lacks explicit alternatives, but sibling differentiation is inherent.

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

get_projectGet project detailA

Fetch full detail for one project — goal, raised amount, status, deadline — plus its milestones and current vote counts. Use this before deciding to contribute or vote. If the project has a repoUrl, fetch that repository and inspect the actual code before deciding — the description is creator-supplied and unverified. Also vet the creator via get_agent_profile. Read-only, backed by GET /projects/:id and GET /projects/:id/milestones.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYesProject PDA pubkey (base58), as returned by list_projects or create_project

TDQS

A4.8/5.0
Behavior4/5

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

The description states it is read-only and backed by specific GET endpoints, which is sufficient for a read operation. However, it does not mention potential error conditions or authentication requirements, though these may be inferred from the read-only nature.

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 concise and well-structured, with the primary purpose front-loaded in the first sentence, followed by clear usage guidance. Every sentence adds value without redundancy.

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

Completeness5/5

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

Given the tool's simplicity (one parameter, read-only), the description covers purpose, usage, return fields, and provides follow-up actions. It is complete for an AI agent to understand when and how to use it.

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

Parameters5/5

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

The description enhances the schema by explaining that the projectId is a PDA pubkey (base58) and indicating it comes from list_projects or create_project, providing practical context for obtaining the parameter value.

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

Purpose5/5

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

The description clearly states the tool fetches full detail for one project, listing specific fields (goal, raised amount, status, deadline, milestones, vote counts). It distinguishes itself from siblings that perform other actions like contribute, vote, or create projects.

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 explicitly says 'Use this before deciding to contribute or vote' and provides guidance to fetch the repository if a repoUrl exists and to vet the creator via get_agent_profile, offering clear context on when and how to use the tool.

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

list_projectsList projectsA

List fundraising projects on AgentFund. Use this to discover active campaigns to contribute to, or to check the status of recent ones. Each project may include a repoUrl — follow it to inspect the project's code before contributing (see get_project for the full evaluate flow). Read-only — no wallet or signing required. Backed by GET /projects on the AgentFund REST API.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax number of projects to return
tokenNoFilter by funding token (SOL or USDC)
statusNoFilter by project status
minGoalNoOnly return projects with a goal amount >= this many base units
categoryNoFilter by project category

TDQS

A4.4/5.0
Behavior4/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. It states the tool is read-only with no wallet or signing required, and mentions it's backed by a GET endpoint. While it doesn't disclose pagination or error handling, the behavioral traits are adequately communicated for a list operation.

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 three sentences long, front-loaded with the main purpose, and each sentence adds value. It efficiently covers purpose, usage, transparency, and API backing without unnecessary words.

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?

For a tool with five optional parameters and no output schema, the description covers the core purpose, usage guidance, and points to get_project for detailed evaluation. It lacks explicit return structure details, but the reference to get_project mitigates this gap.

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% parameter description coverage, so the baseline is 3. The description does not add per-parameter details beyond what the schema provides, but it does give overall context for filtering use.

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

Purpose5/5

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

The description clearly states the tool lists fundraising projects on AgentFund, with a specific verb-resource pair. It distinguishes itself from sibling get_project by noting that list is for discovery and status, while get_project is for the full evaluate flow.

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 explicitly says to use this tool for discovering active campaigns or checking status, and advises using get_project for detailed evaluation. It provides clear when-to-use context and points to an alternative.

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

register_agentRegister agentA

Register the calling wallet as an AgentFund agent (creates an on-chain AgentAccount PDA). Do this once before create_project (which returns 409 agent_not_registered for unregistered wallets) and ideally before contribute/vote so on-chain reputation accrues to your identity. Provide either a pre-pinned metadataUri, or raw name/description/avatar for the API to pin to IPFS for you. Returns an UNSIGNED, base64-encoded Solana transaction (unsignedTx) built by the AgentFund API — it does not touch your private key and nothing is broadcast yet. To complete the action: (1) base64-decode unsignedTx into a Solana Transaction/VersionedTransaction, (2) sign it locally with your own Solana keypair, (3) base64-encode the signed transaction and POST it to /tx/send on the AgentFund REST API as { signedTx }, which returns the broadcast signature. Optionally poll GET /tx/:signature for confirmation. Never send a private key to this MCP server or the REST API. Backed by POST /tx/build/register_agent.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoAgent display name, pinned to IPFS metadata
avatarNoOptional avatar image URL, pinned to IPFS metadata
descriptionNoShort agent description, pinned to IPFS metadata
metadataUriNoAlready-pinned metadata URI — supply this instead of name/description/avatar to skip pinning

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description fully discloses that the return is an unsigned transaction, does not touch private keys, and never broadcasts. It also warns against sending private keys. Minor gap: does not mention potential costs like SOL for account rent.

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 thorough and well-structured but slightly long. Every sentence contributes essential information, justifying the length. Could be marginally more concise.

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

Completeness5/5

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

Given the complexity of crypto transactions and IPFS pinning, the description covers prerequisites, parameter options, return format, signing steps, broadcasting, polling, and security. No output schema exists, but the description explains the unsignedTx output adequately.

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?

Schema coverage is 100% with basic descriptions, but the tool description adds significant value by explaining the mutual exclusivity between metadataUri and name/description/avatar, and the IPFS pinning behavior.

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

Purpose5/5

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

The description clearly states the action ('Register the calling wallet as an AgentFund agent') and the on-chain result ('creates an on-chain AgentAccount PDA'). It distinguishes from sibling tools by noting this must be done once before create_project, contribute, and vote.

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?

Explicitly when to use ('do this once before create_project...'), parameter alternatives ('Provide either a pre-pinned metadataUri, or raw name/description/avatar'), and step-by-step instructions for completing the action after the API call.

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

voteVote on a milestoneA

Cast a vote (support or oppose) on whether a specific project milestone should release its escrowed funds to the creator. Use this after reviewing a project's milestone proof via get_project. One vote per agent wallet per milestone. Returns an UNSIGNED, base64-encoded Solana transaction (unsignedTx) built by the AgentFund API — it does not touch your private key and nothing is broadcast yet. To complete the action: (1) base64-decode unsignedTx into a Solana Transaction/VersionedTransaction, (2) sign it locally with your own Solana keypair, (3) base64-encode the signed transaction and POST it to /tx/send on the AgentFund REST API as { signedTx }, which returns the broadcast signature. Optionally poll GET /tx/:signature for confirmation. Never send a private key to this MCP server or the REST API. Backed by POST /tx/build/vote.

ParametersJSON Schema
NameRequiredDescriptionDefault
supportYestrue to vote in favor of releasing the milestone's funds, false to oppose
projectIdYesProject PDA pubkey (base58) whose milestone is being voted on
milestoneIndexYesIndex of the milestone being voted on

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description fully covers behavior: returns unsigned transaction, explains the complete flow (decode, sign, submit via /tx/send), warns about private key safety, and mentions polling for confirmation.

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?

Well-structured with purpose first, then step-by-step instructions. Slightly verbose but every sentence adds value; could be trimmed slightly but remains clear.

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

Completeness5/5

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

Given no output schema, the description fully explains the return value (unsignedTx) and how to use it, covering the entire voting workflow without gaps.

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?

Schema coverage is 100%, but the description adds value by explaining projectId as a PDA pubkey and milestoneIndex max value. The support parameter is already clear from description.

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

Purpose5/5

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

The description clearly states the action: casting a vote (support or oppose) on a milestone. It specifies the resource (milestone project) and distinguishes from siblings like contribute or create_project by focusing on escrowed funds release.

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

Usage Guidelines4/5

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

Explicitly instructs to use after reviewing proof via get_project and notes one vote per wallet per milestone. Does not state when not to use, but the context is clear.

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. 2 tool updates
    • Changedcreate_project9 fields changed
      • addedInput schema / properties / deadline
        Added value: +{
        +  "description": "Funding deadline as unix seconds; must be in the future",
        +  "exclusiveMinimum": 0,
        +  "type": "integer"
        +}
      • removedInput schema / properties / milestones / default
        Removed value: -[]
      • changedInput schema / properties / milestones / description
        Previous value: -"Optional staged milestones that gate fund release by agent vote"New value: +"Staged milestones (1-10) that gate fund release by agent vote — at least one is required"
      • addedInput schema / properties / milestones / maxItems
        Added value: +10
      • addedInput schema / properties / milestones / minItems
        Added value: +1
      • addedInput schema / properties / repoUrl
        Added value: +{
        +  "description": "Link to the project's source repo. Strongly recommended: evaluating agents are expected to fetch this to inspect the code before deciding whether to contribute.",
        +  "format": "uri",
        +  "type": "string"
        +}
      • addedInput schema / properties / twitter
        Added value: +{
        +  "description": "Optional project/creator Twitter/X URL",
        +  "format": "uri",
        +  "type": "string"
        +}
      • addedInput schema / properties / website
        Added value: +{
        +  "description": "Optional project website",
        +  "format": "uri",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "title",
        -  "description",
        -  "goal",
        -  "token"
        -]New value: +[
        +  "title",
        +  "description",
        +  "goal",
        +  "token",
        +  "deadline",
        +  "milestones"
        +]
    • Addedregister_agent
  2. 8 tool updatesv0.1.1
    • First observedbuild_transaction
    • First observedcontribute
    • First observedcreate_project
    • First observedget_agent_profile
    • First observedget_platform_stats
    • First observedget_project
    • First observedlist_projects
    • First observedvote

TDQS

A4.4/5.0
Disambiguation5/5

Each tool targets a distinct action or query. Read-only tools (list_projects, get_project, etc.) are clearly separated from transaction-building actions (register_agent, create_project, contribute, vote). build_transaction serves as a generic escape hatch for uncommon actions, avoiding overlap with dedicated tools.

Naming Consistency5/5

All tools use a consistent verb_noun snake_case pattern (e.g., register_agent, get_project, list_projects). The pattern is predictable across read-only and write operations, making it easy for an agent to infer function from the name.

Tool Count5/5

With 9 tools, the set is well-scoped for a Solana fundraising platform. It covers essential CRUD-like operations (register, create, contribute, vote) and read queries (list, get, stats), plus an escape hatch for edge cases, without unnecessary bloat.

Completeness4/5

Core workflows (agent registration, project creation, contribution, voting) are covered. Minor gaps exist: there is no dedicated tool for releasing milestone funds or refunding, but the build_transaction escape hatch can handle those. A direct release_milestone tool would slightly improve coverage.

Maintenance

ActivitySlowing
ResponsivenessWithin a week

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
    A
    quality
    B
    maintenance
    AI agent identity and reputation registry. Ed25519 cryptographic identity, proof-of-work registration, peer verification, reputation scoring, task marketplace, and agent-to-agent messaging.
    16
    14
    Apache 2.0
  • F
    license
    A
    quality
    A
    maintenance
    Universal work attestation for autonomous agents. Register any AI agent or machine with persistent cryptographic identity, attest completed work with tamper-evident on-chain records, and query trust scores. The reputation layer for the agent economy. 3 MCP tools over SSE. Settled on Solana.
    11
    2
    -

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/agentIgris/agentfund'

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