io.github.theluckystrike/office-suite-time-invoice-expense-excel-price
MCPB · OFFICE-SUITE.MCPB · SCANNED SEP 21
One MCP server for the whole freelancer office: time tracking, price watching, spreadsheets, PDF.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security22
- Malware scan not yet available for this package.Unverified
- Known CVEs were checked across the 190 of 190 dependencies we could resolve, so this covers what we could see, not the whole tree.Partial
- No install/post-install scripts declared.Pass
- 88 of 190 dependencies flagged as unhealthy (2 deprecated). View diagnostics → Partial
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 3 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability81
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 24098 tokens (~139/item across 173 items; 158 tools + 15 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
- Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage95
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 85% of tool parameters carry a description.Partial
Tool Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 12 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "entry_delete" implies "delete" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
- An AI judge read all 159 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Unverified: 1 category
A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
mcpb · office-suite.mcpb
Download bundleEvery change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 17 Sept 26 46
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 21 Sept 2026 · Analysed mcpb/https://github.com/theluckystrike/mcp-servers/releases/download/v0.22.0/office-suite.mcpb@0.22.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | mcpb |
Background: How many MCP packages publish verified provenance →
Dependencies 190 packages
| Packages resolved | 190 |
|---|---|
| Deprecated | 2 |
| Stale | 88 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
aging_summary Aging summary of what is owed ~87
The aging summary across every unpaid invoice: current, 1-30, 31-60, 61-90 and 91+ day buckets, with counts and totals in integer cents, per currency. This is the answer to "how much am I owed, and how stale is it".
| Name | Type | Req | Description |
|---|---|---|---|
| on | string | – | The date to age against, YYYY-MM-DD. Default today |
No output schema declared.
No examples provided.
alerts_pending Pending alerts ~51
Answer whether anything you watch got cheaper: every watch at or below its target_price, or down 5% or more since the previous observation, with the change %. Reads stored data only: run watch_refresh first.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
asset_add Add a fixed asset ~466
Add one fixed asset to the register and return its id with the rate, useful life and convention taken from the bundled tax table. Cost and residual are whole minor units. Free tier holds ten assets.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | yes | A code or name from the bundled table, e.g. "487" or "Computers and computer sets" (pl), "main" (uk), "5-year" (us). Read assets://categories for the list |
| cost_minor | integer | yes | Acquisition cost in MINOR units (integer cents/grosze), e.g. 549900 for 5499.00. Never a decimal |
| currency | string | – | ISO code. Defaults to the shared business profile currency, else the scheme table currency |
| declining_coefficient | number | – | Declining-balance coefficient. Polish default 2.0, capped by the table; ignored with straight-line |
| in_service_date | string | – | ISO date YYYY-MM-DD the asset entered use and the register. Defaults to purchase_date |
| life_years | number | – | Override the useful life derived from the table, in years. The answer reports that it was an override |
| method | string | – | "straight-line" or "declining-balance". Default: the table row method, straight-line for the Polish annex and the reducing-balance pool rate for the UK |
| name | string | yes | What the asset is, e.g. "MacBook Pro 16" or "Delivery van" |
| note | string | – | – |
| project | string | – | Project, department or cost centre this asset belongs to |
| purchase_date | string | yes | ISO date YYYY-MM-DD the asset was bought |
| rate_pct | number | – | Override the annual percentage derived from the table. Use for a lowered Polish rate under art. 16i |
| residual_minor | integer | – | Residual or salvage value in MINOR units, default 0. Must be less than cost. MACRS ignores it and the answer says so |
| scheme | string | – | "pl" Polish KST annex rates, "uk" HMRC capital allowance pools, "us" IRS MACRS GDS. Omit to derive it from the shared business profile currency |
No output schema declared.
No examples provided.
asset_delete Delete an asset ~77
Remove one asset from the register when nothing depends on it: not disposed of, never journaled. Its free-tier slot is free again. An asset with a dependent is refused and the dependent is named. Free.
| Name | Type | Req | Description |
|---|---|---|---|
| asset | string | yes | Asset id such as ASSET-2026-0001, or an exact or partial name |
No output schema declared.
No examples provided.
asset_dispose Dispose of an asset ~152
Record that an asset left the business on a date and return the gain or loss against net book value. proceeds_minor is in MINOR units. Depreciation stops here, and a second disposal is refused.
| Name | Type | Req | Description |
|---|---|---|---|
| asset | string | yes | Asset id such as ASSET-2026-0001, or an exact or partial name |
| date | string | yes | ISO date YYYY-MM-DD the asset left the business. It cannot be before the in-service date |
| note | string | – | What happened, e.g. sold to a dealer, written off after a fire |
| proceeds_minor | integer | – | Sale proceeds in MINOR units, default 0 for a scrapping or a write-off |
No output schema declared.
No examples provided.
asset_journal Journal the month's depreciation ~157
Return the depreciation journal for one month: debit depreciation expense and credit accumulated depreciation, per asset and in total, plus an expense_add-ready payload per currency. It writes no expense. Pro.
| Name | Type | Req | Description |
|---|---|---|---|
| accumulated_account | string | – | Credit account name. Default "Accumulated depreciation" |
| category | string | – | Expense category to put on the expense_add payload. Default "depreciation" |
| expense_account | string | – | Debit account name. Default "Depreciation expense" |
| month | string | yes | The month to journal, YYYY-MM. A date YYYY-MM-DD is read as its month |
| project | string | – | Only assets on this project or cost centre |
| scheme | string | – | Only assets on this tax scheme |
No output schema declared.
No examples provided.
asset_list List the fixed asset register ~161
List the assets in the register with cost, method, rate and net book value at a date, filtered by scheme, category, project, currency or disposal state. Free and unlimited.
| Name | Type | Req | Description |
|---|---|---|---|
| as_of | string | – | Value the register at this month or date, YYYY-MM or YYYY-MM-DD. Default today |
| category | string | – | Only assets in this table category code or name |
| currency | string | – | Only assets held in this currency |
| include_disposed | boolean | – | Include assets already disposed of. Default false |
| limit | integer | – | Maximum rows, default and ceiling 2000 |
| project | string | – | Only assets on this project or cost centre |
| scheme | string | – | Only assets on this tax scheme |
No output schema declared.
No examples provided.
asset_report Report the register ~143
For one year: net book value by category, scheme and currency at as_of, the year's depreciation charge per currency, and every disposal with its gain or loss. Pro; asset_list and asset_schedule are free per-asset views.
| Name | Type | Req | Description |
|---|---|---|---|
| as_of | string | – | Value the register at this month or date, YYYY-MM or YYYY-MM-DD. Default the last day of the year |
| project | string | – | Only assets on this project or cost centre |
| scheme | string | – | Only assets on this tax scheme |
| year | integer | – | Calendar year to report, e.g. 2026. Default the year of as_of, else this year |
No output schema declared.
No examples provided.
asset_schedule Build a depreciation schedule ~347
Build the depreciation schedule for a stored asset, or price one not in the register, per year or per month, to residual or zero, with the table's rate, life and convention. Periods sum exactly to the base.
| Name | Type | Req | Description |
|---|---|---|---|
| asset | string | – | Asset id such as ASSET-2026-0001, or an exact or partial name. Omit and pass the fields below to price an asset that is not in the register |
| category | string | – | Table category code or name, when pricing an asset that is not in the register |
| cost_minor | integer | – | Cost in MINOR units, when pricing an asset that is not in the register |
| currency | string | – | ISO code, when pricing an asset that is not in the register |
| declining_coefficient | number | – | Declining-balance coefficient; ignored with straight-line |
| granularity | string | – | "year" for one row per period, "month" for the monthly charge. Default "year" |
| in_service_date | string | – | ISO date YYYY-MM-DD the asset entered use. Defaults to purchase_date |
| life_years | number | – | Override the useful life from the table, in years |
| method | string | – | "straight-line" or "declining-balance" |
| purchase_date | string | – | ISO date YYYY-MM-DD, when pricing an asset that is not in the register |
| rate_pct | number | – | Override the annual percentage from the table |
| residual_minor | integer | – | Residual in MINOR units, default 0 |
| scheme | string | – | Scheme, when pricing an asset that is not in the register |
No output schema declared.
No examples provided.
business_days Count business days ~159
Count business days between two dates in a place, inclusive, with the calendar total and the weekend and holiday counts. It has NO holiday calendar: without holidays, only weekends are excluded.
| Name | Type | Req | Description |
|---|---|---|---|
| from | string | yes | Start date, YYYY-MM-DD (inclusive). A date that does not exist, such as 2026-02-30, is refused, never rolled forward |
| holidays | array | – | Dates to exclude, strict YYYY-MM-DD. This tool has no national holiday calendar: unless you pass holidays here only weekends are excluded, so do not report the answer as a public-holiday-adjusted cou… |
| to | string | yes | End date, YYYY-MM-DD (inclusive) |
| zone | string | yes | Place whose calendar to use |
No output schema declared.
No examples provided.
cache_status Rate cache status ~54
Report the ECB rate cache here: which dates are held, how old they are and when they refresh. Reads only. Check it before trusting a rate after time offline; a cache that no longer parses is quarantined and named.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
calendars_list List imported calendars ~54
List imported calendars: name, event-definition count, size, source, import time and free-tier use of the 2 slots. It also names stored .ics files with no calendar row. With none it prints the export steps.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
chase_today What to chase today ~111
The day's chase list: which invoices cross an escalation threshold today, which letter to send each and how long it has been waiting, what falls due in the next few days, and which invoices have had all three letters and need a decision outside this server.
| Name | Type | Req | Description |
|---|---|---|---|
| on | string | – | The date to run the list for, YYYY-MM-DD, e.g. to see what Monday will need. Default today |
| within_days | integer | – | How far ahead to list letters coming due, default 7 days |
No output schema declared.
No examples provided.
clause_add Add a clause ~257
Save a reusable contract or proposal clause to the library. Returns the stored clause id, title, category, tags and the variables detected in its body, plus how many clauses of your own the library now holds.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | yes | The clause text. Use {{variable}} placeholders for the facts that change per client, for example {{client}}, {{fee}} or {{late_fee_percent}}; contract_assemble fills them at assembly time. Free tier:… |
| category | string | yes | Grouping. The known ones, in assembly order, are parties, scope, payment, expenses, ip, confidentiality, data, term, liability, warranty, disputes, general -- reuse one of these; any other name is ac… |
| jurisdiction | string | – | Where the clause is meant to apply, for example 'PL' or 'England and Wales' |
| language | string | – | ISO language code, default en |
| tags | array | – | – |
| title | string | yes | Clause heading, for example 'Late Payment' |
| variables | array | – | Declared variable names. Anything {{...}} in the body is detected anyway |
No output schema declared.
No examples provided.
clause_delete Delete a clause ~62
Delete one clause by id or exact title and report how many are left. There is no undo, and a deleted starter clause is not re-seeded. Use clause_update to change one you want to keep.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Clause id or exact title |
No output schema declared.
No examples provided.
clause_export Export clauses ~119
Call this tool to write the whole library to one file and return the path, format and count. It is written in contract order, so it re-imports the same way. markdown is free; json is Pro.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | yes | json (a Pro feature) or markdown (works in the free tier) |
| overwrite | boolean | – | Replace the destination if a file is already there. Without it an existing file is never touched |
| path | string | yes | Destination file path. The clauses are written in assembly order, categories first |
No output schema declared.
No examples provided.
clause_get Read one clause ~80
Return one clause in full by id or title: body, category, tags, jurisdiction, variables and the revision count, which stays 0 on free. A partial title matching several is refused with the candidates.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | – | Clause id, for example late-fees |
| title | string | – | Clause title; a partial title matches too |
No output schema declared.
No examples provided.
clause_import Import clauses ~145
Call this tool to load clauses from a .md or .json file, reporting added, replaced, skipped and capped counts. A duplicate title is skipped unless overwrite. json is Pro. Free: 10 of your own.
| Name | Type | Req | Description |
|---|---|---|---|
| overwrite | boolean | – | Replace clauses whose title already exists instead of skipping them |
| path | string | yes | Path to a .md or .json file. Markdown form: '## Title', then optional 'category:' / 'tags:' / 'variables:' lines, a blank line, then the body. JSON form: an array of clauses. JSON import is a Pro fea… |
No output schema declared.
No examples provided.
clause_list List clauses ~56
List the library as id, title, category, tags and variables, in contract order by category then title, which is the order contract_assemble uses. Narrow with category; use clause_search for words.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | – | – |
No output schema declared.
No examples provided.
clause_search Search clauses ~112
Ranked search over clause titles, tags, categories and bodies. Title and tag matches outrank body matches. Jurisdiction filtering is free; the tag filter is Pro and is skipped rather than refusing the search.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | – | – |
| jurisdiction | string | – | Exact jurisdiction match. Free |
| query | string | yes | Words to look for, for example 'late payment interest' |
| tags | array | – | Pro: every tag listed must be present. On free the search still runs, without this filter |
No output schema declared.
No examples provided.
clause_update Update a clause ~106
Change the text, category, tags, variables or jurisdiction of a clause. In Pro the previous text is kept as a version; in the free tier the change is applied without history.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | – | – |
| category | string | – | – |
| id | string | yes | Clause id or exact title |
| jurisdiction | string | – | – |
| language | string | – | – |
| tags | array | – | – |
| title | string | – | – |
| variables | array | – | – |
No output schema declared.
No examples provided.
client_add Add a client ~93
Store a client so invoice_create can refer to them by name. Re-adding the same name updates the stored address, email and VAT id; a record identical to a stored one is refused, naming the id that already holds it.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | – | – |
| string | – | – | |
| name | string | yes | – |
| vat_id | string | – | Client VAT id, printed for reverse-charge invoices |
No output schema declared.
No examples provided.
client_delete Delete a client ~62
Delete one stored client that nothing refers to. A client named on any invoice, quote, credit note, purchase order, deposit, statement or schedule is refused with those documents listed.
| Name | Type | Req | Description |
|---|---|---|---|
| client | string | yes | Client name or id, exactly as client_list shows it |
No output schema declared.
No examples provided.
client_list List clients ~49
List every stored client with id, address, email and VAT id. No arguments, and it writes nothing. With none stored it says so: invoice_create also creates a client from the name you pass.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
conflicts Find double bookings ~95
Find double bookings: every PAIR of timed events that overlap, with the minutes they collide, across all calendars unless you name one. Whole-day events are reported apart. Free: 31 days. free_busy shows gaps.
| Name | Type | Req | Description |
|---|---|---|---|
| calendar | string | – | One calendar name; default every imported calendar |
| from | string | yes | First day, YYYY-MM-DD |
| to | string | yes | Last day, YYYY-MM-DD, included |
No output schema declared.
No examples provided.
contacts_list List saved contacts ~44
List saved contacts with their zone, local time now, working hours and whether they are inside them; weekends count as outside. It also prints YOUR zone from the shared business profile.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
contacts_set Save a contact's zone ~107
Save one person's zone and working hours so later calls can name them. Returns the resolved zone and their local time now. Saving the same name REPLACES that contact and says so. Free: 5 contacts.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Their name |
| work_end | string | – | Local day end, default 17:00 |
| work_start | string | – | Local day start, default 09:00 |
| zone | string | yes | Their place or IANA zone |
No output schema declared.
No examples provided.
contract_assemble Assemble a contract ~295
Call this tool to build a contract from library clauses as .docx or markdown. A variable you omit stays as a bracketed prompt, never invented. clause_ids order is document order. Free: 8 clauses.
| Name | Type | Req | Description |
|---|---|---|---|
| categories | array | – | Instead of ids: every clause in these categories, ordered by category. Free tier: up to 8 clauses per document |
| clause_ids | array | – | Clause ids in the order they should appear; this is the document order. Free tier: up to 8 clauses per document |
| client | string | – | Client name; also fills the {{client}} variable |
| format | string | – | docx (default) or markdown; the document opens with the not-legal-advice line either way |
| out_path | string | – | Where to write the file. Default: the server data directory, under a name built from the client and the title |
| overwrite | boolean | – | Replace out_path if a file is already there. Without it an existing file is never touched |
| title | string | yes | Document title, for example 'Service Agreement - Beta Corp' |
| values | object | – | Values for the {{variables}} in the chosen clauses, for example {"fee":"4500","late_fee_percent":"2"}. Any variable you leave out stays in the document as a bracketed prompt such as [late fee percent… |
No output schema declared.
No examples provided.
contract_create Create a service agreement ~229
Call this tool to produce a freelance service agreement .docx. Returns the reference, the fee and the file path. It is a template skeleton for a lawyer to review, not legal advice. Free tier: 3 agreements per month.
| Name | Type | Req | Description |
|---|---|---|---|
| clauses | array | – | Extra clauses to append, one paragraph each |
| client | string | yes | The client's legal name |
| end_date | string | – | YYYY-MM-DD, omit for an open-ended engagement |
| fee | object | yes | – |
| governing_law | string | – | e.g. 'the laws of Poland' |
| out_path | string | – | Where to write the .docx. Defaults to the data directory |
| overwrite | boolean | – | Replace out_path if a file is already there. Default false: an existing file is never overwritten |
| services | string | yes | What you will do, one or two sentences. The document adds parties, term, fee and schedule, plus standard clauses on intellectual property, confidentiality, independent contractor status, liability, t… |
| start_date | string | yes | YYYY-MM-DD |
No output schema declared.
No examples provided.
convert Convert an amount ~244
Call this tool to convert an amount between any two ECB-quoted currencies, today or on a past date. Returns the converted amount, the cross rate to 6 decimals, the rounding applied and the rate date used.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | number | yes | Amount in major units of the from currency, e.g. 100 or 12.34 |
| date | string | – | ISO date YYYY-MM-DD. Omit for the latest published rate. A weekend or TARGET holiday falls back to the last rate published on or before it, and the answer says so. A date older than the free 90-day w… |
| from | string | yes | Currency the amount is in. Cross rates go through the euro, the only pair the ECB publishes |
| to | string | – | Currency to convert into; defaults to the shared business profile's default_currency, so you are never asked what currency you invoice in. The result is rounded once, at the end, to this currency's o… |
No output schema declared.
No examples provided.
convert_many Convert one amount into several currencies ~69
Convert one amount into many currencies off the SAME ECB rate date, each rounded to its own minor units. A target the ECB does not quote is listed as unknown rather than failing the call.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | number | yes | – |
| from | string | yes | – |
| to | array | yes | Target currencies |
No output schema declared.
No examples provided.
convert_time Convert a time between zones ~213
Convert one time from from_zone into every zone in to_zones, marking any day change, plus the UTC instant. The time is wall-clock in from_zone unless it carries an offset or a trailing Z. '3pm tomorrow' works.
| Name | Type | Req | Description |
|---|---|---|---|
| fold | string | – | Which occurrence of a time that happens twice because the clocks went back. Default 'first'. |
| from_zone | string | yes | Place the time is given in, e.g. 'Warsaw' or 'Europe/Warsaw' |
| gap | string | – | What to do with a time that does not exist because the clocks jumped forward: 'forward' takes the time after the jump, 'backward' the time before it. Without this, such a time is refused. |
| time | string | yes | '2026-09-10 15:00', '2026-09-10T15:00:00Z', '3pm tomorrow', 'now' |
| to_zones | array | yes | Places to convert into |
No output schema declared.
No examples provided.
cover_letter_create Write a cover letter .docx ~228
Call this tool to write a one-page cover letter .docx from the stored profile and return the path, word count and bracketed prompts. Nothing from the posting is restated as yours. Free: 3 a month.
| Name | Type | Req | Description |
|---|---|---|---|
| company | string | yes | – |
| highlights | array | – | Points to lead with. Each is checked against the profile; anything not found there is returned as a bracketed prompt, not printed as fact. |
| hiring_manager | string | – | – |
| job_description | string | – | Paste the posting. Used only to pick which of your own skills to lead with; no figure from the posting is ever restated as yours. |
| out_path | string | – | Where to write the .docx. Defaults to <data dir>/documents/<company>-<role>-cover-letter.docx, numbered -2, -3, ... if that exists. |
| overwrite | boolean | – | Replace an existing file at out_path. Default false: the call fails and nothing is written. |
| role | string | yes | – |
| tone | string | – | Default "formal". |
No output schema declared.
No examples provided.
credit_note_create Issue a credit note ~282
Issue a credit note against an invoice, or standalone: the recipient, the reason (returned goods, overcharge, discount correction, service issue, other), line items with quantity, unit price and tax rate, and the currency. Returns a draft you can still revise; credit_note_finalize burns the final CN number.
| Name | Type | Req | Description |
|---|---|---|---|
| currency | string | yes | ISO code the credit is in |
| duplicate_ok | boolean | – | Create it even though an identical draft or note exists, for a genuinely repeated credit. Default false |
| invoice_ref | string | – | The invoice this credits, e.g. INV-2026-0042. Omit for a standalone credit |
| issue_date | string | – | The date the credit is issued, YYYY-MM-DD. Default today; a future date is refused |
| lines | array | yes | What is being credited, line by line |
| notes | string | – | Text printed at the foot of the document, e.g. how the credit will be settled |
| reason | string | yes | Why the credit is issued: returned_goods, overcharge, discount_correction, service_issue or other |
| reason_detail | string | – | One line of specifics, e.g. Client was billed 10 seats, used 7 |
| recipient | string | yes | Who the credit is for, e.g. Acme GmbH |
No output schema declared.
No examples provided.
credit_note_delete Delete a draft credit note ~74
Delete a draft credit note entered wrongly, by its draft id. A finalized note is refused by name: it is a document the client may have seen, and deleting it would leave their copy pointing at nothing.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The draft id, e.g. CN-DRAFT-2026-0001 |
No output schema declared.
No examples provided.
credit_note_finalize Finalize a credit note ~90
Finalize a draft: burn the final CN-YYYY-NNNN number and freeze the note. From here it cannot be edited or deleted, only rendered and listed, because it is now the document the client sees. Free tier: 10 finalized credit notes; Pro removes the limit.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The draft id, e.g. CN-DRAFT-2026-0001 |
No output schema declared.
No examples provided.
credit_note_get Read one credit note in full ~90
Return one credit note by its CN number or draft id: every line with quantity, unit price and tax, the totals per tax rate, the reason, the invoice it credits, and the notes. Reads only; use credit_note_list for the ids.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The credit note number CN-2026-0001 or draft id CN-DRAFT-2026-0001 |
No output schema declared.
No examples provided.
credit_note_list List credit notes ~156
List credit notes: number or draft id, recipient, reason, status, issue date and total. Filter by recipient (a part of the name is enough), by reason, by status draft or final, and by issue-date period with from and to.
| Name | Type | Req | Description |
|---|---|---|---|
| from | string | – | First issue date to include, YYYY-MM-DD |
| limit | integer | – | Maximum notes listed, default and ceiling 2000 |
| reason | string | – | Only notes with this reason |
| recipient | string | – | Match the recipient, case-insensitive, a part of the name is enough |
| status | string | – | Only drafts or only finalized notes |
| to | string | – | Last issue date to include, YYYY-MM-DD |
No output schema declared.
No examples provided.
credit_note_render Render a credit note as Markdown or printable HTML ~121
Turn a credit note into the document: Markdown to paste into an email or ticket, or a self-contained printable HTML page with every style inline. Drafts render with a DRAFT banner so a half-finished credit cannot be sent by mistake. Writes nothing. Free; the free tier stamps a one-line footer.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | markdown (default) or html, a self-contained printable page |
| id | string | yes | The credit note number CN-2026-0001 or draft id CN-DRAFT-2026-0001 |
No output schema declared.
No examples provided.
credit_note_summary Total credited by period, currency and reason ~96
How much you have credited: totals per currency over finalized credit notes, broken down by reason and by month, in an optional issue-date period. Drafts count for nothing until they are finalized. Currencies are never added together.
| Name | Type | Req | Description |
|---|---|---|---|
| from | string | – | First issue date to include, YYYY-MM-DD. Default: the beginning |
| to | string | – | Last issue date to include, YYYY-MM-DD. Default: today |
No output schema declared.
No examples provided.
credit_note_update Revise a draft credit note ~194
Change a draft credit note while it is still a draft: recipient, reason, lines, currency, invoice reference, issue date or notes. Pass only what changes; new lines replace all old ones. A finalized note is immutable and is refused by name.
| Name | Type | Req | Description |
|---|---|---|---|
| currency | string | – | ISO code. Changing it reprices nothing: the stored minor units carry over, so only change it to fix a wrong currency |
| id | string | yes | The draft id, e.g. CN-DRAFT-2026-0001 |
| invoice_ref | – | – | New invoice reference, or null to detach the note from its invoice |
| issue_date | string | – | – |
| lines | array | – | The full new line set, replacing every existing line |
| notes | – | – | New notes text, or null to remove the notes |
| reason | string | – | – |
| reason_detail | – | – | – |
| recipient | string | – | – |
No output schema declared.
No examples provided.
currencies_list Currencies the ECB quotes ~48
Every currency in the ECB daily set with its rate against the euro and its decimal places. This is the whole domain: a code not on this list cannot be converted, quoted or historised here.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
doc_create Create a Word document ~213
Call this tool to write a real .docx file from structured sections. Returns the file path, the number of blocks written and the layout used. Free and unlimited.
| Name | Type | Req | Description |
|---|---|---|---|
| date | string | – | Date line for the letter layout, default today |
| out_path | string | – | Where to write the .docx. Defaults to the data directory |
| overwrite | boolean | – | Replace out_path if a file is already there. Default false: an existing file is never overwritten |
| recipient | string | – | Addressee block for the letter layout |
| sections | array | yes | Sections in order. Each one may carry a heading, paragraphs, a bullet or numbered list and a table |
| style | string | – | Layout, default plain. plain is the title and the body; letter adds a sender block top right, a date and the addressee; proposal adds a letterhead band and a cover title |
| title | string | yes | Document title, used as the top heading and the file name |
No output schema declared.
No examples provided.
doc_fill_template Fill a Word template ~200
Call this tool to replace {{placeholders}} in a .docx and write a new file, reporting what was filled, unfilled or ignored. Call it with no values to list them. Free: templates up to 10 placeholders.
| Name | Type | Req | Description |
|---|---|---|---|
| out_path | string | – | Where to write the filled .docx. Defaults to <template>-filled.docx |
| overwrite | boolean | – | Replace out_path if a file is already there. Default false: an existing file is never overwritten |
| template_path | string | yes | Path to the .docx template containing {{placeholders}}. Every style, table, header, footer and image of the original is kept. Placeholders split across runs by Word's editor are handled, because the… |
| values | object | – | Placeholder name to value, e.g. {client: "Acme", fee: "EUR 4,500.00"} |
No output schema declared.
No examples provided.
doc_from_markdown Markdown to Word ~182
Call this tool to turn markdown into a .docx, returning the file and a count of blocks by type. Headings, lists, GFM tables and code fences are honoured. Empty markdown is refused, and so is overwriting without the flag.
| Name | Type | Req | Description |
|---|---|---|---|
| markdown | string | yes | The markdown source. ATX headings, paragraphs, bullet and numbered lists, GFM pipe tables and fenced code blocks as monospace are honoured, as are **bold**, *italic* and `code` inline |
| out_path | string | – | Where to write the .docx. Defaults to the data directory |
| overwrite | boolean | – | Replace out_path if a file is already there. Default false: an existing file is never overwritten |
| style | string | – | – |
| title | string | – | Document title; defaults to the first heading in the markdown |
No output schema declared.
No examples provided.
doc_read Read a Word document ~119
Call this tool to extract the text of an existing .docx. Returns an outline of the headings and the full text in document order, or the block structure. Free and unlimited.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | text (default) returns the readable text, json returns the block structure: headings with their levels, paragraphs, list items and tables, in document order |
| path | string | yes | Path to the .docx file. Files produced by Word, Google Docs or this server all work; legacy .doc and .rtf do not |
No output schema declared.
No examples provided.
doc_to_html Word document to HTML ~138
Call this tool to convert a .docx to semantic HTML you can open in a browser and print to PDF. Returns the path of the .html file. This is the supported PDF route; no PDF is rendered here. Free and unlimited.
| Name | Type | Req | Description |
|---|---|---|---|
| out_path | string | – | Where to write the .html. Defaults next to the source file. Open the result and print it to PDF; direct PDF output is not offered here |
| overwrite | boolean | – | Replace out_path if a file is already there. Default false: an existing file is never overwritten |
| path | string | yes | Path to the .docx file to convert |
No output schema declared.
No examples provided.
docx_business_set Set your business details ~401
Store the sender details printed on every proposal, contract and letter, plus the currency, VAT, terms and prefix defaults. It writes the SAME shared profile as the invoice server's business_set.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | – | Postal address, newlines allowed |
| bank | string | – | Bank name / BIC |
| brand_color | string | – | Letterhead colour as a hex code, e.g. 1F3864 (Pro) |
| default_currency | string | – | ISO code, e.g. EUR, USD. Default EUR |
| default_tax_rate | number | – | Default VAT percent, quoted on proposals |
| string | – | Your own email address, printed on every letterhead. Leave it out unless the user gave it: a document that shows an address nobody supplied is worse than one that shows [add: email] | |
| iban | string | – | IBAN or account number for payment |
| invoice_prefix | string | – | Reference prefix used by mcp-invoice; this profile has the same field shape as mcp-invoice, so one profile serves both |
| logo_path | string | – | Path to a PNG or JPG logo for the letterhead (Pro) |
| name | string | yes | Your business or freelancer name, printed on the letterhead of every proposal, contract and letter |
| payment_terms_days | number | – | Default days until payment is due. Default 14 |
| phone | string | – | Your own phone number. Same rule as email: only if the user gave it |
| tax_rate | number | – | Alias for default_tax_rate |
| timezone | string | – | IANA zone you work in, e.g. Europe/Warsaw. Shared with time-tracker and timezone as your home zone |
| vat | number | – | Alias for default_tax_rate |
| vat_id | string | – | VAT / tax registration id |
| vat_rate | number | – | Alias for default_tax_rate |
No output schema declared.
No examples provided.
dst_changes Daylight-saving changes ~73
The clock changes in a place for a year, with the exact UTC instant and the offset before and after. Use it to check whether a recurring call moves for one of you in March or October.
| Name | Type | Req | Description |
|---|---|---|---|
| year | integer | – | Calendar year, default this year |
| zone | string | yes | Place or IANA zone |
No output schema declared.
No examples provided.
entry_add Add time entry ~252
Log time already worked as one entry and return its id, duration and amount. Give start plus end or minutes. rate is hourly in MAJOR units and is frozen on the entry, so a later rate change never moves it.
| Name | Type | Req | Description |
|---|---|---|---|
| billable | boolean | – | Default true; set false for non-billable work |
| currency | string | – | Currency of the rate: EUR, USD, GBP, PLN, or words like 'euros'. Defaults to the project currency, else USD. |
| end | string | – | ISO 8601 end time (or use minutes) |
| minutes | number | – | Duration in minutes (alternative to end) |
| note | string | – | Optional note |
| project | string | yes | Project or client name. A partial name that matches exactly one existing project is used as that project. |
| rate | – | – | Hourly rate for this entry; a number (90) or the words the user said ('90 euros an hour') |
| start | string | yes | ISO 8601 start time, e.g. 2026-09-02T09:00:00 |
| tags | array | – | Optional tags |
| task | string | – | What the work was |
No output schema declared.
No examples provided.
What is the io.github.theluckystrike/office-suite-time-invoice-expense… MCP server?
io.github.theluckystrike/office-suite-time-invoice-expense… is an MCP server listed in the public MCP registry as io.github.theluckystrike/office-suite-time-invoice-expense…. One MCP server for the whole freelancer office: time tracking, price watching, spreadsheets, PDF. This page covers its MCPB bundle (https://github.com/theluckystrike/mcp-servers/releases/download/v0.22.0/office-suite.mcpb).
Is the io.github.theluckystrike/office-suite-time-invoice-expense… MCP server safe to use?
io.github.theluckystrike/office-suite-time-invoice-expense… scores 46 out of 100 on VerifyMCP. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the io.github.theluckystrike/office-suite-time-invoice-expense… MCP server expose?
io.github.theluckystrike/office-suite-time-invoice-expense… exposes 158 tools: timer_start, timer_stop, timer_status, entry_add, entry_list, and 153 more. Their descriptions and schemas cost roughly 23,736 tokens of context every time the server is loaded.
What licence is the io.github.theluckystrike/office-suite-time-invoice-expense… MCP server under?
io.github.theluckystrike/office-suite-time-invoice-expense… declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.