Africa Compliance Data MCP server
com.africacompliancedata/africa-compliance-dataafricacompliancedata.comstreamable-httpv1.0.1Scanned
African holidays, business days, VAT, withholding tax, tax treaties, tax IDs and filing deadlines
19 tools: 3 change things and 16 only read.
- Reads private data · 0
- Reads text others write · 0
- Can send data out · 0
- 1 finding
Tools listed without sign-in. Remote posture
With Anlyon
3 tools here change things. Govern them.
- 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 Africa Compliance Data MCP server can do
The Africa Compliance Data MCP server is published by africacompliancedata.com, a domain the MCP Registry verified. It has 19 tools. It can create or change data (3 tools: is_business_day, add_business_days and calculate_withholding_tax), but cannot delete data. 16 tools only read.
None of its tools reads private data, brings in text other people write, or sends data out.
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.
Last scanned Nov 13, 2026, version 1.0.1.
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.
19 tools
Changes things 3Claude Code: ask
add_business_daysDate that is N working days after (or before, if negative) a start date in a country.1 finding
Why it is in this group
- The name "add_business_days" says "add": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "add_business_days" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "add_business_days" says "add": a word for a change.
Description, as the server wrote it Date that is N working days after (or before, if negative) a start date in a country.
Annotations the server declares
- title: Add business days
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
calculate_withholding_taxThe tax to withhold on one payment from a country to a recipient resident in another country (or the same one): applies the domestic rate and, for a non-resident, the tax-treaty ma…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 The tax to withhold on one payment from a country to a recipient resident in another country (or the same one): applies the domestic rate and, for a non-resident, the tax-treaty maximum (the lower one), and returns the rate, the amount withheld and the net payment, with the sources. With amount_is 'net', grosses the payment up. Where the data cannot decide (treaty rates by condition such as 5/15, several domestic rates), every option is returned with its condition; where a rate is not recorded, no amount is given.
Annotations the server declares
- title: Withholding tax on a payment
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
is_business_dayWhether a date is a working day in a country (weekend and national public holidays).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 Whether a date is a working day in a country (weekend and national public holidays).
Annotations the server declares
- title: Is it a business day?
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
Only reads 16Show 16 read-only tools
count_business_daysNumber of working days between two dates (inclusive) in a country, and the holidays skipped.No findings
Why it is in this group
- The name "count_business_days" says "count": a word for reading.
Description, as the server wrote it Number of working days between two dates (inclusive) in a country, and the holidays skipped.
Annotations the server declares
- title: Count business days
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_changesThe change log: one entry per changed value, oldest first, with the old and new value, kind (law_change, correction, new_source, coverage), the date a law change applies from, and …No findings
Why it is in this group
- The name "get_changes" says "get": a word for reading.
Description, as the server wrote it The change log: one entry per changed value, oldest first, with the old and new value, kind (law_change, correction, new_source, coverage), the date a law change applies from, and its source. Optional: since (YYYY-MM-DD) and one country. Developer and Pro plans: holiday changes; Compliance: every change.
Annotations the server declares
- title: Change log
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_country_profileAll compliance reference data for one country: holiday rules, announcement authority, VAT, withholding tax, tax ID format, filing deadlines and sources (tax parts on the Compliance…No findings
Why it is in this group
- The name "get_country_profile" says "get": a word for reading.
Description, as the server wrote it All compliance reference data for one country: holiday rules, announcement authority, VAT, withholding tax, tax ID format, filing deadlines and sources (tax parts on the Compliance plan, and on Pro for the countries of its country pack).
Annotations the server declares
- title: Country compliance profile
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_einvoicingA country's e-invoicing or fiscalisation requirement: system (e.g.No findings
Why it is in this group
- The name "get_einvoicing" says "get": a word for reading.
Description, as the server wrote it A country's e-invoicing or fiscalisation requirement: system (e.g. eTIMS, EFRIS, MBS), tax authority, status (mandatory, phased, voluntary, pilot, planned, unclear, none_found), model (clearance, real-time reporting, fiscal device), dated phases (who must comply from when), legal basis and source, and the authority's published list of accredited integrators where one exists.
Annotations the server declares
- title: E-invoicing requirement
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_filing_deadlinesTax filing and payment due dates falling in a given month (VAT, PAYE, withholding, corporate tax), adjusted for weekends and holidays where the country's rule (weekend_adjust) or t…No findings
Why it is in this group
- The name "get_filing_deadlines" says "get": a word for reading.
Description, as the server wrote it Tax filing and payment due dates falling in a given month (VAT, PAYE, withholding, corporate tax), adjusted for weekends and holidays where the country's rule (weekend_adjust) or the item's own rule is known; otherwise the statutory date with adjusted: false.
Annotations the server declares
- title: Tax filing deadlines
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_finance_law_changesPlain-English digest of a country's latest finance law: business-relevant tax changes (VAT, withholding, corporate, payroll, procedure) with effective dates and article references.No findings
Why it is in this group
- The name "get_finance_law_changes" says "get": a word for reading.
Description, as the server wrote it Plain-English digest of a country's latest finance law: business-relevant tax changes (VAT, withholding, corporate, payroll, procedure) with effective dates and article references. Unofficial summary; the cited law prevails (Compliance plan).
Annotations the server declares
- title: Finance law changes
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_holiday_watchAcross countries: holidays whose date depends on an announcement (Eid, Mawlid and other moon-sighted holidays, ad-hoc days off) from a week ago to N days ahead, with status estimat…No findings
Why it is in this group
- The name "get_holiday_watch" says "get": a word for reading.
Description, as the server wrote it Across countries: holidays whose date depends on an announcement (Eid, Mawlid and other moon-sighted holidays, ad-hoc days off) from a week ago to N days ahead, with status estimated (not announced or not yet verified) or confirmed (with its source), and who announces them (Developer, Pro and Compliance plans).
Annotations the server declares
- title: Holiday watch
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_payroll_taxIncome tax bands on employment income for resident employees (PAYE / ITS / IRPP...): the bands, tax-free threshold and reliefs in force on a date (default today), and every dated p…No findings
Why it is in this group
- The name "get_payroll_tax" says "get": a word for reading.
Description, as the server wrote it Income tax bands on employment income for resident employees (PAYE / ITS / IRPP...): the bands, tax-free threshold and reliefs in force on a date (default today), and every dated period with its legal basis, source and confidence. Reference data only, no salary calculation.
Annotations the server declares
- title: Payroll tax (PAYE) bands
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_public_holidaysPublic holidays for a country and year, with status (rule / confirmed / estimated / observed / bridge) and sources.No findings
Why it is in this group
- The name "get_public_holidays" says "get": a word for reading.
Description, as the server wrote it Public holidays for a country and year, with status (rule / confirmed / estimated / observed / bridge) and sources. Islamic holidays are estimated until a reviewer has verified the announcement (delays are possible).
Annotations the server declares
- title: Public holidays
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_social_securityStatutory contributions on pay (pension, social security, health, housing, work injury, training and other payroll levies): employee and employer rates, base, floor and ceiling in …No findings
Why it is in this group
- The name "get_social_security" says "get": a word for reading.
Description, as the server wrote it Statutory contributions on pay (pension, social security, health, housing, work injury, training and other payroll levies): employee and employer rates, base, floor and ceiling in force on a date (default today), and every dated period with its legal basis, source and confidence.
Annotations the server declares
- title: Social-security contributions
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_tax_treatiesDouble tax treaties of a country (as the paying country): maximum withholding rates on dividends, interest, royalties and technical fees for each treaty partner, with conditions, d…No findings
Why it is in this group
- The name "get_tax_treaties" says "get": a word for reading.
Description, as the server wrote it Double tax treaties of a country (as the paying country): maximum withholding rates on dividends, interest, royalties and technical fees for each treaty partner, with conditions, dates in force and the official text.
Annotations the server declares
- title: Tax treaty withholding rates
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_vatVAT/GST/TVA/IVA standard and other rates, registration threshold and legal basis for a country.No findings
Why it is in this group
- The name "get_vat" says "get": a word for reading.
Description, as the server wrote it VAT/GST/TVA/IVA standard and other rates, registration threshold and legal basis for a country. With 'date', also the standard rate in force on that date (dated history with the law that set it).
Annotations the server declares
- title: VAT rates
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_vat_historyEvery standard VAT rate period for a country (from, to, rate) with the law that set it, for audits, refunds and re-invoicing.No findings
Why it is in this group
- The name "get_vat_history" says "get": a word for reading.
Description, as the server wrote it Every standard VAT rate period for a country (from, to, rate) with the law that set it, for audits, refunds and re-invoicing.
Annotations the server declares
- title: VAT rate history
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_withholding_taxWithholding tax rates (resident / non-resident) by payment type: dividends, interest, royalties, rent, services, fees...No findings
Why it is in this group
- The name "get_withholding_tax" says "get": a word for reading.
Description, as the server wrote it Withholding tax rates (resident / non-resident) by payment type: dividends, interest, royalties, rent, services, fees... With 'recipient_country', also the tax-treaty maximum rates for a payment to that country.
Annotations the server declares
- title: Withholding tax rates
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_countriesList the 54 African countries covered, with currency and per-feature coverage (ready / partial / gap).No findings
Why it is in this group
- The name "list_countries" says "list": a word for reading.
Description, as the server wrote it List the 54 African countries covered, with currency and per-feature coverage (ready / partial / gap).
Annotations the server declares
- title: List covered countries
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
validate_tax_id_formatCheck whether a taxpayer identification number matches the country's known format.No findings
Why it is in this group
- The name "validate_tax_id_format" says "validate": a word for reading.
Description, as the server wrote it Check whether a taxpayer identification number matches the country's known format. Format check only: it does not confirm registration (format_check 'partial' means a weak check on characters and length only). The number is not stored.
Annotations the server declares
- title: Validate tax ID format
- 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 untrusted-input or outbound.
- Reads private data0
- Reads files, mail, messages, databases, secrets, calendars or repositories.
- Reads text others write0
- 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 13, 2026, 11:31 UTC, unchanged since Nov 13, 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
- 3
- Protocol version
- 2025-06-18
- WWW-Authenticate on 401
- not observed
- resource_metadata in WWW-Authenticate
- not observed
- RFC 9728 protected resource metadata
- not observed
- Authorization servers
- not observed
- Legacy HTTP+SSE transport
- no
- Dynamic client registration
- not observed
- Client ID metadata documents
- not observed
- WarnThe whole server
The endpoint served tools/list without credentials, and the list has 3 tools that change things (3 write). Whether a call also works without credentials was not tested: tools are never called.
What this check looks forMatched text
https://api.africacompliancedata.com/mcp: tools/list returned 19 tools to an anonymous client, including is_business_day (write), add_business_days (write), calculate_withholding_tax (write)
Posture changes
- Nov 13, 2026
- HTTP status of an anonymous initialize: 401 to 200
- tools/list served without credentials: no to yes
- Tools that change things, listed without credentials: 0 to 3
- Protocol version: none to 2025-06-18
- WWW-Authenticate on 401: no to not observed
Findings
Matches of fixed checks, with the text they matched.
The server marks "add_business_days" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "add_business_days" says "add": a word for a change.
History
Changes to its tool definitions and to its remote endpoint, newest first.
PostureRemote posture changed. HTTP status of an anonymous initialize: 401 -> 200; tools/list served without credentials: no -> yes; Tools that change things, listed without credentials: 0 -> 3 (and 2 more).View diff
- HTTP status of an anonymous initialize: 401 to 200
- tools/list served without credentials: no to yes
- Tools that change things, listed without credentials: 0 to 3
- Protocol version: none to 2025-06-18
- WWW-Authenticate on 401: no to not observed
Install
Pinned to version 1.0.1. Values in angle brackets are yours to fill in.
claude mcp add --transport http africa-compliance-data https://api.africacompliancedata.com/mcp --header 'x-api-key: <your-x-api-key>'claude mcp add --transport http africa-compliance-data https://api.africacompliancedata.com/mcp --header 'x-api-key: <your-x-api-key>'Run 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__africa-compliance-data__list_countries",
"mcp__africa-compliance-data__get_public_holidays",
"mcp__africa-compliance-data__get_holiday_watch",
"mcp__africa-compliance-data__get_changes",
"mcp__africa-compliance-data__count_business_days",
"mcp__africa-compliance-data__get_vat",
"mcp__africa-compliance-data__get_vat_history",
"mcp__africa-compliance-data__get_withholding_tax",
"mcp__africa-compliance-data__get_tax_treaties",
"mcp__africa-compliance-data__get_einvoicing",
"mcp__africa-compliance-data__get_finance_law_changes",
"mcp__africa-compliance-data__get_payroll_tax",
"mcp__africa-compliance-data__get_social_security",
"mcp__africa-compliance-data__validate_tax_id_format",
"mcp__africa-compliance-data__get_filing_deadlines",
"mcp__africa-compliance-data__get_country_profile"
],
"ask": [
"mcp__africa-compliance-data__is_business_day",
"mcp__africa-compliance-data__add_business_days",
"mcp__africa-compliance-data__calculate_withholding_tax"
],
"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 africa-compliance-data. Review it before you use it.
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.africacompliancedata/africa-compliance-data/verify?hash=f1f32aeb58595c95665fdc868530031bdf51d6a657ae98fc9866d98c60cbadfe" | jq -e '.changed == false'Pinned hash f1f32aeb5859, from Nov 13, 2026, 02:18 UTC.
Watch
Get told when its tools change: a new tool, a new description, a new class.
https://anlyon.dev/servers/com.africacompliancedata/africa-compliance-data/changes.xmlAn Atom feed. Works in any feed reader or Slack's RSS app.
Badge
[](https://anlyon.dev/servers/com.africacompliancedata/africa-compliance-data)Source: MCP Registry. Synced Nov 13, 2026, 02:17 UTC.
Africa Compliance Data MCP server: questions and answers
Answered from the scan above, not from the publisher's description.
Is the Africa Compliance Data MCP server safe?
- No scan can promise that. What its definitions show: 19 tools, 3 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 Africa Compliance Data MCP server delete data?
- No tool is classed as destructive: going by their definitions, none of them deletes, cancels or revokes anything.
Can the Africa Compliance Data 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 Africa Compliance Data MCP server have?
- 19 tools: 3 write, 16 read. is_business_day, add_business_days, calculate_withholding_tax, list_countries, get_public_holidays, get_holiday_watch, get_changes, count_business_days and 11 more.
Does the Africa Compliance Data MCP server need sign-in or OAuth?
- Its remote endpoint listed its tools to an anonymous client, without sign-in.
Does the Africa Compliance Data MCP server send data to outside services?
- None of its tools sends, posts or publishes, or takes a recipient, channel or URL.
Has the Africa Compliance Data MCP server changed its tools?
- Not since anlyon.dev started tracking it. Last scanned Nov 13, 2026.