theluckystrike Statement of Account MCP
Generates client statements of account, aging reports, and payment chasers from existing invoice and payment data. It calculates opening balances, movements, and closing balances, aging overdue items into buckets (0-30, 31-60, 61-90, 90+ days) and drafts reminder letters without modifying the source books.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://mcp.zovo.one/mcp/statement-of-accountWhat its tools do
8 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Can change data (3)
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Aging open invoices by days past due date into four buckets
- Building a client statement for a specific period with opening and closing balances
- Writing firm or final payment reminder letters for overdue invoices
- Generating a receivables report across all clients ranked by overdue amount
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- mcp-statement-of-account 0.22.6
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 8 advertised
- Resources
- 2 advertised
- Resource templates
- 0 advertised
- Prompts
- 2 advertised
{
"tools": {
"listChanged": true
},
"prompts": {
"listChanged": true
},
"resources": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
8 advertised
statement_build — Build a statement of account
Build one client's statement for a period: opening, invoices, payments with deposits applied broken out, credit notes and closing, formatted and in minor units. Free: 5 a month; a rebuild is free.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"client",
"from",
"to"
],
"properties": {
"to": {
"type": "string",
"maxLength": 10,
"description": "Last day of the period, YYYY-MM-DD, inclusive"
},
"from": {
"type": "string",
"maxLength": 10,
"description": "First day of the period, YYYY-MM-DD. Everything dated before it becomes the opening balance"
},
"client": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Client id from the invoice server, an exact client name, or a name containing this text"
},
"currency": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "Only needed when the client has documents in more than one currency. Currencies are never added together"
}
}
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}statement_aging — Age the open invoices
Age open invoices into 0-30, 31-60, 61-90 and over 90 days past DUE date at a date, per client and currency, with the invoices themselves. Free. statements_report rolls up the whole book instead.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"as_of": {
"type": "string",
"maxLength": 10,
"description": "Age the invoices as at this date, YYYY-MM-DD. Defaults to today"
},
"limit": {
"type": "integer",
"maximum": 2000,
"minimum": 1,
"description": "Maximum invoice rows returned, default and ceiling 2000"
},
"client": {
"type": "string",
"maxLength": 200,
"description": "One client id or name. Omit to age every client in the books"
},
"currency": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "Only this currency. Omit for every currency, each aged separately"
}
}
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}statement_text — Plain-text statement of account
Turn one client's statement into a plain-text letter for an email: movements in date order, opening and closing balances, deposit held, a sign-off. It is also a .txt download link valid one hour and counts toward the 5 a month; statement_pdf writes the A4 page.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"client",
"from",
"to"
],
"properties": {
"to": {
"type": "string",
"maxLength": 10,
"description": "Last day of the period, YYYY-MM-DD, inclusive"
},
"from": {
"type": "string",
"maxLength": 10,
"description": "First day of the period, YYYY-MM-DD"
},
"as_of": {
"type": "string",
"maxLength": 10,
"description": "Date printed on the statement, YYYY-MM-DD. Defaults to today"
},
"client": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Client id from the invoice server, an exact client name, or a name containing this text"
},
"currency": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "Only needed when the client has documents in more than one currency. Currencies are never added together"
},
"greeting": {
"type": "string",
"maxLength": 4000,
"description": "Opening line, default \"Hello\" and the client name"
},
"sign_off": {
"type": "string",
"maxLength": 4000,
"description": "Closing line, default your business name from the shared profile"
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}statement_pdf — Render the statement of account as a PDF
Call this tool to render one client's A4 statement of account and return a download link valid for one hour. Titled STATEMENT OF ACCOUNT, movements in date order, BALANCE OUTSTANDING at the foot. Pro.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"client",
"from",
"to"
],
"properties": {
"to": {
"type": "string",
"maxLength": 10,
"description": "Last day of the period, YYYY-MM-DD, inclusive"
},
"from": {
"type": "string",
"maxLength": 10,
"description": "First day of the period, YYYY-MM-DD"
},
"as_of": {
"type": "string",
"maxLength": 10,
"description": "Date printed on the statement, YYYY-MM-DD. Defaults to today"
},
"client": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Client id from the invoice server, an exact client name, or a name containing this text"
},
"currency": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "Only needed when the client has documents in more than one currency. Currencies are never added together"
},
"out_path": {
"type": "string",
"description": "Name for the downloaded file, e.g. acme-statement. Defaults to the client, currency and period; the statement comes back as a download link valid for one hour"
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}dunning_text — Write a dunning letter
Write a payment chaser at level 1 friendly, 2 firm or 3 final demand: every OVERDUE invoice with its age, the total and your bank details. Refused if nothing is overdue. No interest is stated. The letter is also a .txt download link valid one hour. Level 3 is Pro.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"client",
"level"
],
"properties": {
"as_of": {
"type": "string",
"maxLength": 10,
"description": "Age the invoices as at this date, YYYY-MM-DD. Defaults to today"
},
"level": {
"type": "integer",
"maximum": 3,
"minimum": 1,
"description": "1 friendly reminder, 2 firm reminder, 3 final demand. Level 3 is Pro"
},
"client": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Client id from the invoice server, an exact client name, or a name containing this text"
},
"currency": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "Only needed when the client has documents in more than one currency. Currencies are never added together"
},
"greeting": {
"type": "string",
"maxLength": 4000,
"description": "Opening line, default \"Hello\" and the client name"
},
"sign_off": {
"type": "string",
"maxLength": 4000,
"description": "Closing line, default your business name from the shared profile"
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}statements_report — What every client owes
Receivables across every client at a date: totals and aging per currency, clients ranked by how much is OVERDUE, and the oldest overdue invoice. Pro. statement_aging is the free per-client view.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"as_of": {
"type": "string",
"maxLength": 10,
"description": "Age the invoices as at this date, YYYY-MM-DD. Defaults to today"
},
"limit": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "How many clients to list, worst first. Default 20"
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}license_status — License status
Report this endpoint's licence state for your token as JSON: the product, the tier free or pro, why it is not Pro, and the checkout URL. Call it to explain a free-tier refusal. No arguments, nothing changes.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}license_activate — Activate license
Turn Pro on for this connection with key, an MCPL1.<payload>.<signature> issued at checkout for this server or the bundle. Data under your token stays; a wrong or expired key changes nothing. license_status confirms it.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"key"
],
"properties": {
"key": {
"type": "string",
"description": "License key from checkout, MCPL1.<payload>.<signature>"
}
}
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}Prompts
2 advertised
upgrade_to_pro — Explain the upgrade
Explain what Pro on the statement-of-account server costs and exactly what the user has to do, without leaving the conversation.
- feature
- The capped feature that prompted this, if there was one
chase_overdue — Chase what is overdue
Age the receivables, decide who to chase and at what level, then write the letters.
Resources
2 advertised
pricing — Pricing and upgrade
What statement-of-account costs, what Pro unlocks, the checkout link that carries this connection's token, and the one step a person has to take. Machine-readable; read it before telling a user how to lift a free-tier cap.
pricing://statement-of-accountsources — Where the statement figures come from
The three sibling stores this server reads, whether each could be read, and how many rows each holds.
statement://sources90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-07: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 635 ms
- 95th percentile latency
- 635 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 635 ms · metadata changed · 8 tool(s), 2 resource(s), 0 resource template(s), 2 prompt(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http statement-of-account-mcp-zovo https://mcp.zovo.one/mcp/statement-of-accountCodex
codex mcp add statement-of-account-mcp-zovo --url https://mcp.zovo.one/mcp/statement-of-accountCursor
{
"mcpServers": {
"statement-of-account-mcp-zovo": {
"url": "https://mcp.zovo.one/mcp/statement-of-account"
}
}
}Cline
{
"mcpServers": {
"statement-of-account-mcp-zovo": {
"type": "streamableHttp",
"url": "https://mcp.zovo.one/mcp/statement-of-account",
"disabled": false
}
}
}VS Code
{
"servers": {
"statement-of-account-mcp-zovo": {
"type": "http",
"url": "https://mcp.zovo.one/mcp/statement-of-account"
}
}
}Gemini CLI
gemini mcp add --transport http statement-of-account-mcp-zovo https://mcp.zovo.one/mcp/statement-of-accountClaude Desktop
https://mcp.zovo.one/mcp/statement-of-accountWindsurf
{
"mcpServers": {
"statement-of-account-mcp-zovo": {
"serverUrl": "https://mcp.zovo.one/mcp/statement-of-account"
}
}
}Let your agent find its tools
Find servers like theluckystrike Statement of Account MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.