Qgiv MCP by usefulapi

Read Qgiv (Bloomerang Fundraising) donations, refunds, recurring gifts, P2P registrations, events.

Should I use this

Quality & Safety

A
Description quality
93%
Schema completeness
92%
Naming quality
78%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (5)

  • LOWTool 'qgiv_get_registration' description lacks action verbin qgiv_get_registration
  • LOWTool 'qgiv_get_pledge' description lacks action verbin qgiv_get_pledge
  • LOWTool 'qgiv_get_report_mapping' description lacks action verbin qgiv_get_report_mapping
  • LOWTool 'qgiv_list_transactions_after_id' name length outside 3-30 rangein qgiv_list_transactions_after_id
  • LOWTool 'qgiv_list_registrations_by_date' name length outside 3-30 rangein qgiv_list_registrations_by_date

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~4,282Tokens (tool definitions)
~1.3 KBTypical response size
Significant attention impact (3.35% 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": {
    "qgiv": {
      "url": "https://qgiv.usefulapi.io/mcp"
    }
  }
}

Remote endpoints

https://qgiv.usefulapi.io/mcpstreamable-http

What it can do

Tool inventory

Tools (21)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢qgiv_list_recent_transactions(limit, include_contact)

The most recent donations/transactions (newest first as Qgiv returns them): id, status, date, amount, fee, net, donor name and id, form, recurring link, payment type and last four card digits, fund. Donor contact details are left out unless include_contact is set; full card numbers are never returned. POST /reporting/transactions/last/{limit}.

Input Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "default": 25,
      "description": "Records to return (1-100, default 25).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "include_contact": {
      "description": "Include donor contact details (email, phone, postal address). Off by default: names, ids and amounts only.",
      "type": "boolean"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢qgiv_list_transactions_by_date(begin_date, end_date, limit, offset, include_contact)

Transactions between two dates (inclusive), at most 31 days per call, paged with offset/limit. Same fields as qgiv_list_recent_transactions. Qgiv has no server-side paging, so a busy range is fetched whole and sliced; use a shorter range if it is too large. POST /reporting/transactions/dates/{begin}:{end}.

Input Schema

{
  "type": "object",
  "properties": {
    "begin_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "First day (yyyy-mm-dd)."
    },
    "end_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Last day (yyyy-mm-dd)."
    },
    "limit": {
      "default": 25,
      "description": "Records to return (1-100, default 25).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "offset": {
      "default": 0,
      "description": "Records to skip, for paging through a larger result (use next_offset from the previous reply).",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    },
    "include_contact": {
      "description": "Include donor contact details (email, phone, postal address). Off by default: names, ids and amounts only.",
      "type": "boolean"
    }
  },
  "required": [
    "begin_date",
    "end_date"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢qgiv_list_transactions_after_id(after_id, limit, include_contact)

Transactions with an id greater than the given one, sorted by id ascending and paged with limit; next_after_id is the cursor for the next call (use it as after_id). Handy for syncing new gifts. POST /reporting/transactions/after/{id}.

Input Schema

{
  "type": "object",
  "properties": {
    "after_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Return transactions with an id greater than this."
    },
    "limit": {
      "default": 25,
      "description": "Records to return (1-100, default 25).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "include_contact": {
      "description": "Include donor contact details (email, phone, postal address). Off by default: names, ids and amounts only.",
      "type": "boolean"
    }
  },
  "required": [
    "after_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢qgiv_get_transaction(transaction_id, include_contact)

One transaction in full: donation lines, fund/restriction, dedication, custom-field answers, event packages, registrations, refunds. Contact details only with include_contact; card data is reduced to the last four digits. POST /reporting/transactions/{id}.

Input Schema

{
  "type": "object",
  "properties": {
    "transaction_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Numeric Qgiv id."
    },
    "include_contact": {
      "description": "Include donor contact details (email, phone, postal address). Off by default: names, ids and amounts only.",
      "type": "boolean"
    }
  },
  "required": [
    "transaction_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢qgiv_list_recent_refunds(limit, include_contact)

The most recent refunds (read-only): id, original transaction, refund and settle dates, amount, payment type, last four digits, fund. POST /reporting/refunds/last/{limit}.

Input Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "default": 25,
      "description": "Records to return (1-100, default 25).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "include_contact": {
      "description": "Include donor contact details (email, phone, postal address). Off by default: names, ids and amounts only.",
      "type": "boolean"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢qgiv_list_refunds_by_date(begin_date, end_date, limit, offset, include_contact)

Refunds between two dates (inclusive), at most 31 days per call, paged with offset/limit. POST /reporting/refunds/dates/{begin}:{end}.

Input Schema

{
  "type": "object",
  "properties": {
    "begin_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "First day (yyyy-mm-dd)."
    },
    "end_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Last day (yyyy-mm-dd)."
    },
    "limit": {
      "default": 25,
      "description": "Records to return (1-100, default 25).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "offset": {
      "default": 0,
      "description": "Records to skip, for paging through a larger result (use next_offset from the previous reply).",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    },
    "include_contact": {
      "description": "Include donor contact details (email, phone, postal address). Off by default: names, ids and amounts only.",
      "type": "boolean"
    }
  },
  "required": [
    "begin_date",
    "end_date"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢qgiv_get_refund(refund_id, include_contact)

One refund in full by id (read-only; this server never issues refunds). POST /reporting/refunds/{id}.

Input Schema

{
  "type": "object",
  "properties": {
    "refund_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Numeric Qgiv id."
    },
    "include_contact": {
      "description": "Include donor contact details (email, phone, postal address). Off by default: names, ids and amounts only.",
      "type": "boolean"
    }
  },
  "required": [
    "refund_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢qgiv_list_recurring_schedules(status, limit, offset, include_contact)

Recurring donation schedules (read-only): id, start/end date, next billing date, frequency, amount, state, donor name and id, plus Qgiv's 12-month forecast. Filter by status active, paused, expired or deleted. Paged with offset/limit. POST /reporting/recurring/list or /reporting/recurring/{status}.

Input Schema

{
  "type": "object",
  "properties": {
    "status": {
      "description": "Only schedules in this state (default: all).",
      "type": "string",
      "enum": [
        "active",
        "paused",
        "expired",
        "deleted"
      ]
    },
    "limit": {
      "default": 25,
      "description": "Records to return (1-100, default 25).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "offset": {
      "default": 0,
      "description": "Records to skip, for paging through a larger result (use next_offset from the previous reply).",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    },
    "include_contact": {
      "description": "Include donor contact details (email, phone, postal address). Off by default: names, ids and amounts only.",
      "type": "boolean"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢qgiv_get_recurring_schedule(recurring_id, include_contact)

One recurring donation schedule by id (read-only; schedules cannot be changed here). POST /reporting/recurring/{id}.

Input Schema

{
  "type": "object",
  "properties": {
    "recurring_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Numeric Qgiv id."
    },
    "include_contact": {
      "description": "Include donor contact details (email, phone, postal address). Off by default: names, ids and amounts only.",
      "type": "boolean"
    }
  },
  "required": [
    "recurring_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢qgiv_list_statements(limit, offset)

Monthly fee/payout statements: id, date, amount contributed, fees, refunded, debited, credited and the summary totals (without the per-transaction rows; use qgiv_get_statement for those). Paged with offset/limit. POST /reporting/statements/list.

Input Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "default": 25,
      "description": "Records to return (1-100, default 25).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "offset": {
      "default": 0,
      "description": "Records to skip, for paging through a larger result (use next_offset from the previous reply).",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢qgiv_get_latest_statements

The latest statement(s) for the organization or form, with summary totals (per-transaction rows left out). POST /reporting/statements/latest.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢qgiv_get_statement(statement_id)

One statement by id with its transaction rows (first 100 shown; donor names only). POST /reporting/statements/{id}.

Input Schema

{
  "type": "object",
  "properties": {
    "statement_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Numeric Qgiv id."
    }
  },
  "required": [
    "statement_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢qgiv_list_recent_registrations(limit, include_contact)

The most recent peer-to-peer (Hobnob) event registrations: id, category, registrant name, team, fundraising goal and amount raised. Contact details only with include_contact. POST /reporting/registrations/last/{limit}.

Input Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "default": 25,
      "description": "Records to return (1-100, default 25).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "include_contact": {
      "description": "Include donor contact details (email, phone, postal address). Off by default: names, ids and amounts only.",
      "type": "boolean"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢qgiv_list_registrations_by_date(begin_date, end_date, limit, offset, include_contact)

Peer-to-peer registrations between two dates (inclusive), at most 31 days per call, paged with offset/limit. POST /reporting/registrations/dates/{begin}:{end}.

Input Schema

{
  "type": "object",
  "properties": {
    "begin_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "First day (yyyy-mm-dd)."
    },
    "end_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Last day (yyyy-mm-dd)."
    },
    "limit": {
      "default": 25,
      "description": "Records to return (1-100, default 25).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "offset": {
      "default": 0,
      "description": "Records to skip, for paging through a larger result (use next_offset from the previous reply).",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    },
    "include_contact": {
      "description": "Include donor contact details (email, phone, postal address). Off by default: names, ids and amounts only.",
      "type": "boolean"
    }
  },
  "required": [
    "begin_date",
    "end_date"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢qgiv_get_registration(registration_id, include_contact)

One peer-to-peer registration in full (purchase history, team, totals, child registrations). Contact details only with include_contact. POST /reporting/registrations/{id}.

Input Schema

{
  "type": "object",
  "properties": {
    "registration_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Numeric Qgiv id."
    },
    "include_contact": {
      "description": "Include donor contact details (email, phone, postal address). Off by default: names, ids and amounts only.",
      "type": "boolean"
    }
  },
  "required": [
    "registration_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢qgiv_list_events(include_details, limit, offset)

Events (ticketed/auction events) on the forms the token covers: id, dates and the top-level settings. Set include_details for packages, questions and promo codes. Notification e-mail addresses are never returned. POST /events/list.

Input Schema

{
  "type": "object",
  "properties": {
    "include_details": {
      "description": "Include nested packages, fields and promo codes (large).",
      "type": "boolean"
    },
    "limit": {
      "default": 20,
      "description": "Events to return (1-50, default 20).",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "offset": {
      "default": 0,
      "description": "Records to skip, for paging through a larger result (use next_offset from the previous reply).",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢qgiv_list_pledges(limit, offset)

Pledge options configured on the form(s) (title, value, frequency, begin date, iterations, state), not donors' pledge records. POST /pledges/list.

Input Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "default": 25,
      "description": "Records to return (1-100, default 25).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "offset": {
      "default": 0,
      "description": "Records to skip, for paging through a larger result (use next_offset from the previous reply).",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢qgiv_get_pledge(pledge_id)

One pledge option by id. POST /pledges/{id} (no package is sent, so nothing is changed).

Input Schema

{
  "type": "object",
  "properties": {
    "pledge_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Numeric Qgiv id."
    }
  },
  "required": [
    "pledge_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢qgiv_list_custom_fields(limit, offset)

Custom (additional-question) fields configured on the form(s): id, reference, title, input type, required flags, display flags. POST /customFields/list.

Input Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "default": 25,
      "description": "Records to return (1-100, default 25).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "offset": {
      "default": 0,
      "description": "Records to skip, for paging through a larger result (use next_offset from the previous reply).",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢qgiv_list_report_mappings(limit, offset)

Report mappings (accounting export mappings) on the form(s): id, identifier, mapping data, export service, type. POST /reporting/mappings/list.

Input Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "default": 25,
      "description": "Records to return (1-100, default 25).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "offset": {
      "default": 0,
      "description": "Records to skip, for paging through a larger result (use next_offset from the previous reply).",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢qgiv_get_report_mapping(mapping_id)

One report mapping by id. POST /reporting/mappings/{id}.

Input Schema

{
  "type": "object",
  "properties": {
    "mapping_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Numeric Qgiv id."
    }
  },
  "required": [
    "mapping_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded21 tools