Skip to main content
Glama

List notes

list_notes
Read-onlyIdempotent

Returns notes written on a contact or an invoice, newest first. Pass exactly one of contactId or invoiceId. Notes on a contact include the notes on each of its invoices. Read only.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "organisationId": "<organisationId>"
    },
    "name": "list_notes"
  }
}

Input Schema

NameRequiredDescriptionDefault
limitNoMaximum number of records to return
cursorNoOpaque cursor from a previous response's nextCursor. Omit to start from the most recent record.
contactIdNoNotes on this contact, including notes on its invoices
invoiceIdNoNotes on this invoice
organisationIdYesId of the organisation to act on, from list_organisations

Output Schema

NameRequiredDescriptionDefault
dataYes
nextCursorNoPass as the cursor query parameter to fetch the next page. Absent on the last page.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, and "Read only" merely restates them. The description does add behavior beyond the structured data: results are ordered newest first and a contact-scoped query transitively includes that contact's invoice notes, which affects result interpretation.

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?

Four short sentences, front-loaded with purpose and ordering, then the invocation constraint, then scope semantics. Nothing is padded and nothing needs reordering.

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?

The tool is simple, the output schema covers return shape, and the description covers scope, ordering, and the ID constraint. The only minor gap is that organisationId (the sole required parameter) is never mentioned in the description, though the schema documents it as coming from list_organisations.

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 would be 3. The description earns above baseline by imposing a mutual-exclusivity rule between contactId and invoiceId that the flat JSON schema cannot express, plus the transitive inclusion semantics for contactId.

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 ("Returns notes written on a contact or an invoice") plus the ordering ("newest first"). The selectivity condition ("exactly one of contactId or invoiceId") further pins down what the call does, and no sibling tool overlaps in offering notes, so it is distinguishable as-is.

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 a hard usage rule — pass exactly one of the two ID parameters — which tells the agent how to invoke it correctly. It does not discuss when to prefer this over any alternative path (none exists in the sibling list) or what happens with limit/cursor, but the core selection constraint is stated explicitly.

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.

Resources