complydir
README.md
# 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:
```bash
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
```bash
npx -y @reneturcios/complydir mcp
```
MCP client config:
```json
{
"mcpServers": {
"complydir": {
"command": "npx",
"args": ["-y", "@reneturcios/complydir", "mcp"]
}
}
}
```
## Docker
```bash
docker run -i ghcr.io/cloudcorprecords/complydir
docker run --rm ghcr.io/cloudcorprecords/complydir list_categories '{"dimension":"regions"}'
```
## Development
```bash
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
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues