Repository avatar
Search & Data Extraction
v0.1.0
active

complydir

io.github.CloudCorpRecords/complydir

Search a curated directory of ISO 27001, SOC 2 and compliance services, with listing checks.

Documentation

complydir

A directory of compliance help, searchable from your agent. complydir wraps a curated catalog of services that work on ISO 27001, SOC 2, DORA and neighbouring frameworks — consultancies, auditors and software — published as a single catalog snapshot. There is no account and no API key: the tools fetch the snapshot, answer questions about it locally, and can queue a new free listing for review.

Because search happens over the snapshot rather than a remote search call, the filter rules are exact and predictable. Tag filters never do substring matching: asking for the region "Germany" returns services tagged Germany, and asking for two frameworks returns only services tagged with both.

Tools

  • search_services — multi-filter catalog search. All parameters are optional, but at least one is required: query (free text used to rank the filtered set), framework (a single framework), frameworks (several frameworks, ANDed together), region, industry, service_type, and limit (1–25, default 10). Tag matches are case-insensitive and exact, and a service_type of "Consulting" also matches services tagged "Consultants". For example, frameworks ["ISO 27001", "DORA"] with region "Germany" and service_type "Consulting" returns German services covering both frameworks that consult.
  • check_if_listed — whether a company is in the catalog. Takes a required company_name (for example "Scrut Automation") and answers with the matched record when it is listed.
  • get_service_details — the full catalog record for one service, by its required service_name (for example "Compleye").
  • list_categories — the distinct values in one dimension of the catalog, with counts. dimension is one of frameworks, regions, industries, service_types or problems; omit it to get every dimension at once.
  • submit_listing — queue a free listing (the one write tool). Required: name, url (http or https), email (a contact address, not shown publicly) and brief_summary (10–300 characters). Optional: description, linkedin, service_type, region_covered and compliance_framework_expertise. Confirm the name, website, contact email and one-line summary with the user before calling — a queued listing goes into the same review queue as the free web form and is not live instantly.

How it works

The read tools fetch the public snapshot from https://ismsdirectory.com/api/tools.json and run over it in memory; submit_listing posts to https://ismsdirectory.com/api/submit. Both go through one injectable fetch function, which is how the test suite exercises everything against a small hand-built snapshot with no live calls.

Two shapes are labelled reconstructions, because the published material pins the fields rather than the record layout: the per-service record fields beyond a service's name and its framework, region, industry and service-type tags, and the tools' output objects. Outputs are built around the pinned fields — the service name, its tags and the filters that matched.

Failures read plainly: a non-2xx upstream reply is complydir error: HTTP <status>, an unreachable upstream is complydir unreachable, and a snapshot that does not parse as a list of records is complydir snapshot invalid.

CLI

Each tool is a subcommand taking one JSON argument string:

npx @reneturcios/complydir search_services '{"frameworks":["ISO 27001","DORA"],"region":"Germany","service_type":"Consulting"}'
npx @reneturcios/complydir check_if_listed '{"company_name":"Scrut Automation"}'
npx @reneturcios/complydir get_service_details '{"service_name":"Compleye"}'
npx @reneturcios/complydir list_categories '{"dimension":"frameworks"}'
npx @reneturcios/complydir submit_listing '{"name":"Acme Compliance","url":"https://acme.example","email":"hello@acme.example","brief_summary":"ISO 27001 consulting for SaaS"}'
npx @reneturcios/complydir --version

Exit codes: 0 on success, 1 on a runtime error, 2 on a usage error.

MCP server

npx -y @reneturcios/complydir mcp

MCP client config:

{
  "mcpServers": {
    "complydir": {
      "command": "npx",
      "args": ["-y", "@reneturcios/complydir", "mcp"]
    }
  }
}

Docker

docker run -i ghcr.io/cloudcorprecords/complydir
docker run --rm ghcr.io/cloudcorprecords/complydir list_categories '{"dimension":"regions"}'

Development

npm install
npm run build   # tsc -> dist/
npm test        # tsx --test test/*.test.ts (fake fetch only, no network)
npm run dev     # run the CLI from source

License

MIT — Copyright (c) 2026 Rene Turcios

NPM
@reneturcios/complydir
Install Command
npm install @reneturcios/complydir
Runtime: npx
OCI
ghcr.io/cloudcorprecords/complydir:0.1.0
Install Command
docker pull ghcr.io/cloudcorprecords/complydir:0.1.0:undefined
Runtime: docker