Paidnice automates accounts receivable: invoice reminders, statements, late fees and payment collection for businesses using Xero or QuickBooks Online. This connection can reach several organisations. Every tool except list_organisations and the help tools takes an organisationId, which is an id from list_organisations. Amounts are decimals in the invoice currency and dates are ISO 8601. Ids are Paidnice ids; accountingSystemId fields hold the matching Xero or QuickBooks id. search_help and get_help_article cover how Paidnice features work and how to set them up. Each article has a url the user can open.
Discoverability
0 pass · 1 partial0 passed · 1 partial8/100
Client listings and public setup information.
mcp.json or server-card.json
Either mcp.json or an MCP Server Card declaring this endpoint passes.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
Lists the Paidnice organisations this connection can use, with whether it can write to each. Their ids are the organisationId the other tools take. Read only.
The description explains the capability, when to use it, and what to expect.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
Search the Paidnice help articles by keyword. Returns up to 10 matches, best first. Only articles containing every keyword match, so a long query can return nothing. get_help_article returns the full text. Read only.
The description explains the capability, when to use it, and what to expect.
Inputs97/100
Input documentation gives an agent enough context to populate the arguments.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description92/100
Returns the organisation's name, its connected accounting system (Xero or QuickBooks Online) and whether that connection is live. Use it to confirm which business the data belongs to. Read only.
The description explains the capability, when to use it, and what to expect.
Inputs96/100
Input documentation gives an agent enough context to populate the arguments.
organisationId
Id of the organisation to act on, from list_organisations
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
Returns receivables totals for the organisation: amount outstanding, amount overdue, unpaid and overdue invoice counts and the number of active contacts. Totals are in the organisation's base currency. Use it for a quick overview before drilling into invoices or contacts. Read only.
The description explains the capability, when to use it, and what to expect.
Inputs94/100
Input documentation gives an agent enough context to populate the arguments.
organisationId
Id of the organisation to act on, from list_organisations
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Returns the organisation's contacts (the customers it invoices), most recently created first, up to 100 per page. Use search to find a contact by name, account number or contact person email. The returned id is what the other contact, invoice and note operations take. Read only.
The description explains the capability, when to use it, and what to expect.
Inputs88/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
organisationId
Id of the organisation to act on, from list_organisations
Clear enough to supply this argument.
limit
Maximum number of records to return
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
cursor
Opaque cursor from a previous response's nextCursor. Omit to start from the most recent record.
Clear enough to supply this argument.
search
Case insensitive partial match on the contact name, account number or a contact person's email
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
Returns one contact by its Paidnice id: name, account number, status, group, SMS opt out and its contact persons (name, email, phone numbers, primary flag and whether they get reminders). Use list_contacts to find the id. Read only.
The description explains the capability, when to use it, and what to expect.
Inputs50/100
1 of 2 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
organisationId
Id of the organisation to act on, from list_organisations
Clear enough to supply this argument.
id
Not provided
Missing description. Explain what this value means and how to supply it.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description89/100
Replaces the full set of persons on a contact. Any existing person left out of the list is removed, so send every person to keep. The change is pushed to the accounting system and the contact is then re-synced. Exactly one person must be marked as primary. The primary person is imported, while additional persons may be local depending on accounting-system rules.
The description explains the capability, when to use it, and what to expect.
Inputs8/100
1 of 13 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
organisationId
Id of the organisation to act on, from list_organisations
Clear enough to supply this argument.
id
Not provided
Missing description. Explain what this value means and how to supply it.
definitions › ContactPersonInput › id
Not provided
Missing description. Explain what this value means and how to supply it.
definitions › ContactPersonInput › isPrimary
Not provided
Missing description. Explain what this value means and how to supply it.
definitions › ContactPersonInput › firstName
Not provided
Missing description. Explain what this value means and how to supply it.
definitions › ContactPersonInput › lastName
Not provided
Missing description. Explain what this value means and how to supply it.
definitions › ContactPersonInput › email
Not provided
Missing description. Explain what this value means and how to supply it.
definitions › ContactPersonInput › mobileNumber
Not provided
Missing description. Explain what this value means and how to supply it.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
Checks every policy in the organisation against the contact and its invoices now. Per policy it returns whether it applies to the contact, how many of the contact's invoices it applies to, and a message with the reason when it does not. Explains why a contact did or did not get a statement or other contact level action. Slower than check_invoice_policies. Read only: nothing is created or sent.
The description explains the capability, when to use it, and what to expect.
Inputs50/100
1 of 2 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
organisationId
Id of the organisation to act on, from list_organisations
Clear enough to supply this argument.
id
Not provided
Missing description. Explain what this value means and how to supply it.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/100
Returns the organisation's sales invoices ordered by due date, earliest first, up to 100 per page. Defaults to unpaid invoices; filter by contact, status, due date range or search text. Use search with status all to find an invoice by number whether or not it is paid. Deleted invoices are never returned. Read only.
The description explains the capability, when to use it, and what to expect.
Inputs91/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
organisationId
Id of the organisation to act on, from list_organisations
Clear enough to supply this argument.
limit
Maximum number of records to return
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
cursor
Opaque cursor from a previous response's nextCursor. Omit to start from the most recent record.
Clear enough to supply this argument.
contactId
Only invoices for this contact
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
status
unpaid: approved invoices with a balance owing. overdue: unpaid invoices whose due date has passed in the organisation's timezone. paid: fully paid invoices. all: unpaid and paid invoices.
Clear enough to supply this argument.
search
Case insensitive partial match on the invoice number, reference or contact name. The status filter still applies
Clear enough to supply this argument.
dueBefore
Only invoices due on or before this date (YYYY-MM-DD)
Clear enough to supply this argument.
dueAfter
Only invoices due on or after this date (YYYY-MM-DD)
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
Returns one invoice by its Paidnice id: number, contact, dates, amounts due and paid, status, and links to the accounting system and the customer payment portal. Use list_invoices to find the id. Read only.
The description explains the capability, when to use it, and what to expect.
Inputs50/100
1 of 2 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
organisationId
Id of the organisation to act on, from list_organisations
Clear enough to supply this argument.
id
Not provided
Missing description. Explain what this value means and how to supply it.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
Runs every policy in the invoice's group against the invoice now and returns, per policy, whether it applies, when its action would run, and if it does not apply the reason (for example below the minimum amount, already charged or policy inactive). Explains why an invoice did or did not get a reminder, late fee or other action. Read only: nothing is created or sent.
The description explains the capability, when to use it, and what to expect.
Inputs50/100
1 of 2 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
organisationId
Id of the organisation to act on, from list_organisations
Clear enough to supply this argument.
id
Not provided
Missing description. Explain what this value means and how to supply it.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description92/100
Returns SMS messages the organisation received through Paidnice, most recent first, up to 100 per page. Each message shows the sender, the matched contact when known, and the text. Read only.
The description explains the capability, when to use it, and what to expect.
Inputs92/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
organisationId
Id of the organisation to act on, from list_organisations
Clear enough to supply this argument.
limit
Maximum number of records to return
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
cursor
Opaque cursor from a previous response's nextCursor. Omit to start from the most recent record.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
Returns emails the organisation received through Paidnice, most recent first, up to 100 per page. Each email shows the sender, recipients, subject, the matched contact when known, and the extracted reply text. Read only.
The description explains the capability, when to use it, and what to expect.
Inputs92/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
organisationId
Id of the organisation to act on, from list_organisations
Clear enough to supply this argument.
limit
Maximum number of records to return
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
cursor
Opaque cursor from a previous response's nextCursor. Omit to start from the most recent record.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description86/100
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.
The description explains the capability, when to use it, and what to expect.
Inputs80/100
Explain what happens when this optional value is omitted.
organisationId
Id of the organisation to act on, from list_organisations
Clear enough to supply this argument.
limit
Maximum number of records to return
Explain what happens when this optional value is omitted.
cursor
Opaque cursor from a previous response's nextCursor. Omit to start from the most recent record.
Clear enough to supply this argument.
contactId
Notes on this contact, including notes on its invoices
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
invoiceId
Notes on this invoice
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/100
Returns what Paidnice has scheduled, sent, skipped or failed (reminders, late fees, statements, SMS, escalations and so on), newest first, up to 100 per page. Each action has its status, run dates, any notes or error, and the policies that created it. Filter by contact, invoice, status or type. Read only.
The description explains the capability, when to use it, and what to expect.
Inputs93/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
organisationId
Id of the organisation to act on, from list_organisations
Clear enough to supply this argument.
limit
Maximum number of records to return
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
cursor
Opaque cursor from a previous response's nextCursor. Omit to start from the most recent record.
Clear enough to supply this argument.
contactId
Only actions for this contact
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
invoiceId
Only actions for this invoice, including statements and statement late fees that included it
Clear enough to supply this argument.
status
pending: waiting for its run date. complete: done. failed: errored, see errorMessage. suspended and approval_pending: waiting for a user. skipped: skipped by a user. reverted: a late fee that was later reversed.
Clear enough to supply this argument.
type
Only actions of this type, for example reminder, late_fee or send_statement
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data"
],
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/definitions/Action"
}
},
"nextCursor": {
"type": "string",
"description": "Pass as the cursor query parameter to fetch the next page. Absent on the last page."
}
},
"definitions": {
"Action": {
"type": "object",
"required": [
"id",
"type",
"status",
"substatus",
"createdAt",
"actionOn",
"executedAt",
"failedAt",
"deferredUntil",
"ignored",
"errorCode",
"errorMessage",
"notes",
"contactId",
"contactName",
"invoiceId",
"invoiceNumber",
"policies"
],
"properties": {
"id": {
"type": "string",
"example": "00000000-0000-0000-0000-000000000123"
},
"type": {
"enum": [
"late_fee",
"late_fee_email",
"reminder",
"discount_apply",
"discount_remove",
"discount_applied_email",
"discount_removed_email",
"send_sms",
"issue_statement_late_fee",
"send_statement",
"escalation",
"send_statement_interest_email",
"send_announcement_email",
"quote_email",
"payment_plan_reminder",
"on_demand"
],
"type": "string"
},
"notes": {
"type": "array",
"items": {
"type": "string"
},
"example": [
"No overdue balance for contact, so no statement was sent"
]
},
"status": {
"enum": [
"pending",
"complete",
"failed",
"suspended",
"reverted",
"approval_pending",
"skipped"
],
"type": "string"
},
"ignored": {
"type": "boolean",
"description": "True when a user ignored a completed late fee so an identical fee can be issued again. Treat the action as not having happened"
},
"actionOn": {
"type": "string",
"example": "2026-06-16T08:00:00.000Z",
"description": "When the action is or was due to run"
},
"failedAt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"policies": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"title",
"type"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
"type": {
"enum": [
"reminder",
"fee",
"discount",
"sms",
"statement_late_fee",
"statement",
"escalation",
"contact_escalation",
"quote_email",
"payment_plan_reminder",
"on_demand_placeholder"
],
"type": "string"
},
"title": {
"type": "string"
}
},
"additionalProperties": false
},
"description": "The policies that created the action. Empty for manual actions"
},
"contactId": {
"type": "integer",
"example": 123,
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
"createdAt": {
"type": "string",
"example": "2026-06-01T08:00:00.000Z"
},
"errorCode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"invoiceId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"example": "00000000-0000-0000-0000-000000000123",
"description": "Null for actions on the contact as a whole, such as statements"
},
"substatus": {
"anyOf": [
{
"enum": [
"deferred",
"no_interest_generated",
"no_statement_sent"
],
"type": "string"
},
{
"type": "null"
}
]
},
"executedAt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"contactName": {
"type": "string",
"example": "Acme Ltd"
},
"errorMessage": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Why the action failed, often the message from the accounting system or email or SMS provider"
},
"deferredUntil": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Set while a pending action has been pushed back, for example to retry after an error"
},
"invoiceNumber": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"example": "INV-0042"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
Original tool metadata
{
"name": "list_actions",
"title": "List actions",
"description": "Returns what Paidnice has scheduled, sent, skipped or failed (reminders, late fees, statements, SMS, escalations and so on), newest first, up to 100 per page. Each action has its status, run dates, any notes or error, and the policies that created it. Filter by contact, invoice, status or type. Read only.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"organisationId"
],
"properties": {
"type": {
"enum": [
"late_fee",
"late_fee_email",
"reminder",
"discount_apply",
"discount_remove",
"discount_applied_email",
"discount_removed_email",
"send_sms",
"issue_statement_late_fee",
"send_statement",
"escalation",
"send_statement_interest_email",
"send_announcement_email",
"quote_email",
"payment_plan_reminder",
"on_demand"
],
"type": "string",
"description": "Only actions of this type, for example reminder, late_fee or send_statement"
},
"limit": {
"type": "integer",
"default": 10,
"example": 10,
"maximum": 100,
"minimum": 1,
"description": "Maximum number of records to return"
},
"cursor": {
"type": "string",
"description": "Opaque cursor from a previous response's nextCursor. Omit to start from the most recent record."
},
"status": {
"enum": [
"pending",
"complete",
"failed",
"suspended",
"reverted",
"approval_pending",
"skipped"
],
"type": "string",
"description": "pending: waiting for its run date. complete: done. failed: errored, see errorMessage. suspended and approval_pending: waiting for a user. skipped: skipped by a user. reverted: a late fee that was later reversed."
},
"contactId": {
"type": "integer",
"example": 123,
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Only actions for this contact"
},
"invoiceId": {
"type": "string",
"format": "uuid",
"example": "00000000-0000-0000-0000-000000000123",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Only actions for this invoice, including statements and statement late fees that included it"
},
"organisationId": {
"type": "string",
"description": "Id of the organisation to act on, from list_organisations"
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"data"
],
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/definitions/Action"
}
},
"nextCursor": {
"type": "string",
"description": "Pass as the cursor query parameter to fetch the next page. Absent on the last page."
}
},
"definitions": {
"Action": {
"type": "object",
"required": [
"id",
"type",
"status",
"substatus",
"createdAt",
"actionOn",
"executedAt",
"failedAt",
"deferredUntil",
"ignored",
"errorCode",
"errorMessage",
"notes",
"contactId",
"contactName",
"invoiceId",
"invoiceNumber",
"policies"
],
"properties": {
"id": {
"type": "string",
"example": "00000000-0000-0000-0000-000000000123"
},
"type": {
"enum": [
"late_fee",
"late_fee_email",
"reminder",
"discount_apply",
"discount_remove",
"discount_applied_email",
"discount_removed_email",
"send_sms",
"issue_statement_late_fee",
"send_statement",
"escalation",
"send_statement_interest_email",
"send_announcement_email",
"quote_email",
"payment_plan_reminder",
"on_demand"
],
"type": "string"
},
"notes": {
"type": "array",
"items": {
"type": "string"
},
"example": [
"No overdue balance for contact, so no statement was sent"
]
},
"status": {
"enum": [
"pending",
"complete",
"failed",
"suspended",
"reverted",
"approval_pending",
"skipped"
],
"type": "string"
},
"ignored": {
"type": "boolean",
"description": "True when a user ignored a completed late fee so an identical fee can be issued again. Treat the action as not having happened"
},
"actionOn": {
"type": "string",
"example": "2026-06-16T08:00:00.000Z",
"description": "When the action is or was due to run"
},
"failedAt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"policies": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"title",
"type"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
"type": {
"enum": [
"reminder",
"fee",
"discount",
"sms",
"statement_late_fee",
"statement",
"escalation",
"contact_escalation",
"quote_email",
"payment_plan_reminder",
"on_demand_placeholder"
],
"type": "string"
},
"title": {
"type": "string"
}
},
"additionalProperties": false
},
"description": "The policies that created the action. Empty for manual actions"
},
"contactId": {
"type": "integer",
"example": 123,
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
"createdAt": {
"type": "string",
"example": "2026-06-01T08:00:00.000Z"
},
"errorCode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"invoiceId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"example": "00000000-0000-0000-0000-000000000123",
"description": "Null for actions on the contact as a whole, such as statements"
},
"substatus": {
"anyOf": [
{
"enum": [
"deferred",
"no_interest_generated",
"no_statement_sent"
],
"type": "string"
},
{
"type": "null"
}
]
},
"executedAt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"contactName": {
"type": "string",
"example": "Acme Ltd"
},
"errorMessage": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Why the action failed, often the message from the accounting system or email or SMS provider"
},
"deferredUntil": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Set while a pending action has been pushed back, for example to retry after an error"
},
"invoiceNumber": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"example": "INV-0042"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
Loading score analytics…
Put your MCP to the test
A few tasks worth trying with this server, chosen from its reviewed tools. These have not been run.
01Search help articlesSearch the Paidnice help articles by keyword.
02Get organisation summaryReturns receivables totals for the organisation: amount outstanding, amount overdue, unpaid and overdue invoice counts and the number of active contacts.
03List invoicesReturns the organisation's sales invoices ordered by due date, earliest first, up to 100 per page.
04List organisationsLists the Paidnice organisations this connection can use, with whether it can write to each.
05List contactsReturns the organisation's contacts (the customers it invoices), most recently created first, up to 100 per page.
Want to run these tasks against your MCP server with us?
paidnice setup, tools, quality score, publishing readiness, and alternatives.
How do I add paidnice to Claude, ChatGPT, or Cursor?
Add paidnice to Claude, ChatGPT, or Cursor by connecting its remote MCP URL in each client's MCP settings. In Claude, add a custom connector. In ChatGPT, add an MCP app. In Cursor, add an MCP server under Settings. The MCP URL is https://mcp.paidnice.com/mcp.
Is paidnice MCP ready for ChatGPT and Claude?
As of November 11, 2026, paidnice scores 100/100 on Manufact's MCP publishing checklist. The scan meets ChatGPT publishing checks and meets Claude publishing checks. Passing these checks does not guarantee marketplace approval.
How clear is paidnice's MCP tool documentation?
As of November 11, 2026, paidnice scores 89/100 in Manufact's review of tool titles, descriptions, input and output schemas, and behavior annotations. The review covers 16 of 16 discovered tools. The quality score measures documentation clarity; runtime behavior and marketplace readiness require separate checks.
What are the best alternatives to paidnice?
As of November 12, 2026, alternatives to paidnice in financial-services on the Manufact MCP leaderboard include SHVL credit control, BankConv, paidfor: x402 seller reliability, CoinGecko, and Coverage Cat Insurance.
How can paidnice improve its MCP documentation?
update_contact_persons is the lowest-scoring reviewed tool at 67/100. 1 of 13 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values. Open its review for feedback and a copyable fix prompt, then rerun the documentation review after updating your tool metadata.
Not your MCP?
Review any public or OAuth MCP server for protocol compatibility, tool documentation, and ChatGPT and Claude publishing readiness. No account required.