Skip to main content
Glama
aweher

invoiceninja-mcp

by aweher

invoiceninja_list_tasks

Read-onlyIdempotent

List Invoice Ninja tasks with filtering, sorting, and pagination. Filter by client status, project, user, or date range, then use a task ID to fetch full details.

Instructions

List tasks from Invoice Ninja with filtering, sorting and pagination. client_status values: all, invoiced, uninvoiced, is_running, overdue. extra_filters keys: number, project_tasks (project id), project_ids, task_status (status ids), user_id, assigned_user, activity_dates; created_between / updated_between ('YYYY-MM-DD,YYYY-MM-DD'), tag_ids (comma separated), assigned_user_ids. Related names are resolved automatically (client_name, project_name, status_name). Use invoiceninja_get_task with an id from this list for the full record.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pageNoPage number, starting at 1
sortNoSort as 'column|asc' or 'column|desc', e.g. 'date|desc'
fieldsNoJSON format only: return just these top-level fields (id is always included), e.g. ['number', 'client_name', 'balance', 'due_date']
filterNoFree-text search across the main columns (number, name, contacts, notes…)
statusNoLifecycle filter, comma separated: active, archived, deleted (e.g. 'active' to skip archived and deleted records)
includeNoExtra relations to embed, comma separated (e.g. 'payments,activities')
per_pageNoRecords per page (1-100)
client_idNoOnly records of this client (hashed id)
client_statusNoBusiness status filter, comma separated; one or more of: all, invoiced, uninvoiced, is_running, overdue
extra_filtersNoAdditional API query filters as name -> value (see the tool description)
response_formatNo'markdown' (default) for a readable summary, 'json' for complete machine-readable data (empty fields removed)markdown

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and openWorld, so the safety profile is covered. The description adds genuinely useful behavior beyond that: related names (client_name, project_name, status_name) are resolved automatically, and the extra_filters contract is spelled out. It omits any note on pagination limits or response shape, so it is not fully transparent.

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?

Front-loads the core purpose, then groups value lists and the sibling hand-off into short, scannable sentences. The dense filter-key enumeration is justified by the undocumented extra_filters object, though the description is on the long side.

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 an 11-parameter, no-output-schema list tool, the description covers the ambiguous surface (extra_filters keys, automatic name resolution, and the get_task follow-up). It leaves return/pagination behavior unstated, but with read-only annotations and a documented schema the gap is minor.

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 earns above baseline by documenting the otherwise opaque extra_filters object keys (number, project_tasks, project_ids, task_status, user_id, assigned_user, activity_dates, created_between/updated_between formats, tag_ids, assigned_user_ids) that the schema itself only gestures at with 'see the tool description'.

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 and resource ('List tasks from Invoice Ninja') plus the supported capabilities (filtering, sorting, pagination). It distinguishes itself from invoiceninja_get_task by routing full-record lookups elsewhere, though it does not clarify its boundary against generic siblings like invoiceninja_list_records or invoiceninja_search.

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 usage context: the valid client_status values, the full set of extra_filters keys, and an explicit hand-off ('Use invoiceninja_get_task with an id from this list for the full record'). It does not state when NOT to use this tool or contrast it with the other list_* siblings.

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