Skip to main content
Glama
5ajaki

Safe MCP Server

by 5ajaki

Safe MCP Server

An MCP (Model Context Protocol) server implementation for interacting with Safe (formerly Gnosis Safe) smart contract wallets.

Features

  • Query Safe transactions for any Safe address

  • Get multisig transaction details

  • Decode transaction data

  • Safe API integration

Related MCP server: Hermes Blockchain Oracle

Installation

npm install

Usage

npm run build
npm start

No configuration is required - the server uses the Safe Transaction API mainnet endpoint by default.

Available Tools

getSafeTransactions

Get all transactions for any Safe address. The Safe address is determined by the LLM at runtime based on the context of the conversation.

// Example tool call
getSafeTransactions({
  address: "0x123...", // Safe address determined by LLM
  limit: 100, // optional
  offset: 0, // optional
});

getMultisigTransaction

Get details of a specific multisig transaction.

getMultisigTransaction({
  safeTxHash: "0x456...", // Transaction hash to query
});

decodeTransactionData

Decode transaction data using Safe API.

decodeTransactionData({
  data: "0x789...", // Transaction data to decode
  to: "0xabc...", // Optional contract address
});

Configuration (Optional)

By default, the server uses the Safe Transaction API mainnet endpoint:

https://safe-transaction-mainnet.safe.global/api/v1

If you need to use a different endpoint (e.g., for testnet), you can set it via environment variable:

SAFE_API_URL=https://safe-transaction-goerli.safe.global/api/v1 npm start

Development

npm run dev

License

MIT

Available Tools

3 tools
decodeTransactionDataC

Decode transaction data using Safe API

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesTransaction data in hex format
toNoOptional contract address

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 ('decode') but doesn't describe what the tool returns, error conditions, rate limits, or authentication needs. This is a significant gap for a tool that likely processes sensitive transaction data.

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 appropriately sized for a simple tool and front-loads the core purpose 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 no annotations and no output schema, the description is incomplete. It doesn't explain what the decoded output looks like, potential errors, or how it integrates with the Safe API context. For a data processing tool, this leaves critical gaps for an 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 the schema already documents both parameters ('data' as hex format, 'to' as optional contract address). The description adds no additional parameter semantics beyond what the schema provides, meeting the baseline for high 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 ('decode') and resource ('transaction data'), and specifies the method ('using Safe API'), which provides a specific technical context. However, it doesn't explicitly differentiate from sibling tools like 'getMultisigTransaction' or 'getSafeTransactions', which appear to retrieve rather than decode data.

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, typical use cases, or how it differs from sibling tools like 'getMultisigTransaction' or 'getSafeTransactions', leaving the agent to infer usage context.

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

getMultisigTransactionC

Get details of a specific multisig transaction

ParametersJSON Schema
NameRequiredDescriptionDefault
safeTxHashYesSafe transaction hash

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 'Get details' implies a read-only operation, it doesn't explicitly confirm this or describe what details are returned, error conditions, or any rate limits. For a tool with zero annotation coverage, this leaves significant behavioral gaps.

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 with zero wasted words. It's appropriately sized for a simple lookup tool and front-loads 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?

Given the lack of annotations and output schema, the description is incomplete for a tool that retrieves transaction details. It doesn't explain what details are returned, potential error cases, or how this differs from sibling tools. For a tool with no structured behavioral or output information, the description should provide more 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 schema description coverage is 100%, with the single parameter 'safeTxHash' clearly documented in the schema. The description doesn't add any meaning beyond what the schema provides (e.g., it doesn't explain hash format or where to obtain it). With high schema coverage, 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 action ('Get details') and target resource ('specific multisig transaction'), making the purpose immediately understandable. However, it doesn't differentiate this tool from its sibling 'getSafeTransactions' (which likely retrieves multiple transactions), missing the opportunity to clarify this is for retrieving a single transaction by hash.

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 the sibling tools 'decodeTransactionData' or 'getSafeTransactions', nor does it specify prerequisites like needing a transaction hash. The agent must infer usage context from the tool name and parameter alone.

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

getSafeTransactionsC

Get all transactions for a Safe address

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesSafe address
limitNoNumber of transactions to return
offsetNoOffset for pagination

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 it 'Get all transactions' but doesn't clarify aspects like whether this is a read-only operation, potential rate limits, authentication needs, or what 'all' entails (e.g., historical vs. recent). This leaves significant gaps in understanding the tool's behavior beyond basic functionality.

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, making it easy to parse and front-loaded with the core action. It efficiently communicates the basic purpose 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 has no annotations, no output schema, and 3 parameters, the description is incomplete. It doesn't address behavioral traits, return values, or usage context, leaving the agent with insufficient information to fully understand how to invoke and interpret results from this 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?

Schema description coverage is 100%, so the input schema already documents parameters like 'address', 'limit', and 'offset' with their types and descriptions. The description adds no additional meaning beyond implying retrieval for a Safe address, which aligns with the schema but doesn't provide extra context such as format examples or constraints.

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 transactions for a Safe address'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'getMultisigTransaction' which might also retrieve transactions, leaving room for confusion about scope or type differences.

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 such as 'getMultisigTransaction' or 'decodeTransactionData'. The description lacks context about prerequisites, exclusions, or specific use cases, 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.

TDQS

B3.1/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: decodeTransactionData handles data decoding, getMultisigTransaction retrieves a specific transaction, and getSafeTransactions lists all transactions for a Safe. There is no overlap in functionality, making tool selection straightforward.

Naming Consistency4/5

The naming follows a consistent verb_noun pattern with camelCase (e.g., decodeTransactionData, getMultisigTransaction). However, the verb 'get' is used for two tools while 'decode' is used for one, which is a minor deviation from perfect uniformity.

Tool Count3/5

With only 3 tools, the set feels thin for a Safe MCP server, as it lacks operations like creating or executing transactions, which are core to multisig workflows. The count is borderline for the apparent scope of Safe management.

Completeness2/5

The tool surface is significantly incomplete for Safe management, missing essential CRUD operations such as creating, proposing, or executing transactions. This will likely cause agent failures when trying to perform full lifecycle actions on Safes.

Maintenance

ActivityInactive
ResponsivenessSyncing

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

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/5ajaki/safe-mcp-server'

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