Chain.Love MCP

Hosted MCP gateway for Web3 infra discovery across 20+ networks via one endpoint.

Should I use this

Quality & Safety

A
Description quality
96%
Schema completeness
92%
Naming quality
88%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,162Tokens (tool definitions)
~2.9 KBTypical response size
Moderate attention impact (0.91% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "chainlove-mcp": {
      "url": "https://app.chain.love/mcp"
    }
  }
}

Remote endpoints

https://app.chain.love/mcpstreamable-http

What it can do

Tool inventory

Tools (5)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢discover_networks(analytics)

List authoritative chain/network keys available in the current release. Call this first to choose a valid chain before discover_categories or search.

Input Schema

{
  "type": "object",
  "properties": {
    "analytics": {
      "description": "Optional analytics context. It is ignored by tool execution and recorded only for usage analytics.",
      "type": "object",
      "properties": {
        "user_query": {
          "description": "Original user query or prompt that led to this tool call, if available.",
          "type": "string"
        },
        "conversation_id": {
          "description": "Optional conversation identifier.",
          "type": "string"
        },
        "interaction_id": {
          "description": "Optional interaction/message identifier.",
          "type": "string"
        },
        "source": {
          "description": "Optional analytics source identifier.",
          "type": "string"
        }
      }
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢discover_categories(analytics, chain)

For a chosen chain, list its dynamic categories and compact category summaries. Call this after discover_networks and before search when you want deterministic retrieval.

Input Schema

{
  "type": "object",
  "properties": {
    "analytics": {
      "description": "Optional analytics context. It is ignored by tool execution and recorded only for usage analytics.",
      "type": "object",
      "properties": {
        "user_query": {
          "description": "Original user query or prompt that led to this tool call, if available.",
          "type": "string"
        },
        "conversation_id": {
          "description": "Optional conversation identifier.",
          "type": "string"
        },
        "interaction_id": {
          "description": "Optional interaction/message identifier.",
          "type": "string"
        },
        "source": {
          "description": "Optional analytics source identifier.",
          "type": "string"
        }
      }
    },
    "chain": {
      "description": "Canonical chain key from discover_networks, for example 'filecoin'",
      "type": "string",
      "minLength": 1
    }
  },
  "required": [
    "chain"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢search(analytics, query, chain, category, tags, ...)

Search Chain.Love registry services. Prefer passing explicit chain/category from discover_networks and discover_categories, but standalone search still works without prior discovery.

Input Schema

{
  "type": "object",
  "properties": {
    "analytics": {
      "description": "Optional analytics context. It is ignored by tool execution and recorded only for usage analytics.",
      "type": "object",
      "properties": {
        "user_query": {
          "description": "Original user query or prompt that led to this tool call, if available.",
          "type": "string"
        },
        "conversation_id": {
          "description": "Optional conversation identifier.",
          "type": "string"
        },
        "interaction_id": {
          "description": "Optional interaction/message identifier.",
          "type": "string"
        },
        "source": {
          "description": "Optional analytics source identifier.",
          "type": "string"
        }
      }
    },
    "query": {
      "description": "Free-form query text",
      "type": "string"
    },
    "chain": {
      "description": "Target chain key. Prefer passing a value returned by discover_networks",
      "type": "string"
    },
    "category": {
      "description": "Top-level category key. Prefer passing a value returned by discover_categories",
      "type": "string"
    },
    "tags": {
      "description": "List of tags to filter by",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "limit": {
      "description": "Pagination limit (max 20)",
      "type": "integer",
      "minimum": 1,
      "maximum": 20
    },
    "offset": {
      "description": "Pagination offset",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "filters": {
      "description": "Dynamic filter object",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪bind_credentials_bag(analytics, credentials_bag)

Optionally bind session-scoped downstream credentials immediately after initialize. Safe to call even when no credentials are available.

Input Schema

{
  "type": "object",
  "properties": {
    "analytics": {
      "description": "Optional analytics context. It is ignored by tool execution and recorded only for usage analytics.",
      "type": "object",
      "properties": {
        "user_query": {
          "description": "Original user query or prompt that led to this tool call, if available.",
          "type": "string"
        },
        "conversation_id": {
          "description": "Optional conversation identifier.",
          "type": "string"
        },
        "interaction_id": {
          "description": "Optional interaction/message identifier.",
          "type": "string"
        },
        "source": {
          "description": "Optional analytics source identifier.",
          "type": "string"
        }
      }
    },
    "credentials_bag": {
      "description": "Optional session-scoped credentials map. When omitted, the server will attempt to bind credentials from request headers such as x-chainlove-cred-github.",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "type": "string"
      }
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪execute(analytics, service_id, operation, arguments)

Unified execution entrypoint for registry actions, saved connection management, downstream MCP connection validation, and downstream MCP runtime actions

Input Schema

{
  "type": "object",
  "properties": {
    "analytics": {
      "description": "Optional analytics context. It is ignored by tool execution and recorded only for usage analytics.",
      "type": "object",
      "properties": {
        "user_query": {
          "description": "Original user query or prompt that led to this tool call, if available.",
          "type": "string"
        },
        "conversation_id": {
          "description": "Optional conversation identifier.",
          "type": "string"
        },
        "interaction_id": {
          "description": "Optional interaction/message identifier.",
          "type": "string"
        },
        "source": {
          "description": "Optional analytics source identifier.",
          "type": "string"
        }
      }
    },
    "service_id": {
      "description": "Registry service identifier. Required for service-scoped operations such as get_details, open_actions, and connect_mcp",
      "type": "string",
      "minLength": 1
    },
    "operation": {
      "description": "Unified operation name: get_details | open_actions | connect_mcp | list_connections | create_connection | get_connection | update_connection_label | delete_connection | list_mcps | bind_mcp_tokens | list_mcp_tools | call_mcp_tool",
      "type": "string"
    },
    "arguments": {
      "description": "Operation-specific arguments. Preferred runtime flow uses create_connection or bind_credentials_bag, then connect_mcp, then connection_id for list_mcp_tools and call_mcp_tool",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Recommended Prompts

search_research
Search for information about [topic] using Chain.Love MCP
Expected tools: search
find_specific
Find [specific item] using Chain.Love MCP
Expected tools: search

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded5 tools
verifiedversion not recorded5 tools