A couple of months ago we finished exposing our SaaS through an MCP server. It now has 118 tools across 12 domains. I want to show what an AI actually does with all of that, because it's not really what we designed for.
PaperLink is a document-sharing and accounting SaaS. You connect Claude, ChatGPT, or any MCP client with one command and start talking to your data. Five examples from real conversations.
1. A receipt photo becomes 6 categorized transactions
Someone snaps a photo of a coffee-shop receipt. The AI reads six line items, calls create-transactions once with all six in a batch, assigns categories, and asks for confirmation before it saves anything. One tool call instead of six form submissions.
2. "Show me invoices stuck in SENT for 30+ days"
We built list-invoices so the UI could show a list of invoices. It takes filters as arguments, and those filters ended up doing more than we expected.
The AI composed a query we never built a UI for: status=SENT, sent over 30 days ago, status history never transitioned to OVERDUE. Five invoices came back that should have auto-transitioned and didn't. That's a bug we had been shipping without noticing.
3. "Upload this contract, password-protect it, expire Friday"
Three tools run from one sentence:
-
create-file-from-sourceuploads the file -
create-linkgenerates the protected share link -
update-linksets the expiration date
The AI chains them, then asks "who should get access?" before sending.
4. "Transfer $500 from Wise to Mono"
Two accounts, different currencies. The AI calls get-exchange-rates, works out the destination amount, then calls create-transfer with both amounts paired and waits for confirmation. A transfer that takes about 45 seconds on a form takes roughly 10 seconds to type.
5. "Who actually read my proposal?"
The AI runs get-link-analytics, then get-top-viewers, then get-page-heatmap, and summarizes: "3 of 5 recipients opened it. One spent 6 minutes on the pricing page. The others skimmed." You get the answer without opening a dashboard.
The full map
| Domain | Tools | Examples |
|---|---|---|
| Accounting & transactions | 20 |
create-transaction, create-transfer, get-category-breakdown
|
| Files & folders | 14 |
upload-file-from-url, create-folder, archive-file
|
| Clients & companies | 14 |
create-client, create-company, archive-company
|
| Document sharing & analytics | 12 |
create-link, get-page-heatmap, get-top-viewers
|
| Invoicing & payments | 12 |
create-invoice, record-invoice-payment, change-invoice-status
|
| Categories & accounts | 10 |
create-category, create-financial-account
|
| Estimates | 8 |
create-estimate, convert-estimate-to-invoice
|
| Products & services | 7 |
create-product, update-product
|
| Recurring transactions | 7 |
create-recurring-transaction, get-recurring-forecast
|
| Team & permissions | 6 |
invite-member, change-member-role
|
| Currency & exchange | 6 |
get-exchange-rates, add-team-currency
|
| AI insights & billing | 5 |
generate-document-insight, get-subscription-info
|
Read, write, and delete tools live in separate files so OAuth scopes can stay granular.
Try it in 10 seconds
Sign up for a free account, then run:
claude mcp add --transport http paperlink https://mcp.paperlink.online/api/mcp/mcp
The server is remote, so you get an OAuth consent screen with a team picker and scope checkboxes. Disconnect anytime from the app.
Next post: how we organized 118 tools across 19 files without writing the same boilerplate 118 times.
Top comments (0)