Independent trust grade B+ (89/100). No blocking issues found in the static + spec checks. wmcp.sh continuously watches mcp.stackin.io for tool drift and rug-pulls. The grade is free and identical whether or not the operator pays.
issue_invoiceIssue a Brazilian fiscal document: NFS-e or NF-e. This produces a legal fiscal document. Confirm the data with the user before calling when you inferr
consult_invoiceLook up an invoice's current status by its access key. Read-only: it never changes the document.
cancel_invoiceCancel an authorized invoice. Legal cancellation, with fiscal and accounting effect, inside a window the NFS-e authorizer enforces for the municipalit
get_invoice_pdfReturn the printable rendering of a document, as a PDF. Works for both types — a DANFE for nfe, a DANFSe for nfse. The PDF comes back base64-encoded i
reissue_invoiceRetry a rejected invoice after the data that caused the rejection was fixed. Takes the local invoice_id, not the access key: a rejected document never
correct_invoiceFile an electronic correction letter (CC-e) against an NF-e. NF-e only: there is no correction letter for an NFS-e, where a wrong document is cancelle
invalidate_numberingDeclare an NF-e numbering range reserved but never used. NF-e numbering has to be continuous, so a gap left by a failed issuance is explained to the S
list_invoicesList the invoices this company issued, newest first. One document type at a time: pass nfse for services or nfe for goods. A company that issues both
get_invoice_submissionsShow every attempt made for one invoice and what came back. This is the tool that answers "why was it rejected". consult_invoice gives the status; thi
validate_invoice_payloadCheck invoice data against the field rules without issuing anything. Nothing is sent to the tax authority and no document is created. The SDK models c
list_received_invoicesList NF-e documents other companies issued against this one. The mirror of list_invoices: that one shows what this company issued, this one what it re
manifest_received_invoiceDeclare this company's position on a document issued against it. Legally binding and irreversible once the tax authority accepts it — ask the human to
lookup_fiscal_codeResolve one code of one classification, when you know both. Use this to confirm a code before putting it on a document — an NCM that does not exist is
search_fiscal_codesFind a code from a description, or page through a table. This is the tool for "what NCM is a keyboard" — the one the user actually asks. Prefer it ove
list_fiscal_kindsWhich classifications this country has data for, right now. Ask this before assuming a classification exists. The answer grows as the source data does
lookup_taxpayerLook up one taxpayer by exact tax id, to confirm who it is. Use it to check a recipient's name before issuing against them. It takes the id exactly —
No proxied traffic observed for this host yet. Connect it at /connect and its grade gains a measured Reliability score + per-tool behavioral evidence — the half a static scan can't produce.
We re-grade mcp.stackin.io on a schedule and alert your Slack/webhook the moment its tools change or its grade drops — rug-pull insurance for the connection.
Run mcp.stackin.io? Claim it (free) to get drift alerts and show an independently-verified trust badge. The grade stays free — claiming just ties it to you.
Add the wmcp.sh trust oracle as an MCP server and call grade_mcp_server / check_mcp_drift in your agent's pre-connection gate:
https://wmcp.sh/mcp/trust
readOnly vs observed behavior) layer on via the wmcp.sh proxy.