MTD Chase — chase clients for MTD records
com.smallwright/mtd-chasesmallwright.comstreamable-httpv0.1.0Scanned
UK bookkeepers: chase clients for Making Tax Digital quarterly records, upload links, reminders.
20 tools: 1 can delete or cancel things, 1 do something that can't be undone, 9 change things and 9 only read.
- Reads private data · 4
- Reads text others write · 3
- Can send data out · 2
- No findings
Anlyon alternative
11 of these tools change something. Run those as governed actions.
Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.
Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.
Import an OpenAPI spec →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.
20 tools
Deletes or cancels 1Claude Code: deny
archive_clientArchives a Client who has left: their open Chases become skipped and their links stop working; they stop counting towards the plan limit.No findings
Why it is in this group
- The name "archive_client" says "archive": a word for removing or ending something.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Archives a Client who has left: their open Chases become skipped and their links stop working; they stop counting towards the plan limit. confirm:false (default) shows what would change. unarchive:true brings them back. Use this when: a Client leaves the practice or comes back.
Annotations the server declares
- title: Archive or unarchive a Client
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: false
Can't be undone 1Claude Code: ask
send_nudges_nowSends a Nudge email now to Clients who haven't finished sending records for a Quarter (waiting or partial), at most one per Client per day.Reads text others writeCan send data outNo findings
Why it is in this group
- The name "send_nudges_now" says "send": a word for sending, and what is sent cannot be taken back.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
- outboundThe name "send_nudges_now" says "send": it sends or publishes something to other people.
Description, as the server wrote it Sends a Nudge email now to Clients who haven't finished sending records for a Quarter (waiting or partial), at most one per Client per day. confirm:false (default) lists who would get one and who is excluded (no email, nudged today, paused); confirm:true sends. Use this when: the practitioner wants an extra reminder outside the plan.
Annotations the server declares
- title: Nudge now
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
Changes things 9Claude Code: ask
add_clientsAdds Clients (people the practice does MTD quarterly updates for) from a pasted list; matches existing Clients by email, else exact name.No findings
Why it is in this group
- The name "add_clients" says "add": a word for a change.
Description, as the server wrote it Adds Clients (people the practice does MTD quarterly updates for) from a pasted list; matches existing Clients by email, else exact name. confirm:false (default) shows what would be added, skipped as duplicates, or rejected, and the plan-limit effect; confirm:true saves. Max 500. Use this when: setting up or adding MTD clients from a spreadsheet or accounting-software export, or a typed list. Not for: changing one Client (update_client).
Annotations the server declares
- title: Add Clients
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
export_practice_dataExports everything the practice holds in MTD Chase (Clients, Chases with history, Nudges sent, Records list, requests) as one JSON file; returns a download link for the signed-in p…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Exports everything the practice holds in MTD Chase (Clients, Chases with history, Nudges sent, Records list, requests) as one JSON file; returns a download link for the signed-in practitioner. Use this when: they want a copy of their data or are leaving.
Annotations the server declares
- title: Export practice data
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
mark_chaseSets one Client's Chase for a Quarter to ready, partial, nothing_to_report, skipped or back to waiting, with an optional note; Nudges stop for ready/nothing_to_report/skipped and r…No findings
Why it is in this group
- The name "mark_chase" says "mark": a word for a change.
Description, as the server wrote it Sets one Client's Chase for a Quarter to ready, partial, nothing_to_report, skipped or back to waiting, with an optional note; Nudges stop for ready/nothing_to_report/skipped and resume for waiting/partial. The change is recorded in the Client's history. Use this when: records arrived another way (office, post, email) or a Client should be skipped this Quarter.
Annotations the server declares
- title: Set a Chase status
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
pause_nudgesStops all Nudges to one Client until a date (YYYY-MM-DD) or until resumed; resume:true restarts them.No findings
Why it is in this group
- The description's first verb is "stop": a word for a change.
Description, as the server wrote it Stops all Nudges to one Client until a date (YYYY-MM-DD) or until resumed; resume:true restarts them. The result warns if the pause runs past a deadline. Use this when: a Client is ill, away or has asked for no reminders for now. Not for: a Client who has left (archive_client) or has sent their records (mark_chase).
Annotations the server declares
- title: Pause or resume Nudges
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
request_featureFiles a request with MTD Chase when the user asks for something none of the other tools can do, or adds a vote to a matching open request; returns its ID, status and any workaround…No findings
Why it is in this group
- The name "request_feature" says "request": a word for a change.
Description, as the server wrote it Files a request with MTD Chase when the user asks for something none of the other tools can do, or adds a vote to a matching open request; returns its ID, status and any workaround with existing tools. No date is promised. Use this when: the practitioner wants a capability MTD Chase doesn't have. Not for: reporting a single Client's problem.
Annotations the server declares
- title: Request a feature
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
set_nudge_planSets when Nudges (reminder emails) go out for every Chase, including ones already running, counted from the date Clients are asked to send by (the ask-by date): days before it, on …No findings
Why it is in this group
- The name "set_nudge_plan" says "set": a word for a change.
Description, as the server wrote it Sets when Nudges (reminder emails) go out for every Chase, including ones already running, counted from the date Clients are asked to send by (the ask-by date): days before it, on the day, and days after it, sent at 09:00 UK time on weekdays. A value left out keeps its current setting. Returns the plan in words and this Quarter's remaining nudge dates. Use this when: the practitioner wants reminders on different days. Not for: one extra reminder now (send_nudges_now), one Client (pause_nudges), or the ask-by date itself (update_practice).
Annotations the server declares
- title: Set the nudge plan
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
start_chaseStarts chasing Clients for their records for a Quarter: each gets a personal link (no login, works on a phone) and a first email; then Nudges go out on the practice's plan until th…Reads text others writeNo findings
Why it is in this group
- The name "start_chase" says "start": a word for a change.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Starts chasing Clients for their records for a Quarter: each gets a personal link (no login, works on a phone) and a first email; then Nudges go out on the practice's plan until they send their records. confirm:false (default) shows who would be chased, who has no email, the checklist and the dates (the date Clients are asked to send by, and the HMRC deadline); confirm:true starts it. Safe to repeat: Clients already being chased are left alone. Use this when: a Quarter needs records collected, for everyone or some Clients. Not for: reminding Clients already being chased (send_nudges_now).
Annotations the server declares
- title: Chase a Quarter
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
update_clientChanges one Client's name, email, mobile, period type (standard/calendar), tags or reference.No findings
Why it is in this group
- The name "update_client" says "update": a word for a change.
Description, as the server wrote it Changes one Client's name, email, mobile, period type (standard/calendar), tags or reference. Returns before → after. Use this when: a Client's details change. Not for: stopping chasing someone (archive_client) or pausing nudges (pause_nudges).
Annotations the server declares
- title: Update a Client
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
update_practiceChanges what Clients see and how MTD Chase behaves for this practice: name shown to Clients, reply-to email, sign-off, phone shown on the Client's page, how many days before the HM…Can send data outNo findings
Why it is in this group
- The name "update_practice" says "update": a word for a change.
What it can reach
- outboundThe input takes a destination (input.phone): what the tool writes goes there.
Description, as the server wrote it Changes what Clients see and how MTD Chase behaves for this practice: name shown to Clients, reply-to email, sign-off, phone shown on the Client's page, how many days before the HMRC deadline Clients are asked to send by (0–30, default 10; applies to Chases started afterwards), how many days after a deadline files are kept (30–365), daily summary email on/off, and the default checklist new Chases ask Clients for (1–8 items; running Chases keep theirs). Returns before → after. Use this when: the practitioner changes their details, the date clients are asked to send by, their default checklist, or retention.
Annotations the server declares
- title: Update practice settings
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
Only reads 9Show 9 read-only tools
get_chase_linksReturns each Client's personal records link for a Quarter and a ready-to-paste message for a messaging app or text.Reads private dataReads text others writeNo findings
Why it is in this group
- The name "get_chase_links" says "get": a word for reading.
What it can reach
- private-dataThe description's first sentence says "return" and "message": it reads messages.
- untrusted-inputThe description's first sentence says "return" and "message": it reads messages, which other people can write.
Description, as the server wrote it Returns each Client's personal records link for a Quarter and a ready-to-paste message for a messaging app or text. Use this when: the practitioner wants to send a link themselves (no email on file, or they prefer a messaging app or text).
Annotations the server declares
- title: Get Chase links
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_client_historyReturns a Client's Chases across Quarters — when they finished and how many days early or late against the date they were asked to send by (and whether before or after the HMRC dea…No findings
Why it is in this group
- The name "get_client_history" says "get": a word for reading.
Description, as the server wrote it Returns a Client's Chases across Quarters — when they finished and how many days early or late against the date they were asked to send by (and whether before or after the HMRC deadline) — with a one-line summary. Without a client, returns every active Client ranked by how late they usually are. Use this when: asked whether a Client is usually late, how they did last time, or who's always late. Not for: who hasn't sent records this Quarter (whos_outstanding).
Annotations the server declares
- title: Client history
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_mtd_deadlinesReturns the four MTD for Income Tax quarterly update periods for a tax year (standard and calendar period ends), each deadline, the final declaration date, and days until the next …Reads private dataNo findings
Why it is in this group
- The name "get_mtd_deadlines" says "get": a word for reading.
What it can reach
- private-dataThe description's first sentence says "return" and "calendar": it reads calendars.
Description, as the server wrote it Returns the four MTD for Income Tax quarterly update periods for a tax year (standard and calendar period ends), each deadline, the final declaration date, and days until the next deadline. Works without signing in. Use this when: someone asks when the next quarterly update is due or what a Quarter covers. Not for: whether a particular Client has sent records (whos_outstanding).
Annotations the server declares
- title: MTD deadlines
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_startedReturns the practice's setup and current position: plan and active Clients vs limit, Clients, open Chases per Quarter, settings still unset, and the next few things the practitione…No findings
Why it is in this group
- The name "get_started" says "get": a word for reading.
Description, as the server wrote it Returns the practice's setup and current position: plan and active Clients vs limit, Clients, open Chases per Quarter, settings still unset, and the next few things the practitioner can say. Use this when: the practitioner asks where they're up to or what to do next.
Annotations the server declares
- title: Where am I up to
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_clientsLists Clients with contact details, period type, tags and the status of their Chase for the current Quarter.Reads private dataNo findings
Why it is in this group
- The name "list_clients" says "list": a word for reading.
What it can reach
- private-dataThe description's first sentence says "list" and "contact": it reads contacts.
Description, as the server wrote it Lists Clients with contact details, period type, tags and the status of their Chase for the current Quarter. Use this when: looking up who the practice has or finding a Client's details.
Annotations the server declares
- title: List Clients
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_my_requestsLists the practice's feature requests with status (open, planned, live, declined), how many times each was asked for, the workaround meanwhile, and for declined ones the reason.No findings
Why it is in this group
- The name "list_my_requests" says "list": a word for reading.
Description, as the server wrote it Lists the practice's feature requests with status (open, planned, live, declined), how many times each was asked for, the workaround meanwhile, and for declined ones the reason. Use this when: asked what happened to something they asked for. Not for: asking for something new (request_feature) or what's recently live for everyone (whats_new).
Annotations the server declares
- title: List my feature requests
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_recordsLists the files (name, size, received) a Client sent through their link for a Quarter — or for every Client in a Quarter — with download links valid 24 hours for the signed-in prac…Reads private dataNo findings
Why it is in this group
- The name "list_records" says "list": a word for reading.
What it can reach
- private-dataThe description's first sentence says "list" and "file": it reads files.
Description, as the server wrote it Lists the files (name, size, received) a Client sent through their link for a Quarter — or for every Client in a Quarter — with download links valid 24 hours for the signed-in practitioner, and the Client's note marked as written by the Client. Use this when: asked what a Client sent or to download it.
Annotations the server declares
- title: List Records
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
whats_newLists changes that went live recently in MTD Chase, and which of this practice's requests are now live, with the date each went live and what to say to try it.No findings
Why it is in this group
- The description's first verb is "list": a word for reading.
Description, as the server wrote it Lists changes that went live recently in MTD Chase, and which of this practice's requests are now live, with the date each went live and what to say to try it. Use this when: the practitioner asks what's new, or whether something they asked for is live yet.
Annotations the server declares
- title: What's new
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
whos_outstandingReturns the Clients who haven't finished sending records for a Quarter (waiting or partial), with days to/after the date they were asked to send by, last Nudge, whether they opened…No findings
Why it is in this group
- The description's first verb is "return": a word for reading.
Description, as the server wrote it Returns the Clients who haven't finished sending records for a Quarter (waiting or partial), with days to/after the date they were asked to send by, last Nudge, whether they opened their link, and counts per status. Use this when: asked who's still outstanding, who's sent what, or how the Quarter is going.
Annotations the server declares
- title: Who's outstanding
- 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.
24 paths in this server alone from private data, through text someone else wrote, to a way out. Denying 2 outbound tools breaks every one.
- Reads private data4
- Reads files, mail, messages, databases, secrets, calendars or repositories.
- Reads text others write3
- Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
- Can send data out2
- Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
{
"permissions": {
"deny": [
"mcp__mtd-chase__send_nudges_now",
"mcp__mtd-chase__update_practice"
]
}
}Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.
Findings
Matches of fixed checks, with the text they matched.
No check matched anything in these tool definitions. That is not a safety guarantee.
History
Changes to its tool definitions and to its remote endpoint, newest first.
No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.
Install
Pinned to version 0.1.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http mtd-chase https://mtd-chase.smallwright.com/mcpclaude mcp add --transport http mtd-chase https://mtd-chase.smallwright.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__mtd-chase__get_mtd_deadlines",
"mcp__mtd-chase__get_started",
"mcp__mtd-chase__list_my_requests",
"mcp__mtd-chase__whats_new",
"mcp__mtd-chase__list_clients",
"mcp__mtd-chase__get_chase_links",
"mcp__mtd-chase__list_records",
"mcp__mtd-chase__whos_outstanding",
"mcp__mtd-chase__get_client_history"
],
"ask": [
"mcp__mtd-chase__update_practice",
"mcp__mtd-chase__export_practice_data",
"mcp__mtd-chase__request_feature",
"mcp__mtd-chase__add_clients",
"mcp__mtd-chase__update_client",
"mcp__mtd-chase__start_chase",
"mcp__mtd-chase__mark_chase",
"mcp__mtd-chase__set_nudge_plan",
"mcp__mtd-chase__send_nudges_now",
"mcp__mtd-chase__pause_nudges"
],
"deny": [
"mcp__mtd-chase__archive_client"
]
}
}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 mtd-chase. Review it before you use it.
Capability tags behind 7 rules
- mcp__mtd-chase__get_mtd_deadlines private-data
- mcp__mtd-chase__update_practice outbound
- mcp__mtd-chase__list_clients private-data
- mcp__mtd-chase__start_chase untrusted-input
- mcp__mtd-chase__get_chase_links private-data, untrusted-input
- mcp__mtd-chase__list_records private-data
- mcp__mtd-chase__send_nudges_now untrusted-input, outbound
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.smallwright/mtd-chase/verify?hash=6c943b497ddb94664ff70092b7a45184a9929a5a780881329c0bd4fbd176069f" | jq -e '.changed == false'Pinned hash 6c943b497ddb, from Nov 4, 2026, 17:18 UTC.
Watch
Get told when its tools change: a new tool, a new description, a new class.
https://anlyon.dev/servers/com.smallwright/mtd-chase/changes.xmlAn Atom feed. Works in any feed reader or Slack's RSS app.
Badge
[](https://anlyon.dev/servers/com.smallwright/mtd-chase)Source: MCP Registry. Synced Nov 4, 2026, 17:17 UTC.