# How to integrate Candid MCP with Hermes

```json
{
  "title": "How to integrate Candid MCP with Hermes",
  "toolkit": "Candid MCP",
  "toolkit_slug": "candid_mcp",
  "framework": "Hermes",
  "framework_slug": "hermes-agent",
  "url": "https://composio.dev/toolkits/candid_mcp/framework/hermes-agent",
  "markdown_url": "https://composio.dev/toolkits/candid_mcp/framework/hermes-agent.md",
  "updated_at": "2026-09-03T05:33:17.681Z"
}
```

## Introduction

Hermes is a 24/7 autonomous agent that lives on your computer or server — it remembers what it learns and evolves as your usage grows.
This guide explains the easiest and most robust way to connect your Candid account to Hermes. You can do this through either Composio Connect CLI or Composio Connect MCP. For personal use we recommend the CLI, but you won't go wrong with MCP either.

## Also integrate Candid MCP with

- [ChatGPT Work](https://composio.dev/toolkits/candid_mcp/framework/chatgpt)
- [Claude Cowork](https://composio.dev/toolkits/candid_mcp/framework/claude-cowork)

## TL;DR

### What is Composio Connect?
Composio Connect is a consumer offering that lets anyone plug 1,000+ applications directly into their agent harness — including Hermes. It can:
- Search and load tools from relevant toolkits on-demand, reducing context usage.
- Chain multiple tools to accomplish complex workflows via a remote workbench, without excessive back-and-forth with the LLM.
- Manage app authentication end-to-end with zero manual overhead.

## Connect Candid MCP to Hermes

### Integrating Candid with Hermes
### Using Composio Connect CLI
1. Install the Composio CLI
Run the install script directly, or paste https://composio.dev/hermes into your Hermes chat box to have it installed for you.

```bash
curl -fsSL https://composio.dev/install | bash
```

## What is the Candid MCP server, and what's possible with it?

The Candid MCP server is an implementation of the Model Context Protocol that connects your AI agent and assistants like Claude, Cursor, etc directly to your Candid account. It provides structured and secure access so your agent can perform Candid operations on your behalf.

## Supported Tools

| Tool slug | Name | Description |
|---|---|---|
| `CANDID_MCP_CURRENT_DATE` | Current date | Get the current day to reference for any time-sensitive data requests. ALWAYS call this tool: * At the beginning of conversations involving dates or timelines * Before searching news or time-sensitive data * When interpreting or presenting any temporal information (recent, upcoming, last year, etc.) * Before making statements about when events occurred or will occur Never assume the correct date. If data only includes partial date information, use this tool to infer missing details. Returns ------- date Today's date |
| `CANDID_MCP_IDENTIFY_LOCATIONS` | Identify locations | Uses natural language processing to find and match named geographies found in the supplied text. The output will supply identified geographies from [Geonames](https://www.geonames.org/). These geographies can be used for other Candid tools like organization search to get more specific results. Key Usage Requirements: - This tools is most effective when the input text is a full sentence or more and grammatically correct - It uses a NLP model to resolve geographic names and then matches them using graph inferencing Parameters ---------- text : str Text describing working in the social sector. This should be related to the social and/or philanthropic sector. Examples -------- >>> geo_detect(text='Homeless shelters in new york city') Returns ------- list[GeocodingRecord] Matched geographies responses. This is an array of data objects which contain the `name` of the geography as it appeared in the supplied text, and the best match to a Geonames geography. For many Candid knowledge tools the `geonames_id` value will be most useful. |
| `CANDID_MCP_IDENTIFY_MENTIONED_ORGANIZATIONS` | Identify mentioned organizations | Resolve and link organization names to official Candid nonprofit profiles. Use after any response that mentions nonprofit or foundation names to generate clickable profile links. This uses the Candid Search in a lookup mode, and then finds the best result(s) using a heuristic string similarity search. This tool is focused on getting links to the organization's Candid profile for the user to click and explore in more detail. Use the URLs here to replace organization names in the chat response with links to the organization's profile. Links to Candid profiles **MUST** be used to do the following: 1. Generate direct links to Candid organization profiles 2. Provide a mechanism for users to easily access detailed organizational information 3. Enhance responses with authoritative source links Key Usage Requirements: - This tool should be used after a knowledge resources result if organization names are mentioned - This tool should be used after a web search if organization names are mentioned - This tool should not be used after any Candid tool which returns a `profile_link` URL field - Always incorporate returned profile URLs directly into the response text - Replace organization name mentions with hyperlinked Candid profile URLs - Prioritize creating a seamless user experience by making URLs contextually relevant Example Desired Output: Instead of: 'The Gates Foundation does impressive work.' Use: 'The [Gates Foundation](https://app.candid.org/profile/XXXXX) does impressive work.' Failure to integrate the URLs into the response is considered an incomplete implementation. Examples -------- >>> identify_mentioned_organizations(organizations=['Gates Foundation', 'Candid']) Parameters ---------- organizations : list[str] A list of organization name strings found in a chat response message which need to be matches Returns ------- dict[str, OrganizationRecord] mapping input name --> Candid Search organization record of the best potential match, including the profile URL |
| `CANDID_MCP_KNOWLEDGE_RESOURCES` | Knowledge resources | Get answers to questions about the social and philanthropic sector directly fom Candid's subject matter experts. This knowledge includes help articles and video training sessions from Candid's subject matter experts, blog posts about the sector from Candid staff and trusted partner authors, research documents about the sector and news articles curated about activity happening in the sector around the world. Searches are performed through a combination of vector and keyword searching. Results are then re-ranked against the original query to get the best results. Search results often come back with specific organizations named, especially if referencing the news. In these cases the organizations should be identified in Candid's data and links to their profiles **MUST** be included in final chat response to the user. Key Usage Requirements: - Identify names of nonprofits and foundations in the returned text using `identify_mentioned_organizations` - Always incorporate returned profile URLs directly into the response text - Replace organization name mentions with hyperlinked Candid profile URLs - Prioritize creating a seamless user experience by making URLs contextually relevant Parameters ---------- query : str Text describing a user's question or a description of investigative work which requires support from Candid's knowledge base sources : list[SourceNames] One or more sources of knowledge from different areas at Candid. * Candid Blog: Blog posts from Candid staff and trusted partners intended to help those in the sector or illuminate ongoing work * Candid Help: Candid FAQs to help user's get started with Candid's product platform and learning resources * Candid Learning: Training documents from Candid's subject matter experts * Candid News: News articles and press releases about real-time activity in the philanthropic sector * IssueLab Research Reports: Academic research reports about the social/philanthropic sector * YouTube Training: Transcripts from video-based training seminars from Candid's subject matter experts news_days_ago : int, optional How many days in the past to search for news articles, if a user is asking for recent trends then this value should be set lower >~ 10, by default 60 If output is a string then that means there was some error, and retry should be considered Returns ------- list[KnowledgeArticle] |
| `CANDID_MCP_SEARCH_ORGANIZATIONS` | Search organizations | Find nonprofits and grantmaking organizations in Candid's database by name, mission, EIN, location, or type of work. Use to look up a specific organization, find peer organizations, or discover organizations working on a topic. Search for organizations by name, description or work, program descriptions and locations. Here are some guidelines: * `query` controls hybrid searching involving both vector search and keyword search * `query` can be used to find organizations based on a description of work * if the query is intended to be a lookup of an organization by name, then adding quotes around the `query` string circumvents vector search, and prioritizes keyword matching on names (eg. `query=Candid` --> `query='Candid'`) * if the query is an EIN (eg. 12-3456789) then keyword searching is prioritized to get exact matches * adding location information such as postal codes and/or admin1 (state/province abbreviations) will filter results * adding subject or population codes will filter results * these results are not comprehensive and are limited to a small set size, several invocations may be necessary to explore This tool should be used as a first step in any downstream task which requires identifying the nonprofit that the user is identifying with. Often, the `nonprofit_id` is required, and that can be found via a search. Subjects and populations can be determined using the `autocode` tool using unstructured text describing the user's intended search. Codes strictly filter results, and aren't necessary for general retrieval queries, but may be used when the user is drilling down on data. Geographies can be determined using the geo detection tool using unstructured text describing the user's intended search. Geographies strictly filter results, and aren't necessary for general retrieval queries, but may be used when the user is drilling down on data. Key Usage Requirements: - Always incorporate returned profile URLs directly into the response text - Replace funding organization name mentions with hyperlinked Candid profile URLs - Prioritize creating a seamless user experience by making URLs contextually relevant - Use relevant recipient data as well as inferred metadata to provide explanations about recommendation relevance Parameters ---------- query : str Free text query which drives the search functionality. This uses a hybrid approach of vector and keyword searching, but under certain conditions expressed in the 'guidelines' this may disable vector search. located_postal_code : str \| None, optional Postal code of the organization to be searched, if provided, by default None located_admin1 : str \| None, optional Admin1 code (state/province abbreviation) of the organization to be searched, if provided, by default None subject_codes : str \| None, optional Subject codes from Candid's PCS taxonomy, comma separated, by default None populations_served_codes : str \| None, optional Population groups served codes from Candid's PCS taxonomy, comma separated, by default None geonameids_of_geographies_served : str \| None, optional Geonames ID values for geographies served by organizations in search results, comma separted, by default None geonameids_of_organization_location : str \| None, optional Geonames ID values for location(s) of the organizations in search results, comma separted, by default None org_seal_status : str \| None, optional Comma separated seals of transparency the resulting organizations should have where the values can be: * PLATINUM * GOLD * SILVER * BRONZE * NOSEAL "PLATINUM" is the most transparent, "NOSEAL" means the organization has claimed their Candid profile but abandoned the data update process for whatever reason. None puts no restrictions on this, by default None leader_demographics : str \| None, optional Comma separated demographic categories for the result organization's leader where values can be: * Woman leader or co-leader * BIPOC leader or co-leader * LGBTQ+ leader or co-leader * Leader or co-leader with a disability None puts no restrictions on this, by default None Examples -------- >>> organization_search(query='Homeless shelters in new york city') >>> organization_search( query='Homeless shelters in new york city, located_admin1='NY', geonameids_of_geographies_served='5128581' ) >>> organization_search( query='Homeless shelters in new york city, subject_codes='SS090200,SS070102', populations_served_codes='PG030100', geonameids_of_geographies_served='5128581' ) Returns ------- list[OrganizationRecord] List of the top organization search results |
| `CANDID_MCP_TAXONOMY_TERMS` | Taxonomy terms | Uses natural language processing to align input text to Candid's taxonomy, the Philanthropy Classification System (PCS). The taxonomy describes activity in the social and philanthropic sectors including the purpose of the activity and what population groups the activity serves. These taxonomy codes can be used for other Candid tools like organization search to get more specific results. A complete description of the taxonomy is available to the public at https://taxonomy.candid.org. Parameters ---------- text : str Text describing working in the social sector. This should be related to the social and/or philanthropic sector. Examples -------- >>> autocode(text='Housing assistance programs for homeless veterans') Returns ------- list[AutocodingRecord] Taxonomy responses. The items in the list are each taxonomy terms which the NLP model has determined is relevant given the input text. This also includes confidence scores. |

## Supported Triggers

None listed.

## Creating MCP Server - Stand-alone vs Composio SDK

The Candid MCP server provides comprehensive access to Candid operations through Composio. Once connected, Hermes can perform all major Candid actions on your behalf using natural language commands.

## Complete Code

None listed.

## Conclusion

### Way Forward
With Candid connected, Hermes can now act on your behalf whenever it detects a relevant task or you ask it to.
From here, you can extend Hermes further:
- Connect more apps: Calendar, Slack, Notion, Linear, and hundreds of others are available through the same Composio Connect setup. Each new integration compounds what Hermes can do for you.
- Build workflows across tools: Once multiple apps are connected, Hermes can chain actions together — turn an email into a calendar invite, a Slack message into a Linear ticket, or a meeting note into a follow-up draft.
- Let it learn your patterns: The more you use Hermes, the better it gets at anticipating how you'd handle recurring tasks. Give it feedback on drafts and decisions, and it will adapt.
If you run into trouble or want to share what you've built, join the [community](https://discord.com/invite/composio) or check out the [Docs](https://docs.composio.dev?utm_source=toolkits&utm_medium=framework_template&utm_campaign=hermes&utm_content=docs) for deeper configuration options.

## How to build Candid MCP Agent with another framework

- [ChatGPT Work](https://composio.dev/toolkits/candid_mcp/framework/chatgpt)
- [Claude Cowork](https://composio.dev/toolkits/candid_mcp/framework/claude-cowork)

## Related Toolkits

- [Excel](https://composio.dev/toolkits/excel) - Microsoft Excel is a robust spreadsheet application for organizing, analyzing, and visualizing data. It's the go-to tool for calculations, reporting, and flexible data management.
- [21risk](https://composio.dev/toolkits/_21risk) - 21RISK is a web app built for easy checklist, audit, and compliance management. It streamlines risk processes so teams can focus on what matters.
- [Abstract](https://composio.dev/toolkits/abstract) - Abstract provides a suite of APIs for automating data validation and enrichment tasks. It helps developers streamline workflows and ensure data quality with minimal effort.
- [Adafruit IO](https://composio.dev/toolkits/adafruit_io) - Adafruit IO is Adafruit's cloud platform for connected device and IoT project data. It helps you store, visualize, and act on sensor feeds without running your own backend.
- [Addressfinder](https://composio.dev/toolkits/addressfinder) - Addressfinder is a data quality platform for verifying addresses, emails, and phone numbers. It helps you ensure accurate customer and contact data every time.
- [Agentql](https://composio.dev/toolkits/agentql) - Agentql is a toolkit that connects AI agents to the web using a specialized query language. It enables structured web interaction and data extraction for smarter automations.
- [Agenty](https://composio.dev/toolkits/agenty) - Agenty is a web scraping and automation platform for extracting data and automating browser tasks—no coding needed. It streamlines data collection, monitoring, and repetitive online actions.
- [Ambee](https://composio.dev/toolkits/ambee) - Ambee is an environmental data platform providing real-time, hyperlocal APIs for air quality, weather, and pollen. Get precise environmental insights to power smarter decisions in your apps and workflows.
- [Ambient weather](https://composio.dev/toolkits/ambient_weather) - Ambient Weather is a platform for personal weather stations with a robust API for accessing local, real-time, and historical weather data. Get detailed environmental insights directly from your own sensors for smarter apps and automations.
- [Anonyflow](https://composio.dev/toolkits/anonyflow) - Anonyflow is a service for encryption-based data anonymization and secure data sharing. It helps organizations meet GDPR, CCPA, and HIPAA data privacy compliance requirements.
- [ApexVerify](https://composio.dev/toolkits/apexverify) - ApexVerify is a contact-data validation service for emails and phone numbers. Use it to normalize, verify, and clean leads before they enter your systems.
- [Api ninjas](https://composio.dev/toolkits/api_ninjas) - Api ninjas offers 120+ public APIs spanning categories like weather, finance, sports, and more. Developers use it to supercharge apps with real-time data and actionable endpoints.
- [Api sports](https://composio.dev/toolkits/api_sports) - Api sports is a comprehensive sports data platform covering 2,000+ competitions with live scores and 15+ years of stats. Instantly access up-to-date sports information for analysis, apps, or chatbots.
- [Apify](https://composio.dev/toolkits/apify) - Apify is a cloud platform for building, deploying, and managing web scraping and automation tools called Actors. It lets you automate data extraction and workflow tasks at scale—no infrastructure headaches.
- [Autom](https://composio.dev/toolkits/autom) - Autom is a lightning-fast search engine results data platform for Google, Bing, and Brave. Developers use it to access fresh, low-latency SERP data on demand.
- [Beach Day API](https://composio.dev/toolkits/beach_day_api) - Beach Day API is a beach intelligence service for search, conditions, scores, rules, amenities, tides, and country coverage. Use it to power trip planning, surf reports, safety checks, and location-aware beach discovery.
- [Beaconchain](https://composio.dev/toolkits/beaconchain) - Beaconchain is a real-time analytics platform for Ethereum 2.0's Beacon Chain. It provides detailed insights into validators, blocks, and overall network performance.
- [Big data cloud](https://composio.dev/toolkits/big_data_cloud) - BigDataCloud provides APIs for geolocation, reverse geocoding, and address validation. Instantly access reliable location intelligence to enhance your applications and workflows.
- [Bigpicture io](https://composio.dev/toolkits/bigpicture_io) - BigPicture.io offers APIs for accessing detailed company and profile data. Instantly enrich your applications with up-to-date insights on 20M+ businesses.
- [Bitquery](https://composio.dev/toolkits/bitquery) - Bitquery is a blockchain data platform offering indexed, real-time, and historical data from 40+ blockchains via GraphQL APIs. Get unified, reliable access to complex on-chain data for analytics, trading, and research.

## Frequently Asked Questions

### What are the differences in Tool Router MCP and Candid MCP?

With a standalone Candid MCP server, the agents and LLMs can only access a fixed set of Candid tools tied to that server. However, with the Composio Tool Router, agents can dynamically load tools from Candid and many other apps based on the task at hand, all through a single MCP endpoint.

### Can I use Tool Router MCP with Hermes?

Yes, you can. Hermes fully supports MCP integration. You get structured tool calling, message history handling, and model orchestration while Tool Router takes care of discovering and serving the right Candid tools.

### Can I manage the permissions and scopes for Candid while using Tool Router?

Yes, absolutely. You can configure which Candid scopes and actions are allowed when connecting your account to Composio. You can also bring your own OAuth credentials or API configuration so you keep full control over what the agent can do.

### How safe is my data with Composio Tool Router?

All sensitive data such as tokens, keys, and configuration is fully encrypted at rest and in transit. Composio is SOC 2 Type 2 compliant and follows strict security practices so your Candid data and credentials are handled as safely as possible.

---
[See all toolkits](https://composio.dev/toolkits) · [Composio docs](https://docs.composio.dev/llms.txt)
