# Virtuous MCP

> Virtuous manages nonprofit donor data and fundraising efforts directly from your AI agent. This MCP lets you list, create, update, and delete records for contacts, individuals, gifts, and projects without ever opening the Virtuous interface. You get full control over complex giving histories—from initial contact creation to final gift tracking—all through natural conversation.

## Overview
- **Category:** marketing-automation
- **Price:** Free
- **Tags:** donor-management, fundraising-crm, nonprofit-tech, gift-tracking, constituent-engagement

## Description

Stop navigating complex menus just to check who gave what, or if that individual is connected to a foundation. This MCP connects your nonprofit's donor data directly to any AI agent, letting you manage the entire lifecycle of giving and relationships using only chat prompts. You can ask your agent to list all households in an area, retrieve every gift associated with them, and then create a new project for that specific fundraising effort—all in one go. When you need to build complex automations, like sending out communications based on recent gift activity, the real power comes from chaining this MCP with other services via Vinkius. This means your agent can coordinate actions across multiple platforms using a single connection and budget.

## Tools

### create_contact
Creates a brand new contact record, which can be a household, organization, or foundation.

### create_gift
Logs a new financial contribution (gift) into the donor database.

### create_individual
Establishes a new person's profile within the system, linking them to a contact record.

### create_project
Sets up a completely new fundraising project for tracking funds and goals.

### delete_contact
Removes an existing general contact record from the system.

### get_contact
Retrieves all specific information for a single, known contact ID.

### get_gift
Fetches detailed records for one specific gift using its unique ID number.

### get_individual
Retrieves all personal details for a single, known individual ID.

### get_project
Pulls the full details and status of one specific fundraising project.

### list_contact_custom_fields
Lists all custom data fields available for contact records, helping you know what info to ask for.

### list_contacts
Retrieves a list of all contacts in the database (households, organizations, foundations).

### list_gifts
Provides a summary list of every single gift recorded in the system.

### list_individual_custom_fields
Lists all custom data fields available specifically for individual person records.

### list_individuals
Retrieves a list of every individual donor or contact in the database.

### list_projects
Lists all active and past fundraising projects that have been set up.

### update_contact
Modifies existing information on a contact record, such as changing an address or name.

### update_gift
Corrects or adjusts the details of an already recorded gift transaction.

### update_individual
Modifies existing personal information on a specific individual profile.

## Prompt Examples

**Prompt:** 
```
List the first 10 contacts from our Virtuous database.
```

**Response:** 
```
I've retrieved the first 10 contacts. They include households like 'The Smith Family' (ID: 402) and organizations like 'Global Giving Foundation' (ID: 882). Would you like details on a specific one?
```

**Prompt:** 
```
Show me the details for gift ID 12345.
```

**Response:** 
```
Fetching gift 12345... This was a $500.00 contribution from Contact ID 992, processed on October 12th for the 'Clean Water Initiative' project.
```

**Prompt:** 
```
What are the active fundraising projects?
```

**Response:** 
```
I found 3 active projects: 'Annual Gala 2024', 'Community Housing Fund', and 'Education Scholarship'. Which one would you like to inspect?
```

## Capabilities

### Retrieve Contact Details
Fetch all metadata for households, organizations, or foundations by listing them or getting details for a specific ID.

### Manage Donor Profiles
Create and update records for specific people (individuals) within the donor database using their unique profiles.

### Track Giving History
Query, list, or create new financial contributions (gifts) linked to any contact or individual record.

### Oversee Fundraising Initiatives
List and inspect specific fundraising projects to monitor progress, track allocations, and see who is involved in the campaign.

### Maintain Data Integrity
Add or modify custom fields across contacts and individuals, ensuring your data structure remains consistent for reporting.

## Use Cases

### Tracking a Complex Gift
A development director needs to know the full story behind a major donation. They ask their agent, 'What was gift ID 12345 for?' The agent uses `get_gift` and instantly replies with details on who donated it, when, and which project fund it paid into.

### Onboarding New Donors
A nonprofit admin meets a new family. They tell their agent the name and contact info. The agent uses `create_contact` first (for the household) and then runs `create_individual` for each person, logging them all into the system instantly.

### Auditing Campaign Progress
A data analyst needs to check if a recent annual gala was successful. They prompt the agent to run `list_projects`, find 'Annual Gala', and then ask for its progress using `get_project` to see how close they are to their goal.

### Updating Donor Information
A staff member learns that a key contact changed their address. Instead of logging in, they tell the agent and it uses `update_contact` to change the record immediately, keeping all other gift history intact.

## Benefits

- Instantly get gift details. Instead of navigating to a reporting dashboard, you can just ask your agent for `get_gift` details using only the ID number. You get the full $ amount, donor name, and project it was intended for, immediately.
- Maintain clean data by automating record creation. Need to log a new volunteer? Use `create_individual` and then `update_contact` in sequence. The agent handles linking everything correctly, eliminating manual entry errors.
- See your entire donor base at a glance. You can run `list_contacts` or `list_individuals` right from the chat to get an overview of who you're dealing with before drafting an email.
- Build cross-platform workflows. Combine this MCP with a messaging tool; for example, trigger a personalized follow-up message immediately after the agent runs `create_gift`, ensuring no donation goes unnoticed.
- Track project funding status easily. Use `list_projects` to get all active campaigns, then ask your agent to pull details on a specific one using `get_project`, giving you instant operational visibility.

## How It Works

The bottom line is you get natural conversation control over your entire donor database without ever needing to log into the backend system.

1. First, subscribe to this MCP in Vinkius and provide your Virtuous API key.
2. Next, connect your preferred AI client (like Claude or Cursor) to the Vinkius platform using that single connection point.
3. Finally, simply ask your agent a question—'What are the recent gifts for the education scholarship?'—and it handles all the data retrieval and processing.

## Frequently Asked Questions

**How do I list contacts using the list_contacts tool?**
You simply ask your agent to run `list_contacts`. The agent will pull a summary of all records, including households, organizations, and foundations, so you can see what data exists.

**What is the difference between get_contact and list_contacts?**
Using `list_contacts` gives you an overview or a batch summary of many contacts. Use `get_contact` when you know the specific ID number and only need the detailed record for that single contact.

**Can I update gift records using update_gift?**
Yes, `update_gift` lets you correct or adjust an already entered donation. You must provide the gift's ID number and specify exactly which values need changing to keep the record accurate.

**How do I add a new donor? Do I use create_individual?**
While `create_individual` creates the person, you usually need to run `create_contact` first. That establishes the main entity (the household or organization) that owns the individual.

**Does this MCP help me track projects? Use list_projects.**
Yes, running `list_projects` will show you every project record in the system. You can then ask for details on a specific one using `get_project` to see its current status.

**What are the security requirements before I can run `list_contacts`?**
You connect via Vinkius, which handles your credentials through a zero-trust proxy. Your API keys pass in transit but never get stored on disk. This ensures that when you list contacts, your data remains secure.

**How do I find out what custom fields are available for records using `list_contact_custom_fields`?**
You run `list_contact_custom_fields` to pull a full schema of metadata. This tool shows every unique data point attached to contacts, letting you know exactly what data your agent can read or write.

**What is the proper workflow for deleting old records using `delete_contact`?**
You must first use `get_contact` to pull the specific contact ID. Once confirmed, the `delete_contact` tool removes the record entirely from Virtuous. Always verify the ID before running any deletion commands.

**Can I record a new financial gift directly through the AI?**
Yes. You can use the `create_gift` tool by providing the necessary JSON payload containing the donor information and gift amount to record it in Virtuous.

**How do I see the custom fields available for my contacts?**
You can use the `list_contact_custom_fields` tool. It will return a list of all custom metadata fields configured in your Virtuous instance.

**Is it possible to update an individual's profile information?**
Absolutely. Use the `update_individual` tool with the specific Individual ID and the updated data fields to modify their record.