# Tazzen Agent Catalogue > Tazzen is an ecosystem of productivity apps that expose tools to AI agents via MCP and REST. This document enumerates every connectable agent and every Tazzen app's tool catalogue. ## Agents ## Tazzen apps ### Tazzen Sales - MCP endpoint: https://sales.tazzen.com/mcp - REST base: https://sales.tazzen.com - Tools: - sales-create-quotation — Create a new draft quotation for a client. Required: quotation_number, client_id, amount, total_amount, issue_date (YYYY-MM-DD), valid_until (YYYY-MM-DD, must be on or after issue_date). Optional: tax_amount, description, notes, currency (default EUR), is_reverse_charge. (requires scope: sales:write) - sales-get-audit-log — Returns audit-log entries for one record (invoice, quotation, client or lead). Each entry shows who changed which fields when. Use this to verify autonomous edits or trace history. (requires scope: sales:read) - sales-get-quotation — Fetch a single quotation by id, including its line items. (requires scope: sales:read) - sales-list-invoices — List the user's invoices. Optionally filter by client_id or status (draft/sent/paid/overdue/cancelled). Returns the 25 most recent matches by issue_date desc. (requires scope: sales:read) - sales-list-quotations — List the user's quotations. Optionally filter by client_id or status (draft/sent/accepted/rejected/expired). Returns the 25 most recent matches by issue_date desc. (requires scope: sales:read) - sales-record-payment — Record a client payment against an invoice. Required: invoice_id, amount (must not exceed remaining balance), payment_date (YYYY-MM-DD). Optional: payment_method, notes. Fires the PaymentRecorded event so the Sales→Summa outbox sync flips the linked Income to paid. (requires scope: sales:write, destructive) - sales-send-quotation — Mark a quotation as sent. Transitions status to "sent" and issues a portal token so the client can view the quotation online. Re-sending preserves the existing portal token. (requires scope: sales:write, destructive) ### Tazzen summa - MCP endpoint: https://summa.tazzen.com/mcp - REST base: https://summa.tazzen.com - Tools: - summa-get-audit-log — Returns audit-log entries for one Summa record (income, expense, transaction, relation, company, investment). Each entry shows who changed which fields when. Use this to verify autonomous edits or trace history. (requires scope: summa:read) - summa-list-income — List the user's invoices (income). Optionally filter by fiscal_year_id, quarter (1-4), or relation_id. Returns the 25 most recent matches by invoice_date desc. (requires scope: summa:read) - summa-lock-fiscal-year — Lock or unlock a fiscal year. Locked years are immutable — no income, expense, investment, or transaction can be created, updated, or deleted in that year. Toggle by calling repeatedly; the response indicates the new state. (requires scope: summa:write, destructive) - summa-log-expense — Log a business expense. Required: relation_id (supplier), invoice_date (YYYY-MM-DD), invoice_number, description, net_amount, vat_rate (0/9/21). Optional: location_type (domestic/eu/non_eu, default domestic), vat_treatment (standard/exempt/out_of_scope, default standard), reverse_charge_vat (bool, EU/non_eu only). Fiscal year is auto-resolved from invoice_date. (requires scope: summa:write) - summa-scan-receipt — Parse the raw OCR'd text of a receipt or invoice into structured fields (vendor_name, vat_id, address, email, iban, description, invoice_number, date, net_amount, vat_amount, vat_rate, total_amount, location_type). Read-only — does not create an expense. The MCP client is expected to OCR the image locally (vision-capable models like Claude/GPT-4o can do this in one shot) and pass the resulting text. To then log the parsed result as an expense, follow up with summa-log-expense. (requires scope: summa:read) - summa-vat-summary — Get the Dutch BTW (VAT) summary for a fiscal year. Without quarter (1-4): returns the yearly summary including every quarter. With quarter: returns just that quarter's breakdown by BTW box (1a/1b/1e/3a/3b/4a/4b/5a/5b/5c/5d/5e). (requires scope: summa:read) ### Tazzen Ticker - MCP endpoint: https://ticker.tazzen.com/mcp - REST base: https://ticker.tazzen.com - Tools: - complete-quest — Mark a quest complete for today (only works once per day). Increments the user's streak counter. Returns the new streak count. (requires scope: quests:write, destructive) - create-quest — Create a daily HABIT for the user — an aspirational behavior that builds a streak (e.g. 'drink water', 'meditate'). For recurring tasks WITHOUT streak pressure (e.g. 'take out trash weekly'), use create-todo with an rrule instead. (requires scope: quests:write) - create-todo — Create a todo for the user. One-shot todo: due_date only. Recurring todo (no streak pressure): rrule + rrule_start. For streak-bearing daily habits use create-quest instead. (requires scope: todos:write) - delete-todo — Permanently delete a todo by id. This cannot be undone. Confirm with the user before calling. (requires scope: todos:write, destructive) - get-pending-todos — Get the user's incomplete todos, optionally filtered to overdue ones only. Returns up to 20 results sorted by due date. (requires scope: todos:read) - get-today-quests — Get the user's quests scheduled for today, with completion status and streak counts. (requires scope: quests:read) - toggle-todo — Toggle a todo between completed and incomplete by id. Returns the new completed_at timestamp (or null if uncompleted). (requires scope: todos:write, destructive) - update-todo — Update mutable fields on an existing todo by id: title, description, due_date. Only the provided fields are updated; omitted fields stay as-is. To complete or uncomplete, use toggle-todo instead. (requires scope: todos:write, destructive)