Little Green Light MCP by usefulapi
by usefulapi.io · remote · no sign-in to list tools · v1.16.3 · published by io.usefulapi
Search Little Green Light donors, gifts, notes and memberships, and add gifts and contact reports.
20 tools: 5 can delete or cancel things and 15 only read.
Scanned Oct 21, 2026
- Deletes or cancels5Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things0Claude Code: ask
- Only reads15Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http little-green-light https://little-green-light.usefulapi.io/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
20 tools
Deletes or cancels 5Claude Code: deny
lgl_create_constituentWRITE: add a new constituent (person or organization) to the account, optionally with email addresses, phone numbers, street addresses and group memberships.No findings
Why it is in this group
- The name "lgl_create_constituent" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: add a new constituent (person or organization) to the account, optionally with email addresses, phone numbers, street addresses and group memberships. LGL's schema marks first_name, last_name and email_addresses as required. Search first (lgl_search_constituents) to avoid creating a duplicate. LGL: POST /api/v1/constituents.
Annotations the server declares
- title: Create a constituent
- destructiveHint: true
lgl_create_contact_reportWRITE: log a contact report (a call, email or meeting with a constituent).No findings
Why it is in this group
- The name "lgl_create_contact_report" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: log a contact report (a call, email or meeting with a constituent). text is required; the type may be given by id or name (e.g. 'Call'; see lgl_list_type_values type=contact_report_types). LGL: POST /api/v1/constituents/{constituent_id}/contact_reports.
Annotations the server declares
- title: Log a contact report
- destructiveHint: true
lgl_create_giftWRITE: record a gift (donation, pledge payment, in-kind, etc.) on a constituent's record.No findings
Why it is in this group
- The name "lgl_create_gift" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: record a gift (donation, pledge payment, in-kind, etc.) on a constituent's record. This writes a CRM record of a gift that already happened — it does NOT charge a card or move money. Give gift_type_id or gift_type_name (required; see lgl_list_type_values type=gift_types). Fund, campaign, appeal, event, gift category and payment type may each be given by id or by exact name. Set ack_template_name to 'do_not_ack' to skip acknowledgment. LGL: POST /api/v1/constituents/{constituent_id}/gifts.
Annotations the server declares
- title: Record a gift
- destructiveHint: true
lgl_create_noteWRITE: add a note to a constituent's record.No findings
Why it is in this group
- The name "lgl_create_note" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: add a note to a constituent's record. text and original_date are required; the note type may be given by id or name (e.g. 'General'; see lgl_list_type_values type=note_types). LGL: POST /api/v1/constituents/{constituent_id}/notes.
Annotations the server declares
- title: Add a note
- destructiveHint: true
lgl_update_constituentWRITE: change scalar fields on an existing constituent (name, salutation, job title, org name, deceased flag, etc.).No findings
Why it is in this group
- The name "lgl_update_constituent" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: change scalar fields on an existing constituent (name, salutation, job title, org name, deceased flag, etc.). Only the fields you pass are sent. LGL's update schema marks first_name and last_name as required, so pass the current values (from lgl_get_constituent) if you are not changing them. Addresses, emails and phones are not edited here. LGL: PATCH /api/v1/constituents/{id}.
Annotations the server declares
- title: Update a constituent
- destructiveHint: true
Only reads 15Claude Code: allow
lgl_get_constituentFull details for one constituent by LGL id: names, salutations, addresses, phone numbers, email addresses, groups, memberships and custom attributes.No findings
Why it is in this group
- The name "lgl_get_constituent" says "get": a word for reading.
Description, as the server wrote it Full details for one constituent by LGL id: names, salutations, addresses, phone numbers, email addresses, groups, memberships and custom attributes. LGL: GET /api/v1/constituents/{id}.
Annotations the server declares
- title: Get a constituent
- readOnlyHint: true
lgl_get_giftFull details for one gift by id: amount, deductible amount, dates, fund/campaign/appeal/event, payment type, acknowledgment template, tribute and custom fields.No findings
Why it is in this group
- The name "lgl_get_gift" says "get": a word for reading.
Description, as the server wrote it Full details for one gift by id: amount, deductible amount, dates, fund/campaign/appeal/event, payment type, acknowledgment template, tribute and custom fields. LGL: GET /api/v1/gifts/{id}.
Annotations the server declares
- title: Get a gift
- readOnlyHint: true
lgl_list_appealsFundraising appeals (mailings, emails, asks) with campaign, date, financial goal, cost and active flag.No findings
Why it is in this group
- The name "lgl_list_appeals" says "list": a word for reading.
Description, as the server wrote it Fundraising appeals (mailings, emails, asks) with campaign, date, financial goal, cost and active flag. Use the ids and names when recording gifts or filtering searches. LGL: GET /api/v1/appeals.
Annotations the server declares
- title: List appeals
- readOnlyHint: true
lgl_list_campaignsCampaigns with start/end dates, financial goal, code and active flag.No findings
Why it is in this group
- The name "lgl_list_campaigns" says "list": a word for reading.
Description, as the server wrote it Campaigns with start/end dates, financial goal, code and active flag. Use the ids and names when recording gifts or filtering searches. LGL: GET /api/v1/campaigns.
Annotations the server declares
- title: List campaigns
- readOnlyHint: true
lgl_list_constituent_contact_reportsContact reports (calls, emails, meetings) logged for a constituent, with type, date, text and team member.No findings
Why it is in this group
- The name "lgl_list_constituent_contact_reports" says "list": a word for reading.
Description, as the server wrote it Contact reports (calls, emails, meetings) logged for a constituent, with type, date, text and team member. LGL: GET /api/v1/constituents/{constituent_id}/contact_reports.
Annotations the server declares
- title: List a constituent's contact reports
- readOnlyHint: true
lgl_list_constituent_giftsA constituent's giving history: every gift with amount, date, gift type, fund, campaign, appeal, event and payment type.No findings
Why it is in this group
- The name "lgl_list_constituent_gifts" says "list": a word for reading.
Description, as the server wrote it A constituent's giving history: every gift with amount, date, gift type, fund, campaign, appeal, event and payment type. LGL: GET /api/v1/constituents/{constituent_id}/gifts.
Annotations the server declares
- title: List a constituent's gifts
- readOnlyHint: true
lgl_list_constituent_membershipsA constituent's memberships: level, start date and finish date — use it to see whether someone is current or lapsed.No findings
Why it is in this group
- The name "lgl_list_constituent_memberships" says "list": a word for reading.
Description, as the server wrote it A constituent's memberships: level, start date and finish date — use it to see whether someone is current or lapsed. LGL: GET /api/v1/constituents/{constituent_id}/memberships.
Annotations the server declares
- title: List a constituent's memberships
- readOnlyHint: true
lgl_list_constituent_notesNotes recorded on a constituent (type, text, original date).No findings
Why it is in this group
- The name "lgl_list_constituent_notes" says "list": a word for reading.
Description, as the server wrote it Notes recorded on a constituent (type, text, original date). LGL: GET /api/v1/constituents/{constituent_id}/notes.
Annotations the server declares
- title: List a constituent's notes
- readOnlyHint: true
lgl_list_eventsEvents (galas, lunches, board weekends) with dates, campaign, event type, goal and active flag.No findings
Why it is in this group
- The name "lgl_list_events" says "list": a word for reading.
Description, as the server wrote it Events (galas, lunches, board weekends) with dates, campaign, event type, goal and active flag. Use the ids and names when recording gifts or filtering searches. LGL: GET /api/v1/events.
Annotations the server declares
- title: List events
- readOnlyHint: true
lgl_list_fundsFunds (where gifts are designated) with campaign, code, financial goal and active flag.No findings
Why it is in this group
- The name "lgl_list_funds" says "list": a word for reading.
Description, as the server wrote it Funds (where gifts are designated) with campaign, code, financial goal and active flag. Use the ids and names when recording gifts or filtering searches. LGL: GET /api/v1/funds.
Annotations the server declares
- title: List funds
- readOnlyHint: true
lgl_list_groupsConstituent groups (e.g.No findings
Why it is in this group
- The name "lgl_list_groups" says "list": a word for reading.
Description, as the server wrote it Constituent groups (e.g. Board Member, Staff, Volunteer) with their ids and keys. Use the ids and names when recording gifts or filtering searches. LGL: GET /api/v1/groups.
Annotations the server declares
- title: List groups
- readOnlyHint: true
lgl_list_team_membersLGL user accounts on the team (name, email, admin flag) — the values a gift or contact report's team_member refers to.No findings
Why it is in this group
- The name "lgl_list_team_members" says "list": a word for reading.
Description, as the server wrote it LGL user accounts on the team (name, email, admin flag) — the values a gift or contact report's team_member refers to. Use the ids and names when recording gifts or filtering searches. LGL: GET /api/v1/team_members.
Annotations the server declares
- title: List team members
- readOnlyHint: true
lgl_list_type_valuesThe account's configured lookup values for one type — the ids and names other tools accept.No findings
Why it is in this group
- The name "lgl_list_type_values" says "list": a word for reading.
Description, as the server wrote it The account's configured lookup values for one type — the ids and names other tools accept. gift_types, payment_types and gift_categories come from their own endpoints (GET /api/v1/gift_types, /payment_types, /gift_categories — the last optionally filtered by gift_type_id); every other type from GET /api/v1/types/{type} (contact_report_types, note_types, appeal_types, event_types, email/phone/street/web address types, mailing_types, volunteering_categories, list_types).
Annotations the server declares
- title: List lookup values
- readOnlyHint: true
lgl_search_constituentsSearch active constituents (donors, members, volunteers, organizations).No findings
Why it is in this group
- The name "lgl_search_constituents" says "search": a word for reading.
Description, as the server wrote it Search active constituents (donors, members, volunteers, organizations). Give `name` and/or `email` for the common case, or raw `terms`. Available term fields: name, eaddr (email contains), phone_number, street, city, state (2-letter), postal_code, country, keyword (keyword id), updated_from / updated_to (YYYY-MM-DDTHH:MM:SSZ), membership_status (0 lapsed, 1 active), membership_level (comma-separated ids), membership_end_date_from / _to (YYYY-MM-DD), external_id, constituent_type (0 individual, 1 organization), groups (comma-separated group ids), lists (comma-separated list ids), custom_attr (key|op|value). At least one term is required. LGL: GET /api/v1/constituents/search.
Annotations the server declares
- title: Search constituents
- readOnlyHint: true
lgl_search_giftsSearch active gifts across the account — e.g.No findings
Why it is in this group
- The name "lgl_search_gifts" says "search": a word for reading.
Description, as the server wrote it Search active gifts across the account — e.g. everything received in a date range, or gifts to one fund or campaign. Give date/updated bounds and/or raw `terms`. Available term fields: date_from / date_to (YYYY-MM-DD), gift_types (in|ni + comma ids, e.g. in|1,7), gift_amount (gte|lte|btw|gt|lt|eq|ne + number[s], e.g. btw|100|1000), payment_types, campaigns, funds, appeals, events, categories (in|ni|bl + comma ids), appeal_types, event_types, constituent_type (0/1), gift_ids, external_gift_ids, created_from / created_to and updated_from / updated_to (YYYY-MM-DDTHH:MM:SSZ). At least one term is required. LGL: GET /api/v1/gifts/search.
Annotations the server declares
- title: Search gifts
- readOnlyHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.16.3. Values in angle brackets are yours to fill in.
claude mcp add --transport http little-green-light https://little-green-light.usefulapi.io/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__little-green-light__lgl_search_constituents",
"mcp__little-green-light__lgl_get_constituent",
"mcp__little-green-light__lgl_list_constituent_gifts",
"mcp__little-green-light__lgl_search_gifts",
"mcp__little-green-light__lgl_get_gift",
"mcp__little-green-light__lgl_list_constituent_notes",
"mcp__little-green-light__lgl_list_constituent_contact_reports",
"mcp__little-green-light__lgl_list_constituent_memberships",
"mcp__little-green-light__lgl_list_appeals",
"mcp__little-green-light__lgl_list_campaigns",
"mcp__little-green-light__lgl_list_funds",
"mcp__little-green-light__lgl_list_events",
"mcp__little-green-light__lgl_list_groups",
"mcp__little-green-light__lgl_list_team_members",
"mcp__little-green-light__lgl_list_type_values"
],
"ask": [],
"deny": [
"mcp__little-green-light__lgl_create_constituent",
"mcp__little-green-light__lgl_update_constituent",
"mcp__little-green-light__lgl_create_gift",
"mcp__little-green-light__lgl_create_note",
"mcp__little-green-light__lgl_create_contact_report"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as little-green-light. Review it before you use it.