MoneyPeel reports MCP server
com.moneypeel/reportsmoneypeel.comstreamable-httpv1.4.4Scanned
Revenue intelligence and growth research for SaaS and AI products.
6 tools: 1 change things and 5 only read.
- Reads private data · 0
- Reads text others write · 1
- Can send data out · 0
- 1 finding
Tools listed without sign-in. Remote posture
With Anlyon
1 tool here changes things. Govern it.
- Anlyon lists the tools and adopts none.
- Each tool you adopt gets approvals and receipts.
- Your agent never holds the key.
A tool your agent calls directly is not routed through Anlyon and is not governed by it. anlyon.dev only lists and labels, and these labels are the same either way.
What the MoneyPeel reports MCP server can do
The MoneyPeel reports MCP server is published by moneypeel.com, a domain the MCP Registry verified. It has 6 tools. It can create or change data (1 tool: get_report), but cannot delete data. 5 tools only read.
1 tool brings in text other people can write (list_reports).
The fixed checks matched 1 finding (annotation-conflict). Each one comes with the text it matched.
Its remote endpoint lists its tools without sign-in, and its tools changed 3 times since anlyon.dev first saw them.
Last scanned Nov 12, 2026, version 1.4.4.
Tools
Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.
6 tools
Changes things 1Claude Code: ask
get_reportRead one published report as Markdown: positioning, marketing, growth plays, social, timeline and takeaways.1 finding
Why it is in this group
- The name "get_report" says "get": a word for reading.
- The server marks it as not read-only (readOnlyHint: false).
Findings
- Warn
The server marks "get_report" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "get_report" says "get": a word for reading.
Description, as the server wrote it Read one published report as Markdown: positioning, marketing, growth plays, social, timeline and takeaways. Requires a connected MoneyPeel account. **This call is metered**: each successful read spends one read from the monthly allowance, a single chapter costs the same one read, and reading the same report again spends another. Free accounts get 2 reads per UTC month. Screen with search_reports / list_reports first — they cost nothing — and read only the reports the user actually needs; a failed lookup or a not_found never spends a read. The 'billing.readCharged' field in the result states whether this call spent one (0 means it was a retry inside the idempotency window). It has one authoritative report-content date: reportContentAsOf; reportResearchAsOf and dataAsOf are deprecated aliases carrying the same value, so never present two research dates. Every chapter carries leadAsOf, snapshotType and figuresAsOf: a lead that quotes money, percentages or subscription counts is a historical_research_snapshot, not current revenue. The source block also carries schemaVersion and dataPolicyVersion.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
Only reads 5Show 5 read-only tools
compare_companiesCompare 2-5 companies side by side on MRR, the 30-day amount, business model, economic basis, pricing, acquisition channels, target customer and positioning.No findings
Why it is in this group
- The name "compare_companies" says "compare": a word for reading.
Description, as the server wrote it Compare 2-5 companies side by side on MRR, the 30-day amount, business model, economic basis, pricing, acquisition channels, target customer and positioning. Free: no account needed and no reads spent. Every cell carries a status: comparable, partial (e.g. stale, or captured prose rather than a normalised field), not_available (missing stays empty, never 0) or different_basis (the set mixes economic bases, so the amounts must not be ranked against each other). No cell is inferred and no company is ranked.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_usageRemaining reads for the connected account: plan, period, monthly and daily allowance, and the UTC reset time.No findings
Why it is in this group
- The name "get_usage" says "get": a word for reading.
Description, as the server wrote it Remaining reads for the connected account: plan, period, monthly and daily allowance, and the UTC reset time. Free — call it before reading a batch, but do not call it before every read.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_reportsBrowse the public library, highest revenue first.Reads text others writeNo findings
Why it is in this group
- The name "list_reports" says "list": a word for reading.
What it can reach
- untrusted-inputThe description's first sentence says "browse": it reads web pages, which anyone can write.
Description, as the server wrote it Browse the public library, highest revenue first. No account needed, no reads spent, bounded pages. Each row carries the same public summary fields as search. Returns a `nextCursor` while more reports exist. A cursor is bound to the full request, including `limit`: keep the same sort, filters and page size when you page, or the server answers invalid_cursor rather than silently reusing it.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
search_growth_signalsRank revenue or MRR moves over an explicit window.No findings
Why it is in this group
- The name "search_growth_signals" says "search": a word for reading.
Description, as the server wrote it Rank revenue or MRR moves over an explicit window. Free: no account needed and no reads spent. Ranking rule — 7-day board: baseline at least $500 over the previous 7 days, or at least $1,000 over the previous 30 days. 30-day board: baseline at least $1,000 over the previous 30 days. Either way the change must be at least 20%. By default only rows that clear that gate are ranked, and total counts them — the sample is the public growth board (https://moneypeel.com/revenue?by=growth), not the whole catalogue. The default order is percentage — the same order the public growth board prints; absolute (largest USD change) and consistency (steady growth above a one-day spike) are explicit alternatives. Every row carries baseline, start, end, absolute change, percentage, dataPoints, windowStart/windowEnd (null when the figure is source-reported rather than observed daily), growth kind, the economic basis and the metric-level evidence type. Percentages are never returned without their base; stale rows are marked and can be filtered out. MRR has no 7-day series: metric=mrr works with window=30d only. include_ineligible=true returns the wider signal pool instead: rows below the gate are appended after the ranked rows with rank=null, never take a rank, and total becomes the pool size, with counts {eligible, ineligible, pool}. The pool read is capped at 500 rows; truncated=true says the cap was hit.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
search_reportsSearch public revenue reports by keyword and/or structured filters.No findings
Why it is in this group
- The name "search_reports" says "search": a word for reading.
Description, as the server wrote it Search public revenue reports by keyword and/or structured filters. No account needed, no reads spent. Pass "query" for text (name, domain, description) and/or filters such as minMrr or businessModel; at least one of the two is required — to browse the library instead, use list_reports. A filter on a missing value excludes the row (a null MRR is not $0). Each row carries mrr, revenue30d, business model, metric-level evidence type, a revenue snapshot date, revenue freshness, a dataQuality flag, a public preview link and the metered full-report link — often enough to answer without reading a report. When dataQuality.status is "needs_review", quote the caveat before the numbers. When revenueEligibleForRanking is false the amount is stale and must not be cited as current. Structured filters: businessModel, minMrr / maxMrr, minRevenue30d / maxRevenue30d, revenueFreshness, market, economicBasis, basisDetermination, dataQualityStatus, evidenceType, plus sortBy (revenue, mrr, name, growth) and growthWindow. `evidenceType` keeps a row only when every figure it reports (MRR and/or the 30-day amount) carries one of the requested metric-level types; a missing figure is skipped rather than counted as `unknown`. Only the parameters listed in this schema exist — do not invent others. Returns a `nextCursor` when more matches exist; a cursor is bound to the full request — query, filters, sort and `limit` — so keep all of them identical when you page, or it is rejected with invalid_cursor rather than silently reused.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Exfil surface
Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.
No private-data, untrusted-input, outbound path in this server alone: no tool is tagged private-data or outbound.
- Reads private data0
- Reads files, mail, messages, databases, secrets, calendars or repositories.
- Reads text others write1
- Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
- Can send data out0
- Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.
Remote posture
What anyone on the internet sees at the remote endpoint: an anonymous initialize and tools/list, and the public OAuth metadata.
Looked at Nov 11, 2026, 09:19 UTC, unchanged since Nov 11, 2026. No credentials were sent and no tool was called. What is looked at.
- Reachable
- yes
- HTTP status of an anonymous initialize
- 200
- tools/list served without credentials
- yes
- Tools that change things, listed without credentials
- 1
- Protocol version
- 2025-06-18
- WWW-Authenticate on 401
- not observed
- resource_metadata in WWW-Authenticate
- not observed
- RFC 9728 protected resource metadata
- https://moneypeel.com/.well-known/oauth-protected-resource/mcp
- Authorization servers
- https://moneypeel.com
- Legacy HTTP+SSE transport
- no
- Dynamic client registration
- yes
- Client ID metadata documents
- no
- WarnThe whole server
The endpoint served tools/list without credentials, and the list has 1 tool that changes things (1 write). Whether a call also works without credentials was not tested: tools are never called.
What this check looks forMatched text
https://moneypeel.com/mcp: tools/list returned 6 tools to an anonymous client, including get_report (write)
Findings
Matches of fixed checks, with the text they matched.
- Warnget_report
The server marks "get_report" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "get_report" says "get": a word for reading.
History
Changes to its tool definitions and to its remote endpoint, newest first.
Tools3 changed.~3 changedView diff
- Changed:list_reportsOnly readsdescription
- Changed:search_growth_signalsOnly readsinputSchema
- Changed:search_reportsOnly readsdescriptioninputSchema
Tools1 changed.~1 changedView diff
- Changed:search_growth_signalsOnly readsdescriptioninputSchema
Tools3 changed.~3 changedView diff
- Changed:get_reportChanges thingsdescription
- Changed:list_reportsOnly readsinputSchema
- Changed:search_growth_signalsOnly readsdescriptioninputSchema
Install
Pinned to version 1.4.4. Values in angle brackets are yours to fill in.
claude mcp add --transport http reports https://moneypeel.com/mcpclaude mcp add --transport http reports https://moneypeel.com/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__reports__search_reports",
"mcp__reports__list_reports",
"mcp__reports__get_usage",
"mcp__reports__search_growth_signals",
"mcp__reports__compare_companies"
],
"ask": [
"mcp__reports__get_report"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as reports. Review it before you use it.
Capability tags behind 1 rule
- mcp__reports__list_reports untrusted-input
Pin
Keep the decision: fail CI when the tools change, follow every change, or show a badge.
Pin in CI
Fail a build when the tools you reviewed are not the tools the server serves today.
curl -s "https://anlyon.dev/api/v1/servers/com.moneypeel/reports/verify?hash=7b641f6a74c791a75ea1f035419a030f152201ba701c5501b589641b4a86afea" | jq -e '.changed == false'Pinned hash 7b641f6a74c7, from Nov 12, 2026, 08:18 UTC.
Watch
Get told when its tools change: a new tool, a new description, a new class.
https://anlyon.dev/servers/com.moneypeel/reports/changes.xmlAn Atom feed. Works in any feed reader or Slack's RSS app.
Badge
[](https://anlyon.dev/servers/com.moneypeel/reports)Source: MCP Registry · repository. Synced Nov 12, 2026, 08:18 UTC.
MoneyPeel reports MCP server: questions and answers
Answered from the scan above, not from the publisher's description.
Is the MoneyPeel reports MCP server safe?
- No scan can promise that. What its definitions show: 6 tools, 1 of which can change, send or delete something, and 1 finding from fixed checks. Allow the reads, ask before each change, and deny the deletes; the permissions block on this page does that.
Can the MoneyPeel reports MCP server delete data?
- No tool is classed as destructive: going by their definitions, none of them deletes, cancels or revokes anything.
Can the MoneyPeel reports MCP server do things that cannot be undone?
- No tool is classed as irreversible: none of them sends, pays, publishes or merges, going by their definitions.
What tools does the MoneyPeel reports MCP server have?
- 6 tools: 1 write, 5 read. get_report, search_reports, list_reports, get_usage, search_growth_signals and compare_companies.
Does the MoneyPeel reports MCP server need sign-in or OAuth?
- Its remote endpoint listed its tools to an anonymous client, without sign-in.
Does the MoneyPeel reports MCP server send data to outside services?
- None of its tools sends, posts or publishes, or takes a recipient, channel or URL.
Has the MoneyPeel reports MCP server changed its tools?
- Yes, 3 times since anlyon.dev started tracking it, most recently on Nov 12, 2026. Every change is on this page and in its Atom feed.