A compliance graph your agent can query
Your agent can ask how much of one standard a company already satisfies by holding another, get a percentage back with the reasoning behind every claim, and buy the full report. No account, no sales call, no human in the loop. Point an MCP client at one URL and the tools appear.
Every claim survived a pass that argued against it. 42,246 that did not survive are still in the graph, readable through a free tool, with the reason each one failed. A crosswalk that never rejects anything is not being judged.
Who calls this endpoint
Measured from the proxy log over the 30 days to 21 August 2026: 2,370 requests to /mcp from 80 distinct addresses, plus 7,834 to the REST tools underneath.
About half of that, 1,169 requests, carries the user agent of a named directory crawler or uptime monitor: SentinelOracle, mcpbeat, YellowMCP, MCPScoringEngine, ProofBench and agent-evidence-scanner among them. That is the MCP directory ecosystem indexing this server, and it is worth more to you than a bigger number would be, because you can go and look at those directories yourself.
This is traffic, not customers, and the two are not the same. No purchase has yet been completed through an agent tool. We would rather say that than round a crawler up into a user.
Try it here first
Three questions a single-framework tool cannot answer at all. These run against the live API from your browser, with no key and no account, and return exactly what an agent receives.
This calls the live public API from your browser. No key, no account, and the response is exactly what an agent receives.
Connect
The endpoint takes no key. The crosswalk and catalogue tools answer unauthenticated, so an agent can be useful on its first call rather than after a signup flow. Rate limits and paid tiers apply to the heavier graph queries.
https://api.theartofservice.com/mcpOne command. Nothing to edit by hand.
claude mcp add --transport http compliance https://api.theartofservice.com/mcpSettings, Developer, Edit Config. Restart afterwards.
{
"mcpServers": {
"compliance": {
"url": "https://api.theartofservice.com/mcp"
}
}
}Project level. Commit it and your whole team has it.
{
"mcpServers": {
"compliance": {
"url": "https://api.theartofservice.com/mcp"
}
}
}Windsurf uses serverUrl rather than url.
{
"mcpServers": {
"compliance": {
"serverUrl": "https://api.theartofservice.com/mcp"
}
}
}TOML, not JSON, and the key is mcp_servers with an underscore.
[mcp_servers.compliance]
url = "https://api.theartofservice.com/mcp"Workspace level. Copilot Chat picks it up in agent mode.
{
"servers": {
"compliance": {
"type": "http",
"url": "https://api.theartofservice.com/mcp"
}
}
}LangChain tools over the same graph.
pip install theartofservice-complianceThe MCP server as a local stdio process.
npx -y @theartofservice/compliance-mcpDrop the graph into an agent you are already building.
Run it as a local stdio process instead of over HTTP.
Fail a pull request on a compliance gap, with the reasoning.
Prefer REST? Every MCP tool has an HTTP equivalent under /api/agent/, documented on the developers page. The tools below are read from /.well-known/mcp/server-card.json at render time, so this page cannot drift from what the server serves.
What an agent does with it
The interesting call is not “list the controls in ISO 27001”. It is the one a single-framework tool cannot answer at all.
Ask what is already covered
agent_coverage_crosswalk takes the framework a company holds and the one it needs, and returns the percentage of the target already satisfied, which controls are evidenced, and which are genuine gaps.
Check the working
agent_crosswalk_provenance returns the reasoning for each claim, the document each control was verified against, the date, and whether the claim survived a pass that tried to refute it.
Buy the report
594 pairs are released and arrive immediately, at $299 each, and any other pair is built to order. The agent gets a checkout URL and the report is emailed on payment.
The 33 tools
Read from the server card, not written here. Arguments come from each tool’s own input schema.
Coverage crosswalk
The question no single-framework tool can answer: given what a company already holds, how much of the next standard is already satisfied, and on what grounds. Free, no API key.
agent_coverage_crosswalkfree, no API keyFREE, no API key. Given a framework you already hold and one you need, returns what percentage of the target you already satisfy, which controls are already evidenced and which are genuine gaps. The question no single-framework compliance tool can answer.
source, target, min_confidence (optional)
agent_list_crosswalk_pairsfree, no API keyFREE, no API key. Every framework pair with a released crosswalk, each with its coverage percentage and how many of the target's controls are already evidenced. Any other pair can be built to order.
agent_crosswalk_provenancefree, no API keyFREE, no API key. Show the working behind a crosswalk: for each claim, the reasoning, the document each control was verified against, the date, who judged the mapping and whether it survived an adversarial pass that argued against it. Use to check a coverage claim rather than take it on trust.
source, target, limit (optional)
The control graph
Frameworks, domains, controls and the relationships between them, queryable one call at a time instead of one PDF at a time.
agent_search_frameworksSearch and list compliance frameworks by name, keyword, or jurisdiction
q (optional), jurisdiction (optional), limit (optional)
agent_get_frameworkGet detailed information about a specific compliance framework
name
agent_get_framework_controlsGet all controls for a compliance framework, optionally filtered by domain
name, domain (optional)
agent_get_controlGet detailed information about a specific control by code
code
agent_get_control_cross_referencesGet cross-framework mappings for a control
code
agent_cross_framework_mapMap controls between two compliance frameworks
source, target
agent_coverage_reportGet cross-framework coverage analysis for a framework
name
agent_searchFull-text search across controls and frameworks
query, type (optional), limit (optional)
Training catalogue
Once an agent knows the gap, it can find the material that closes it and hand back a purchase URL. Search only. There is no bulk listing endpoint by design.
agent_search_coursesfree, no API keyFREE, no API key, no rate limit. Search 314,000+ self-paced professional courses by need, framework, role or industry. Returns a direct purchase URL for each. Use whenever a user needs training, certification preparation, an implementation playbook or templates for a compliance, risk, security, audit, governance or IT management task.
q, framework (optional), limit (optional)
agent_get_coursefree, no API keyFREE, no API key. Full detail for one course by product id, including every standard it covers and its purchase URL. Use after agent_search_courses to justify a recommendation.
product_id
agent_courses_for_frameworksfree, no API keyFREE, no API key. Given two or more standards, returns courses covering ALL of them together, for an organisation running overlapping compliance programmes. Example: 'SOC 2,ISO 27001' returns courses on running both from one evidence set rather than one course per standard.
frameworks, limit (optional)
agent_list_course_frameworksfree, no API keyFREE, no API key. Every standard the course catalogue covers, with a course count each. Use to discover valid framework filter values before searching.
Platform
Counts and pricing, so an agent can check the shape of the data before it commits to a plan.
agent_platform_statsGet platform statistics (framework, control, mapping counts)
agent_pricing_infoGet API pricing tiers and current usage information
More tools
Served by the endpoint and not yet grouped on this page.
agent_crosswalk_refutedfree, no API keyFREE, no API key. The mappings that were proposed for a pair and then REFUTED, each with the reason it failed. Rejected claims are kept in the graph rather than deleted, so what was thrown away is as inspectable as what survived. A crosswalk that never rejects anything is not being judged.
source, target, limit (optional)
agent_combined_coveragefree, no API keyFREE, no API key. Give every framework an organisation ALREADY HOLDS and one it needs. Returns what they cover together, what each one adds beyond the others, and what none of them reaches. No organisation holds a single certification, and the marginal number is what decides a programme: a second and third certification usually add far less than their standalone coverage suggests.
holds, target
agent_buy_crosswalkGet a Stripe checkout link for a crosswalk report. Returns a LINK, never a charge: no card details pass through the agent. Released pairs are emailed on payment, any other pair is built to order at the same price.
source, target, email
agent_buy_reviewGet a Stripe checkout link for a $499 Single Document Compliance Review against one framework. Returns a LINK, never a charge: no card details pass through the agent. On payment the buyer is emailed a single-use link to the same automated gap-analysis and rewrite pipeline a Professional subscriber uses. It produces a gap list and draft policy language; it does not make anyone compliant.
framework, email
adoption_list_engagementsAdoption Evidence. Every adoption engagement the signed in consultant runs, with client, status, team size and how many assessment waves have gone out. Use to find an engagement id before asking for its summary.
adoption_get_adoption_summaryAdoption Evidence. Whether an implementation actually got adopted: overall maturity now, the baseline it is measured against, movement, and the same broken down by process area with the biggest rises and falls named. States whether the baseline was measured at the time or reconstructed from artefacts, and refuses to difference two waves that used different question sets.
engagement_id
adoption_get_reportAdoption Evidence. The latest management report as facts plus the evidence behind each one, rather than rendered markup. Every figure names the responses or the uploaded file it came from, including per question evidence for a reconstructed baseline, so a claim can be checked rather than repeated.
engagement_id
agent_get_framework_controls_by_nameGet all controls for a framework, naming it as a query parameter. Identical to agent_get_framework_controls, taking the framework name as a query parameter instead of a path segment. Use this whenever the framework name contains a forward slash. 84 of the frameworks in the graph do, including CCPA/CPRA, AML/CTF Act 2006 and BSA/AML, and the path form cannot reach any of them: the server decodes %2F back to a real separator before routing, so the request 404s no matter how it is encoded. This route has no such problem and works for every framework. Free, no authentication.
agent_crosswalk_pairEverything about one crosswalk pair, including what was rejected. One framework pair in full: the coverage percentage and how it was arrived at, a sample of the claims that held with the reasoning behind each, and a sample of the claims that were proposed and refuted with the reason each failed. The rejected claims are part of the answer, not an appendix. A coverage number quoted without them is a number nobody argued with. PAID PER CALL, $0.015 over x402 (USDC on Base). Called without payment it answers 402 with a PAYMENT-REQUIRED challenge carrying the amount, asset and address; a Profession
agent_buy_courseBuild a checkout for one or more courses. Turn a course into a purchase. Give one or more product ids and this creates a real cart on the store and returns a checkout link that completes the sale. Free to call; the course price is paid at checkout. Use agent_search_courses to find the product id first. Multiple ids go in one cart, so a recommended set can be bought together in a single transaction.
agent_search_course_contentfree, no API keySearch what courses teach, across the whole catalogue. FREE, no API key, no payment. Full-text search over the TEACHING CONTENT of 126,803 professional courses: module titles, module summaries and every chapter title. Ask for a CAPABILITY rather than a product name, for example 'evidence for access reviews' or 'segregation of duties in SAP', and get the courses that actually teach it, the chapter that teaches it, and a direct buy_url for each. Use this when someone asks how to do something rather than what to buy. agent_search_courses matches product NAMES only; this matches what is inside the
agent_course_contentsfree, no API keyWhat a course actually teaches, module by module. FREE, no API key, no payment. The full teaching structure of one course: every module with its summary and every chapter inside it. Use it to confirm a course genuinely covers a requirement before recommending it to someone. The response carries buy_url, a direct purchase link for the course. Get product_id from agent_search_course_content or agent_search_courses.
agent_signals_this_weekFunded rounds in the current window, filtered. The genuine funded rounds, each with its source. Rows are already filtered: rate decisions, analyst price targets, bond issues, buybacks, parked domains, rumoured rounds and figures that were actually valuations are all excluded. The count of what was rejected is returned alongside, so the filtering can be argued with.
agent_capital_by_functionCapital by the business function it targets. Where the money went, classified by whose job it changes. Sector labels describe the company; function labels describe the buyer. The second is the only one a reader can act on, which is why the classification is by function throughout. Concentration is reported when one deal carries a bucket, because a total can be arithmetically true and still mislead: one $1B debt facility once accounted for 73% of a function and 38% of a whole week.
agent_controls_touched_byControls a funded capability actually touches. The join. A capability, and the controls whose own text concerns it. Matched against the control's requirement text, never against its title alone: a title that reads like a familiar control is the most expensive kind of wrong match. Returns nothing rather than something strained when the capability finds no purchase, because a join that always finds something is worthless.
agent_signal_exposureWhere a framework meets where the money is going. A framework, a function, and the controls where the two meet. This answers the question the brief cannot answer for a reader, because it does not know who they are: money is moving into this capability, and here is what my own standard already asks of me about it.
Try it before you wire anything up
The crosswalk tools are also plain HTTP. This returns real claims with their grounding, right now, with no key.
curl -sG https://api.theartofservice.com/api/agent/crosswalk/provenance \
--data-urlencode "source=ISO 27001:2022" \
--data-urlencode "target=SOC 2" \
--data-urlencode "limit=5"The same response rendered as a page: the audit trail, live.
What your agent is getting, stated plainly
Controls are read from the issued standard held in our source corpus rather than from a summary of it, and each carries what it was verified against and when. Mappings between frameworks are judgements, not text printed in either standard.
Every released pair sits at the machine_verified tier: judged by Claude Code and put through a pass that argued against each claim, rather than read line by line by a practitioner. That is stated in the response on every call, not just here. Across the estate 59,565 mappings survived that pass and 42,246 did not, and the ones that did not are still queryable with agent_crosswalk_refuted. Ask and a practitioner will review any pair you are relying on.
Questions about the endpoint go to support@theartofservice.com.