Community Ecosystem Development

orquestra-mcp-tools

Complete reference for all 8 Orquestra MCP tools — parameters, return shapes, and usage examples. Use when calling any Orquestra MCP tool directly, debugging tool responses, or understanding what inputs each tool requires. Triggers: "orquestra tool", "search_programs", "list_instructions", "build_instruction", "list_pda_accounts", "derive_pda", "read_llms_txt", "get_ai_analysis", "simulate_instruction", "mcp tool params", "what does this tool return", "tool not working", "tool input schema", "orquestra api tool".

Ecosystem skill — independently developed and maintained by Orquestra, not the Solana Foundation. No security review is performed; evaluate before use.

One command for Claude Code, Cursor, Codex, Windsurf and other agents — installs from the upstream repo (current HEAD; it ships 8 skills — pick orquestra-mcp-tools when prompted).

$npx skills add berkayoztunc/orquestra

Skill contents

Orquestra MCP — Tool Reference

MCP server: https://api.orquestra.dev/mcp

All tools accept and return JSON. projectId is the Orquestra internal ID returned by search_programs (NOT the Solana program address).


1. search_programs

Find Solana programs by name, keyword, or on-chain program ID.

Inputs

FieldTypeRequiredDescription
querystringProgram name, keyword, or base58 program address
limitnumberMax results (default: 10)

Example

search_programs({ query: "marinade" })
search_programs({ query: "JUP4Fb2cqiRUcaTHdrPC8h2gNsA2ETXiPDD33WcGuJB" })

Returns — list of matches, each with:

  • id — Orquestra projectId (use this in all other tools)
  • name — program name
  • program_id — on-chain Solana address
  • description — protocol summary

2. list_instructions

List all instructions a program exposes — names, arguments, and required accounts.

Inputs

FieldTypeRequiredDescription
projectIdstringOrquestra project ID from search_programs

Returns — Markdown table per instruction:

  • Instruction name
  • Args: name, type
  • Accounts: name, writable flag, signer flag

3. build_instruction

Build an unsigned Solana transaction. Returns base64-encoded wire transaction.

Inputs

FieldTypeRequiredDescription
projectIdstringOrquestra project ID
instructionNamestringExact instruction name (case-sensitive)
accountsobjectMap of accountName → base58 pubkey
argsobjectMap of argName → value (types must match IDL)
feePayerstringBase58 pubkey of fee payer wallet
networkstring"mainnet-beta" (default) | "devnet"

Returns

  • transaction — base64-encoded unsigned wire transaction
  • riskLevel"LOW" | "MEDIUM" | "HIGH"
  • riskReasons — string[] explaining the risk
  • estimatedFee — lamports
  • accounts — resolved account list with pubkeys + flags

Errors

  • Missing required account → error names the exact missing field
  • Wrong arg type → error names field + expected type
  • Program not found → use search_programs first

4. simulate_instruction

Preflight a transaction against the Solana RPC. Decodes Anchor errors. Never signs.

Inputs — same as build_instruction (projectId, instructionName, accounts, args, feePayer, network)

Returns

  • success — boolean
  • computeUnitsConsumed — number
  • decodedError{ name, code, msg } if Anchor error found
  • logs — last RPC log lines
  • err — raw RPC error on failure

When to use: always run between build_instruction and signing. Catches wrong accounts, missing seeds, and logic errors before touching the wallet.


5. list_pda_accounts

List all PDA-derivable account types for a program and their seed schemas.

Inputs

FieldTypeRequiredDescription
projectIdstringOrquestra project ID

Returns — per PDA account:

  • Account type name
  • Seeds: name, kind (const | account | arg), type

6. derive_pda

Derive the address of a PDA from its seeds.

Inputs

FieldTypeRequiredDescription
projectIdstringOrquestra project ID
accountTypestringAccount type name from list_pda_accounts
seedsobjectMap of seedName → value (pubkey strings, numbers, etc.)
networkstring"mainnet-beta" | "devnet"

Returns

  • address — derived base58 PDA address
  • bump — canonical bump seed (0–255)

7. read_llms_txt

Fetch the full AI-optimized Markdown documentation for a program.

Inputs

FieldTypeRequiredDescription
projectIdstringOrquestra project ID

Returns — full Markdown document structured for LLM context windows:

  • Instruction tables (name, args, accounts)
  • Account type descriptions
  • Error code reference

Use this to ground any AI with accurate program context before building transactions.


8. get_ai_analysis

Fetch Orquestra’s AI-generated analysis of a Solana program.

Inputs

FieldTypeRequiredDescription
projectIdstringOrquestra project ID

Returns

  • Protocol description
  • Category tags
  • Risk notes
  • Usage statistics (if available)

Common Mistakes

MistakeFix
Passing Solana program address as projectIdUse search_programs first — projectId ≠ program address
Guessing instruction nameUse list_instructions — names are case-sensitive
Missing account in build_instructionUse list_pda_accounts + derive_pda to resolve
simulate_instruction fails with Anchor errorRead decodedError.msg — it names the exact constraint violation
Wrong arg type (e.g. string instead of u64)Check IDL type from list_instructions