[Cotlet](https://cotlet.dev/index.md) · [Integrations](https://cotlet.dev/integrations.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Use cases](https://cotlet.dev/use-cases.md) · [Security](https://cotlet.dev/security.md) · [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md) · [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [Contact](https://cotlet.dev/contact.md) · [Pricing](https://cotlet.dev/pricing.md) · [Sign up](https://cotlet.dev/signup)

# Pennylane MCP tools

> The Pennylane MCP tools on the Cotlet server: every operation with its input schema, a tools/call example and an example result.

Source: https://cotlet.dev/docs/mcp/pennylane

Docs sections: [Get started](https://cotlet.dev/docs.md) · [REST API](https://cotlet.dev/docs/api.md) · [MCP](https://cotlet.dev/docs/mcp.md) · [SDKs & CLI](https://cotlet.dev/docs/sdks.md) · [Integrations](https://cotlet.dev/docs/integrations.md)

Pennylane has 14 operations on the Cotlet MCP server, in pennylane_read and pennylane_write. Your agent picks one in `operation`; the tool carries each operation's input schema. Open an operation for its schema and an example call.

- MCP server: `https://cotlet.dev/mcp/v1`
- MCP tools: `pennylane_read`, `pennylane_write`
- Connects with: Your own Pennylane user, with access to invoicing, bank transactions and categories
- Integration page: https://cotlet.dev/integrations/pennylane-api-mcp-server

## Read

Return data and change nothing in the account.

| Operation | Description |
|---|---|
| [`list_customers`](https://cotlet.dev/docs/mcp/pennylane/list_customers.md) | Customers in your Pennylane account with name, type and email, optionally filtered by name. |
| [`list_customer_invoices`](https://cotlet.dev/docs/mcp/pennylane/list_customer_invoices.md) | Customer invoices with number, customer, amounts, status and due date, newest first. |
| [`get_customer_invoice`](https://cotlet.dev/docs/mcp/pennylane/get_customer_invoice.md) | One customer invoice with its lines, payments and matched bank transactions. |
| [`list_supplier_invoices`](https://cotlet.dev/docs/mcp/pennylane/list_supplier_invoices.md) | Supplier invoices with number, supplier, amounts and due date, newest first. |
| [`list_suppliers`](https://cotlet.dev/docs/mcp/pennylane/list_suppliers.md) | Suppliers in your Pennylane account with name and ID, optionally filtered by name. |
| [`list_transactions`](https://cotlet.dev/docs/mcp/pennylane/list_transactions.md) | Bank transactions with date, label, amount, categories and matched invoices, newest first. |
| [`list_categories`](https://cotlet.dev/docs/mcp/pennylane/list_categories.md) | Categories you use to analyse transactions and invoices, with their group and direction. |

## Write

Change the account. Calls marked Confirm wait for the user to approve them.

| Operation | Description |
|---|---|
| [`create_customer`](https://cotlet.dev/docs/mcp/pennylane/create_customer.md) (Confirm) | Add a company or individual customer to your Pennylane customer list. |
| [`create_customer_invoice`](https://cotlet.dev/docs/mcp/pennylane/create_customer_invoice.md) (Confirm) | Create an invoice for a customer, as a draft by default. |
| [`finalize_customer_invoice`](https://cotlet.dev/docs/mcp/pennylane/finalize_customer_invoice.md) (Confirm) | Turn a draft invoice into a final one with an invoice number. |
| [`send_customer_invoice`](https://cotlet.dev/docs/mcp/pennylane/send_customer_invoice.md) (Confirm) | Email a customer invoice to the customer or to the addresses you give. |
| [`import_supplier_invoice`](https://cotlet.dev/docs/mcp/pennylane/import_supplier_invoice.md) (Confirm) | Upload a supplier invoice PDF with its date, due date and amounts. |
| [`categorise_transaction`](https://cotlet.dev/docs/mcp/pennylane/categorise_transaction.md) | Set the categories of a bank transaction, with a weight for each. |
| [`match_transaction`](https://cotlet.dev/docs/mcp/pennylane/match_transaction.md) (Confirm) | Link a bank transaction to a customer invoice as its payment. |

---

Give your AI agents your signed-in browser.

**Product:** [Integrations](https://cotlet.dev/integrations.md) · [Use cases](https://cotlet.dev/use-cases.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Pricing](https://cotlet.dev/pricing.md) · [Security](https://cotlet.dev/security.md)

**Resources:** [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [GitHub](https://github.com/cotletdev/cotlet)

**Solutions:** [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md)

**Company:** [About](https://cotlet.dev/about.md) · [AI info: company facts](https://cotlet.dev/ai-info.md) · [Contact](https://cotlet.dev/contact.md)

**Legal:** [Terms of service](https://cotlet.dev/terms) · [Privacy policy](https://cotlet.dev/privacy) · [Refund policy](https://cotlet.dev/refunds) · [Acceptable use](https://cotlet.dev/acceptable-use) · [Cookie policy](https://cotlet.dev/cookies) · [DPA](https://cotlet.dev/dpa) · [Subprocessors](https://cotlet.dev/subprocessors)

**Elsewhere:** [Status page](https://status.cotlet.dev) · [Cotlet on GitHub](https://github.com/cotletdev) · [Cotlet on X](https://x.com/cotletdev) · [Cotlet on LinkedIn](https://www.linkedin.com/company/cotletdev) · [Cotlet on Product Hunt](https://www.producthunt.com/products/cotlet) · [Cotlet on Crunchbase](https://www.crunchbase.com/organization/cotlet) · [Cotlet on SaaSHub](https://www.saashub.com/cotlet)

Cotlet is an independent service. It is not affiliated with, endorsed by or sponsored by any of the products listed on this site. Product names are trademarks of their respective owners.

## For AI agents: sign your user up

Is your user asking you to sign them up for Cotlet? You can do it for them, no account or key needed.

1. Read the fields and their allowed values: GET https://cotlet.dev/api/v1/access-requests
2. Ask the user for each value: email, apps, what you will do with them. If they leave the password to you, generate a strong one and show it to them.
3. Show the user what you will send, then POST it as JSON to https://cotlet.dev/api/v1/access-requests.

One call creates the account and sends the access request; we email the user when access is granted.
