LeashIndex Get the report

Index / calendar

io.github.WillHeadlee/lgl-mcp-server

io-github-willheadlee-lgl-mcp-server declares 137 capabilities across 137 tools, with 3 critical issues.

100/100 exposureHigh exposure

Manifest recorded 2026-10-14 from tools/list answered by the npm package lgl-mcp-server@1.0.0 (published to npm as lgl-mcp-server, listed in the official MCP registry as io.github.WillHeadlee/lgl-mcp-server 1.0.0), run in an isolated container with no network access and placeholder credentials. The date changes only when the manifest does. Not verified by a maintainer.

Issues

These describe what this server's manifest declares. A product can provide controls that MCP has no way to express — token revocation, an admin console, audit logs — and this page cannot see them. The absence of a declaration is not evidence that a control is absent.

critical · no-revocation · All 137 tools

137 of 137 tools declare no way for the customer to switch them off once granted. This applies to every tool because MCP has no field in which to declare a revocation mechanism; the product may provide one outside MCP that a manifest cannot show.

critical · irreversible-uncapped · 27 of 137 tools

27 tools are classified as irreversible and declare no limit.

critical · uncapped-spend · 3 of 137 tools

3 tools are classified as moving money and declare no dollar limit. A cap on the number of payments does not bound their amount.

high · no-expiry · All 137 tools

137 of 137 tools declare no expiry. This applies to every tool because MCP has no field in which to declare an expiry; the product may provide one outside MCP that a manifest cannot show.

high · no-audit-trail · All 137 tools

137 of 137 tools declare no record of their actions that the customer can read. This applies to every tool because MCP has no field in which to declare an audit requirement; the product may provide one outside MCP that a manifest cannot show.

high · uncapped-write · 46 of 137 tools

46 tools can modify data and declare no limit.

low · uncapped-read · 64 of 137 tools

64 tools can read data and declare no limit.

Declared capabilities

How each tool was read. declared means the server's own annotation said so — self-reported and unverified. inferred is from the tool's name. assumed means nothing indicated either way.

ToolRead asBasis
search_constituentsread inferred
list_constituentsread inferred
get_constituentread inferred
create_constituentwrite inferred
update_constituentwrite inferred
delete_constituentdelete inferred
list_addressesread inferred
create_addresswrite inferred
update_addresswrite inferred
delete_addressdelete inferred
list_phone_numbersread inferred
create_phone_numberwrite inferred
update_phone_numberwrite inferred
delete_phone_numberdelete inferred
list_email_addressesread inferred
create_email_addresssend inferred
update_email_addresswrite inferred
delete_email_addressdelete inferred
list_web_addressesread inferred
create_web_addresswrite inferred
update_web_addresswrite inferred
delete_web_addressdelete inferred
list_giftsread inferred
get_giftread inferred
record_giftwrite assumed
update_giftwrite inferred
delete_giftdelete inferred
list_campaignsread inferred
create_campaignwrite inferred
get_campaignread inferred
update_campaignwrite inferred
delete_campaigndelete inferred
list_fundsread inferred
create_fundpay inferred
get_fundread inferred
update_fundpay inferred
delete_fundpay inferred
list_eventsread inferred
create_eventwrite inferred
get_eventread inferred
update_eventwrite inferred
delete_eventdelete inferred
list_appealsread inferred
create_appealwrite inferred
get_appealread inferred
update_appealwrite inferred
delete_appealdelete inferred
list_appeal_requestsread inferred
create_appeal_requestwrite inferred
get_appeal_requestread inferred
update_appeal_requestwrite inferred
delete_appeal_requestdelete inferred
list_notesread inferred
get_noteread inferred
create_notewrite inferred
update_notewrite inferred
delete_notedelete inferred
list_contact_reportsread inferred
search_contact_reportsread inferred
get_contact_reportread inferred
create_contact_reportwrite inferred
update_contact_reportwrite inferred
delete_contact_reportdelete inferred
list_volunteer_timesread inferred
search_volunteer_timesread inferred
get_volunteer_timeread inferred
create_volunteer_timewrite inferred
update_volunteer_timewrite inferred
delete_volunteer_timedelete inferred
list_relationshipsread inferred
create_relationshipwrite inferred
get_relationshipread inferred
update_relationshipwrite inferred
delete_relationshipdelete inferred
list_class_affiliationsread inferred
create_class_affiliationwrite inferred
get_class_affiliationread inferred
update_class_affiliationwrite inferred
delete_class_affiliationdelete inferred
list_class_affiliation_typesread inferred
list_groupsread inferred
create_groupwrite inferred
get_groupread inferred
update_groupwrite inferred
delete_groupdelete inferred
list_group_membershipsread inferred
add_constituent_to_groupwrite inferred
get_group_membershipread inferred
update_group_membershipwrite inferred
remove_constituent_from_groupdelete inferred
list_membershipsread inferred
create_membershipwrite inferred
get_membershipread inferred
update_membershipwrite inferred
delete_membershipdelete inferred
list_membership_levelsread inferred
create_membership_levelwrite inferred
get_membership_levelread inferred
update_membership_levelwrite inferred
delete_membership_leveldelete inferred
list_constituent_invitationsread inferred
create_constituent_invitationwrite inferred
list_event_invitationsread inferred
create_event_invitationwrite inferred
get_invitationread inferred
update_invitationwrite inferred
delete_invitationdelete inferred
list_categoriesread inferred
create_categorywrite inferred
get_categoryread inferred
update_categorywrite inferred
delete_categorydelete inferred
list_keywordsread inferred
create_keywordwrite inferred
get_keywordread inferred
update_keywordwrite inferred
delete_keyworddelete inferred
list_constituent_categoriesread inferred
add_keyword_to_constituentwrite inferred
remove_keyword_from_constituentdelete inferred
list_listsread inferred
search_listsread inferred
list_mailing_templatesread inferred
list_team_membersread inferred
list_custom_attributesread inferred
list_gift_categoriesread inferred
list_gift_typesread inferred
list_payment_typesread inferred
list_relationship_typesread inferred
list_account_typesread inferred
list_type_valuesread inferred
get_metadataread inferred
recent_donorsread inferred
lapsed_donorsread inferred
top_donorsread inferred
constituents_missing_inforead inferred
call_lgl_apiwrite inferred
Answering this question about your own agent? The self-serve stack report applies the same reading to your own stack or server and gives you a dated document you can hand to a customer's security review. It is generated in your browser, with nobody to wait for. Buying one does not change this page, its score or its place in the index — see Independence.
Maintain this server? If this page misreads your manifest, or your server has changed, submit its current tools/list response and it will be re-scored and dated. Corrections are published alongside the original, not in place of it.