Skip to main content
Glama

Little Green Light MCP by usefulapi

Log a contact report

lgl_create_contact_report
Destructive

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.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameNoShort title for the report.
textYesWhat happened.
team_memberNoTeam member who made contact: id, email, or 'first_name last_name'.
original_dateNoDate of the contact (YYYY-MM-DD).
constituent_idYesConstituent id (integer).
contact_report_type_idNo
contact_report_type_nameNoType name, e.g. 'Call', 'Email', 'Meeting'.

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

A4.2/5.0
Behavior3/5

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

Annotations only provide destructiveHint=true, and the description does not reconcile why an additive 'log a report' carries a destructive hint — an agent is left to guess whether prior data is overwritten. It does add useful context beyond the annotation: the WRITE label and the underlying endpoint POST /api/v1/constituents/{constituent_id}/contact_reports, which confirms this is a nested create under a constituent.

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

Conciseness5/5

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

Three tightly packed sentences with zero filler: operation class first, required field and type resolution second, endpoint last. Every clause carries information an agent needs to construct the call.

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 7-parameter create tool with no output schema, the description covers the required fields, the type-resolution ambiguity, and the endpoint shape, which is enough to invoke it correctly. It leaves the destructiveHint unexplained and says nothing about what the response returns or how the new report id is surfaced.

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 already 86%, so the baseline is 3, but the description adds genuine value by calling out that text is mandatory and that the contact report type accepts either an id or a name (with 'Call' as an example). The cross-reference to lgl_list_type_values supplies a resolution path the schema itself does not.

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

Purpose5/5

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

States a specific verb and resource ('log a contact report') and immediately disambiguates the resource with concrete examples ('a call, email or meeting with a constituent'), which cleanly separates it from siblings like lgl_create_note and lgl_create_gift. The 'WRITE:' prefix signals the operation class up front.

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

Usage Guidelines4/5

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

Gives concrete preconditions: 'text is required' and the type may be supplied by id or name, plus an explicit pointer to lgl_list_type_values type=contact_report_types for valid values. It does not, however, state when to prefer this tool over lgl_create_note for a logged interaction, so it stops short of full alternative routing.

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.