Skip to main content
Glama

Virtuous MCP by usefulapi

Query records

virtuous_query
Read-only

Run a Virtuous query-builder query against one record type (contacts, gifts, campaigns, projects, tasks, grants, pledges, recurring gifts, events ...). Conditions use parameter/operator names from virtuous_get_query_options. Returns { list, total }. For Contact and Gift, full_details returns full records instead of the abbreviated view. Virtuous: POST /api//Query.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
skipNoRecords to skip (default 0).
takeNoRecords to return, 1-1000 (default 10).
groupsNoCondition groups, as in the Virtuous query builder. Omit for all records.
sort_byNoField to sort by (e.g. for gifts: Id, Amount, GiftDate, ReceiptDate, Batch).
resourceYesWhich Virtuous record type to query.
descendingNoSort descending.
full_detailsNoContact and Gift only: return full records (Query/FullContact, Query/FullGift).
include_archivedNoContact queries only: include archived contacts.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  2. First observed

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already covers the safety profile, and notably the description does not contradict it despite the underlying POST (a query POST is still a read). The description adds real behavioral context beyond the annotations: the return envelope { list, total } and the fact that full_details switches Contact/Gift queries to full records rather than the abbreviated view. It does not mention rate limits or pagination cost, which keeps it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four tight sentences with no filler; the scope of the tool is front-loaded before the conditions/return details and the API mapping trails at the end. Everything present is relevant, though the endpoint line (POST /api/<Resource>/Query) is the most expendable element.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only query tool with no output schema, the description supplies the missing return shape ({ list, total }) and the full_details behavior switch, so an agent can interpret the response without one. The main gap is sibling positioning versus the extensive list_*/search_* family, which is the most likely source of wrong-tool selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema does not carry: it points conditions at virtuous_get_query_options as the authoritative source of valid parameter/operator names, which is the single hardest thing to get right when calling this tool. The full_details note largely restates the schema description ('Contact and Gift only'), but the cross-tool reference is a genuine addition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: runs a Virtuous query-builder query against one record type, and enumerates the record types (contacts, gifts, campaigns, projects, tasks, grants, pledges, recurring gifts, events). It also gives the concrete API mapping (POST /api/<Resource>/Query). However, it never distinguishes this generic query tool from the many per-resource siblings (virtuous_list_contact_gifts, virtuous_search_contacts, etc.), so an agent cannot tell from the description alone why it would pick this over a specialized list/search tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description supplies one real workflow prerequisite: condition parameter/operator names must come from virtuous_get_query_options. That is useful routing, but there is no explicit when-to-use guidance and no when-not-to-use or named alternative against virtuous_search, virtuous_search_contacts, or the numerous list_* siblings. Usage is only implied by 'run a query-builder query'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.