paper-invoice-mcp (igun997/paper-invoice-mcp) is an MCP server listed on the M8ven Trust Index. It scores 54 out of 100, grade D. It declares 72 tools. No publisher has claimed this listing.

D
Caution
54/100

paper-invoice-mcp

MCP server for Paper.id Indonesian invoicing and accounting platform, providing 31 tools for partner and invoice management, QRIS payments, and reporting with automatic token refresh.

Caution. Specific findings reduced this grade. They are listed on the page. Grades reflect the full trust pyramid: code, verification depth, and reputation. New projects cap at C until adoption is earned.

How we verified

Code Verified⚡ Live Monitored: not connected

Verified is a snapshot. Live keeps it current, and builds your track record.

⚡ Connect GitHub → continuous verification on every pushwhy connect →

Who stands behind it

igun997

Source: Glama

Is this your MCP?

Claim it to get a verified publisher badge, a free copy of our full audit findings, and direct contact for any high-priority issues we find. Or connect your repo for our deepest verification, Live Monitored: read-only, revoke anytime. What we access →

Install from

The grade above is for the source repository. Registries can serve a different version, so we mark the ones we were not able to read.

// key findings
🚨
Known vulnerabilities in dependencies: 2 critical, 14 high
Affects packages this MCP installs at runtime. Upgrade or remove the affected dependency.
🔐
You'll be asked for 2 credentials: PAPERID_PASSWORD, PAPERID_TOKEN
These are read from process.env at runtime. Make sure you trust where they’ll be sent.
// tools this server exposes72 tools

These names and descriptions are the publisher's own, read from the source code. We print them as written. Our assessment is the findings above, not this list.

paperid_refresh_token

Re-login and refresh the JWT token stored in SQLite. Uses PAPERID_PHONE + PAPERID_PASSWORD from env, or pass credentials directly.

paperid_get_token_info

Get current token metadata from SQLite (expiry, user_id, company_id). Does not expose the raw token.

paperid_login

Login to Paper.id with phone and password

paperid_get_current_user

Get current authenticated user information

paperid_get_company

Get company details

paperid_get_sales_invoices

Get sales invoices with filters and pagination

paperid_get_partners

Get partners/clients list

paperid_get_account_receivable

Get account receivable insights (unpaid, partially paid, overdue)

paperid_get_account_payable

Get account payable insights

paperid_get_profit_loss

Get profit and loss report

paperid_get_kyc_status

Get KYC verification status

paperid_get_user_package

Get user subscription package info

paperid_get_onboarding_status

Get company onboarding completion status

paperid_get_referral_link

Get user referral code and link

paperid_get_notifications

Get user notifications

paperid_get_dashboard_todos

Get dashboard to-do list

paperid_get_banners

Get promotional banners

paperid_get_payment_number

Get next auto-generated payment number (e.g. PYI/2026/0010)

paperid_get_finance_accounts

Get all finance accounts (bank + cash) used in payment form dropdown

paperid_get_payment_methods

Get payment methods list with UUIDs (Bank Transfer, Cash, Credit Card, etc.)

paperid_create_payment

Create a payment receipt (Kuitansi Penjualan) for one or more invoices

paperid_get_payments

List payment receipts (Kuitansi Penjualan) with filters and pagination

paperid_get_payment_pdf

Get payment receipt PDF data

paperid_send_payment

Send payment receipt via WhatsApp, Email, or SMS

paperid_delete_payment

Delete a payment receipt by UUID

paperid_get_paperpay_balance

Get PaperPay In balance (Saldo Aktif, Dana Sedang Diproses, credit/debit totals)

paperid_get_digital_payment_transactions

List PaperPay In digital payment transactions (reconcile/all). Includes QRIS, Credit Card, Bank Transfer, e-wallet payments.

paperid_get_products

List products (Produk & Stok). POST /api/v1/inventory/products/all

paperid_get_product

Get a single product by UUID. GET /api/v1/invoicer/products/{uuid}

paperid_get_next_product_sku

Get the next auto-generated product SKU code. GET /api/v1/invoicer/products/sku/

paperid_create_product

Create a new product. POST /api/v1/invoicer/products

paperid_update_product

Update an existing product. PUT /api/v1/invoicer/products/{uuid}

paperid_delete_product

Delete (soft-delete) a product. DELETE /api/v1/invoicer/products/{uuid}

paperid_get_product_categories

List all product categories. GET /api/v1/invoicer/categories

paperid_get_product_category

Get single product category by UUID. GET /api/v1/invoicer/categories/{uuid}

paperid_create_product_category

Create a product category. POST /api/v1/invoicer/categories

paperid_update_product_category

Update a product category. PUT /api/v1/invoicer/categories/{uuid}

paperid_delete_product_category

Delete a product category. DELETE /api/v1/invoicer/categories/{uuid}

paperid_get_units_of_measure

List units of measure (150 global units). POST /api/v2/saturn/uom/all

paperid_create_unit_of_measure

Create a custom unit of measure. POST /api/v2/saturn/uom

paperid_update_unit_of_measure

Update a unit of measure. PUT /api/v2/saturn/uom/{uuid}

paperid_delete_unit_of_measure

Delete a unit of measure. DELETE /api/v2/saturn/uom/{uuid}

paperid_get_uom_categories

List UoM categories (Kategori Unit). POST /api/v1/saturn/uom-category/all

paperid_get_uom_category

Get single UoM category by UUID. GET /api/v1/saturn/uom-category/{uuid}

paperid_create_uom_category

Create a UoM category (Kategori Unit). POST /api/v1/saturn/uom-category. Can assign UoM UUIDs to the category.

paperid_update_uom_category

Update a UoM category. PUT /api/v1/saturn/uom-category/{uuid}

paperid_delete_uom_category

Delete a UoM category. DELETE /api/v1/saturn/uom-category/{uuid}

paperid_get_stock_locations

List all stock locations (warehouses). GET /api/v1/inventory/locations

paperid_get_stock_type_locations

List stock-type locations only (where products can be stored). GET /api/v1/inventory/locations/types/stock

paperid_get_stock_documents

List stock documents (Dokumen Stok). POST /api/v1/inventory/stock-documents-all. Types: gr=Penerimaan Barang, do=Surat Jalan, sa=Penyesuaian Stok, sc=Stok Opname.

paperid_get_next_stock_document_number

Get next auto-generated stock document number. GET /api/v1/inventory/stock-documents/next-number/{type}. Types: gr (Penerimaan Barang GR/YYYY/NNNN), do (Surat Jalan DO/YYYY/NNNN), sa (Penyesuaian Stok SA/YYYY/NNNN), sc (Stok Opname SC/YYYY/NNNN).

paperid_get_tracked_products

List products with stock tracking enabled (track_stock=1). POST /api/v1/inventory/products/tracked. Only tracked products can be used in stock documents.

paperid_get_inventory

List inventory (Persediaan) — current stock levels per product. POST /api/v2/saturn/products/fifo/all.

paperid_get_stock_dashboard

Get stock dashboard card info. POST /api/v1/inventory/dashboard/get-card-info. data_type: gr=Penerimaan Barang (goods receipt), do=Surat Jalan (delivery order).

paperid_get_inventory_settings

Get inventory meta settings (direct_purchase/sales defaults, default locations). GET /api/v1/inventory/inventory-meta-settings.

paperid_update_product_track_stock

Enable or disable stock tracking on a product. PUT /api/v1/saturn/products/{uuid}. Products must have track_stock=true to appear in stock documents.

paperid_get_partner

Get a single partner by UUID

paperid_create_partner

Create a new partner/client/supplier

paperid_update_partner

Update an existing partner

paperid_delete_partner

Delete a partner by UUID

paperid_get_partner_contacts

Get contacts for a partner

paperid_get_partner_bank_accounts

Get bank accounts for a partner

paperid_get_next_partner_number

Get next auto-generated partner number

paperid_search_partners

Search partners by name (uses earth API, used in invoice form dropdowns)

paperid_create_invoice

Create a new sales invoice (multipart/form-data)

paperid_get_invoice

Get a single sales invoice by UUID

paperid_get_invoice_pdf

Get PDF data for a sales invoice

paperid_send_invoice

Send invoice via WhatsApp, Email, and/or SMS

paperid_generate_invoice_qris

Generate QRIS (QR code) payment for an invoice

paperid_delete_invoice

Delete a sales invoice by UUID

paperid_publish_invoice

Change invoice status (Draft → Posted/Unpaid, or other transitions). GET /api/v1/invoicer/invoice/change-status/{uuid}/{status_code}

paperid_update_invoice

Update an existing sales invoice (multipart/form-data). POST /api/v1/invoicer/sales-invoices/{uuid}

// known CVEs in dependencies2 critical14 high4 medium12 low

Disclosed vulnerabilities in this server's declared npm dependencies (via OSV). Whether each is reachable depends on the installed versions.

criticalvitest@1.0.0GHSA-5xrq-8626-4rwp

When Vitest UI server is listening, arbitrary file can be read and executed

criticalvitest@1.0.0GHSA-9crc-q9x8-hgqq

Vitest allows Remote Code Execution when accessing a malicious website while Vitest API server is listening

high@modelcontextprotocol/sdk@0.5.0GHSA-w48q-cv73-mx4w

Model Context Protocol (MCP) TypeScript SDK does not enable DNS rebinding protection by default

highaxios@1.6.0GHSA-35jp-ww65-95wh

axios Vulnerable to Full Man-in-the-Middle via Prototype Pollution Gadget in `config.proxy`

highaxios@1.6.0GHSA-3g43-6gmg-66jw

axios Vulnerable to Credential Theft and Response Hijacking via Prototype Pollution Gadget in Config Merge

Depend on this server? Get alerted when its CVEs change.Watch this server free →
// environment variables
To run this server yourself, you supply these values. They go in your own MCP client configuration and stay on your machine. The secret label means the value is sensitive, not that the server mishandles it.
configPAPERID_COMPANY_ID"": "37e0eae0-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
configPAPERID_DB_PATHToken persisted at ~/.paperid-mcp/tokens.db. Override path with .
🔐 secretPAPERID_PASSWORD"": "your_password_here"
configPAPERID_PHONE"": "08xxxxxxxxxx",
🔐 secretPAPERID_TOKENOr: set first, then call tool paperid_get_current_user — it returns both
configPAPERID_USER_ID"": "3f5a9896-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
// quality suggestions

Tool annotations

No tools have read-only/destructive annotations

Add readOnlyHint or destructiveHint annotations to every tool so hosts can warn users before invoking.

All four hints declared on every tool

72/72 tools missing one or more hints — paperid_refresh_token (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); paperid_get_token_info (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); paperid_login (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint), +69 more. OpenAI's directory rejects tools where any of the four hints are missing or non-boolean.

For every tool, set all four hints (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) to explicit true/false values that match the handler’s actual behaviour.

License file

No license file

Add a LICENSE file (MIT, Apache-2.0, etc.).

Tests exist

No test files found

Add tests that exercise each declared tool.

Shell command execution

1 child_process call — runs shell commands

Prefer library functions over shell-outs. If you must shell out, ensure all inputs are properly escaped.

Production dependencies are patched

0 critical, 14 high severity in production deps — @modelcontextprotocol/sdk@0.5.0 (high), axios@1.6.0 (high)

Run npm audit fix, or upgrade the affected packages to a non-vulnerable version.

Dev dependencies

2 critical/high in dev-only deps (does not ship to users)

Upgrade dev dependencies when convenient.

Claim the listing to review these findings one by one and send us a correction where you disagree, straight to the team. Claiming also means we tell you when the grade moves, and reach you first if we find anything urgent.

// full audit trail
The findings above are the summary. The full trail, every check we ran, each deduction, the network hosts observed and the dependency advisories, goes to verified publishers, along with an alert whenever a new one lands. Verified publishers can also review each finding and dispute it in one click. Publisher corrections have sharpened several of our checks this month, because the maintainer knows the codebase better than any scanner.
// improvement guidance — verified publishers only
We have 7 concrete improvements we can share with the publisher of this MCP. Each comes with specific guidance to raise the trust score.
// embed badge in your README
[![M8ven Verified](https://m8ven.ai/badge/mcp/igun997/paper-invoice-mcp?variant=verified)](https://m8ven.ai/mcp/igun997/paper-invoice-mcp)
Shows verification status without the grade. Want the grade badge instead? Remove ?variant=verified from the URL.
commit: 1dd7865b2f6c0d60f235471ce908b40dc740b2b6
code hash: 1ef6ee7211257f6c8f25faf882b67fae2f8c2464874e00cbb79a04ec4373fcae
view raw JSON →
Check MCPs from inside your assistant
Tool Check · MCP

Vetting this one by hand? Tool Check is an MCP that scores other MCPs. Add it once and ask Claude, ChatGPT, or any MCP client to grade a server, surface CVEs, check the publisher, and suggest safer alternatives — before you install.

https://m8ven.ai/api/mcp/tool-check
check_toolsearch_toolscompare_toolsrecommend_alternativescheck_publisherreport_concern
How to add it →Free · no account needed · works in any MCP client