moneybird-mcp@0.10.0
CAUTION· static onlyPublisher claims: "Read-first MCP server for Moneybird bookkeeping, with experimental supervised writes behind an explicit capability policy." Observed in sandbox: static analysis only — behavior not yet observed.
Coverage
Static only; nothing was run yet.The label rests on the code, the instruction files and the publisher. The honeypot run replaces this verdict when it completes.
Before you give it your token
- It will ask for
MCP_AUTH_TOKENMONEYBIRD_ACCESS_TOKENConfiguration, not credentials: MCP_HOST, MCP_PORT, MCP_TOOL_DISCOVERY, MCP_TRANSPORT, MONEYBIRD_ADMINISTRATION_ID, MONEYBIRD_MCP_DATA_DIR, MONEYBIRD_TOOL_DISCOVERY- Where it talks to
- moneybird.com (its own)Also githubusercontent.com — not the publisher's domain; check what for before connecting.
- What the honeypot saw
- nothing has run yet
- What we could not test
- everything: the server has not run yet
Run it before you trust it. Nothing has run yet: the code was read, the server was not. `vet-skills try` runs this exact version in the honeypot in about a minute.
Never paste a credential into a chat, a ticket or a report, including ours. How the guard holds it.
Is [email protected] safe to install?
KillerSkills analysed it statically (a sandbox run is pending) on 2026-11-11 and scored it 57/100 (Caution). It is not known to be malicious, but it has behaviour or code a security policy should decide on before install. Notable findings: Access to sensitive file paths; Access to sensitive file paths; Access to sensitive file paths. Summary: static analysis only — behavior not yet observed.
Behavior trace
Queued for honeypot run · static analysis onlyThis version has not been detonated yet. The score above counts behavior as unknown (50/100), so it cannot read Verified until the honeypot run completes and replaces this verdict.
Static findings
".env.example",Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.``python moneybird_mcp_server.py`` wrapper passes ``False`` to keep itsFix: Namespace tool names and keep tool descriptions literal; no instructions to the agent inside them.from .credentials import resolve_credentials, set_active_administration_idFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.from .credentials import credentials_are_configured, missing_credentials_messageFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.from ..credentials import (Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.Supply configuration in the parent process; no working-directory ``.env`` is loaded:Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.# instruction. `.env.example` is deliberately not matched -- it ships on purposeFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.from .credentials import (Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."environment win. No .env file is discovered automatically."Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.from .credentials import (Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.from .credentials import (Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.from .credentials import CredentialModeMiddlewareFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.operator-selected ``--env-file``. No ``.env`` is ever discoveredFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.from .credentials import (Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."already present in the parent environment win. No .env file "Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.".env.example",Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.from .credentials import CREDENTIAL_MODE_HOSTED_REQUEST_ONLY, get_credential_modeFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.``python moneybird_mcp_server.py`` keeps its historical default (legacy SSEFix: Namespace tool names and keep tool descriptions literal; no instructions to the agent inside them.from .credentials import (Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.".env",Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.…s in een andere map afwezig terwijl de server verbonden is, controleer de scope dan met `claude mcp get moneybird`. ## Installeren met `pip` ```bash python -m pi…Fix: Keep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent.names = subprocess.check_output( # noqa: S603 - resolved Git, fixed read-only argumentsFix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.# .env.example holds no values and is included on purpose.Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.Sluit op Windows eerst de MCP-client. Als een eerdere poging met `WinError 32` mislukte, voer dan dezelfde opdracht opnieuw uit terwijl de client gesloten blijft.Fix: Keep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent.self.assertEqual(safe_attachment_filename("../../etc/passwd"), "etc_passwd")Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.… de tokens worden bewaard vóórdat ze geverifieerd worden: mislukt die controle, dan meldt het commando dat en houdt het de gegevens, in plaats van je opnieuw te la…Fix: Keep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent.result = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out."""A working-directory .env must never be picked up implicitly."""Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.Zonder deze extra afhankelijkheid blijft de rest van de server werken. De bijlagetool meldt dan dat PDF-ondersteuning ontbreekt.Fix: Keep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent.subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.Sluit op Windows eerst de MCP-client. Als een eerdere poging `WinError 32` meldde, voer de opdracht dan opnieuw uit terwijl de client gesloten blijft.Fix: Keep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent.(Path(cwd) / ".env").write_text(Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.CLEAN_WHEEL, [*CLEAN_SDIST, f"moneybird_mcp-{VERSION}/.env.example"]Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.…e mcp list` verbonden meldt maar een ander project geen tools toont, controleer dan `claude mcp get moneybird` en voeg de configuratie opnieuw toe met userscope. G…Fix: Keep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent."""os.environ without any MCP_* server settings leaking in from .env."""Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."https://user:[email protected]/file",Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.…t meebrengen. Bestaan er zowel een persoonlijk token als een OAuth-verbinding, dan wint het persoonlijke token; `moneybird-mcp auth status` vertelt welke actief i…Fix: Keep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent."moneybird_mcp/.env",Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.…elde consoleprogramma niet vervangen. Meldt `pip` `WinError 32`, houd de client dan gesloten en voer de installatieopdracht opnieuw uit om de gedeeltelijke install…Fix: Keep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent.Cost to the agent
Tokens estimated at four characters each. Skills load their instruction text when triggered; the figure is what that costs.
Known vulnerabilities
No advisories in OSV for moneybird-mcp@0.10.0 as of 3d ago. This is the package itself, not its dependencies.
What would make this Verified
23 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Unclaimed publisher≈ +8 on the totalClaim espaye: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- Access to sensitive file paths≈ +4 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
- MCP server using network transport (SSE/HTTP)≈ +2 on the totalNamespace tool names and keep tool descriptions literal; no instructions to the agent inside them.
- Python subprocess execution detected≈ +2 on the totalBuild commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
- URL with embedded credentials≈ +2 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.