Saltar al contenido principal
Version: Next 🚧

Tools Reference

SecCheck exposes seven tools. All are read-only — they look content up and return it; none mutate your project, your systems, or any server-side state. None of them makes an outbound call: every answer comes from the corpus embedded in the server.

ToolOne-liner
list_sourcesWhich libraries exist, how big are they, what do they cover?
search_skillsFind playbooks by keyword, category, framework or tag.
load_skillRead one full playbook.
list_skill_resourcesWhich bundled files ship with a playbook? (Pro)
read_skill_resourceRead one bundled script / payload / reference. (Pro)
license_statusWhat does my credential unlock?
get_attributionThird-party licences and required notices.

The response contract​

Every tool that returns structured data answers in exactly two lines:

<VERDICT LINE — states the outcome in words>
<one-line compact JSON payload>

This is deliberate. A model reads the first line, so the first line has to carry the answer. The distinct prefixes — FOUND, NO MATCH, AVAILABLE, RESOURCES, EDITION, ATTRIBUTION — are what let an agent tell "nothing matched your query" apart from "no such thing exists", which is the difference between a retry and a wrong conclusion.

load_skill and read_skill_resource are the exceptions: they return the document itself, since that is the answer.

Failures come back as tool results beginning error: , not as JSON-RPC protocol errors — models recover from a readable tool result far better than from a transport-level failure.


list_sources​

List the skill libraries, their skill counts, and the category breakdown. Call this first to see what the server actually holds.

Parameters — none.

Returns

AVAILABLE: 857 playbooks across 3 libraries (43 compliance, 745 defensive, 69 offensive). Edition: community.
{
"total_skills": 857,
"by_category": { "compliance": 43, "defensive": 745, "offensive": 69 },
"sources": [
{
"key": "cybersecurity",
"label": "Cybersecurity Skills",
"description": "817-skill offensive+defensive library, mapped to MITRE ATT&CK/ATLAS/D3FEND, NIST CSF/AI-RMF, and F3.",
"skill_count": 817,
"categories": { "compliance": 13, "defensive": 745, "offensive": 59 },
"available": true,
"unlocked": true
},
{ "key": "grc", "label": "GRC & Compliance Skills", "skill_count": 30, "categories": { "compliance": 30 }, "unlocked": true },
{ "key": "pentesterflow", "label": "PentesterFlow CLI Skills", "skill_count": 10, "categories": { "offensive": 10 }, "unlocked": true }
],
"edition": "community"
}

Only sources your credential unlocks are listed — a private or custom skill pack you have not been granted simply does not appear.


search_skills​

Search every unlocked library and get back compact matches. This is the entry point for almost every task: find the playbook, then load it.

Parameters — all optional. Filters are ANDed.

NameRequiredDescription
query➖Free-text keywords, e.g. dns exfiltration, kerberoasting, GDPR data subject rights.
source➖Restrict to one library: cybersecurity, grc, pentesterflow.
category➖offensive (red-team/pentest), defensive (blue-team/DFIR), compliance (GRC/regulatory).
framework➖Framework label, e.g. MITRE ATT&CK, NIST CSF, GDPR, PCI DSS, ISO 27001.
tag➖A frontmatter tag, e.g. splunk, kubernetes, active-directory.
limit➖Max results. Default 20, maximum 100.

Omitting query and passing only filters is a valid listing call — for example "every compliance playbook in the GRC library".

Example

{ "query": "kerberoasting", "limit": 3 }

Returns

FOUND: 3 playbook(s). Load the most relevant with load_skill(id).
{
"count": 3,
"results": [
{
"id": "cybersecurity/detecting-kerberoasting-attacks",
"name": "detecting-kerberoasting-attacks",
"source": "cybersecurity",
"category": "defensive",
"frameworks": ["MITRE ATT&CK", "NIST CSF", "MITRE D3FEND"],
"tags": ["threat-hunting", "kerberoasting", "credential-access", "kerberos", "t1558"],
"description": "Detect Kerberoasting attacks by monitoring for anomalous Kerberos TGS requests targeting service accounts with SPNs for offline password cracking."
},
{
"id": "cybersecurity/exploiting-kerberoasting-with-impacket",
"category": "offensive",
"frameworks": ["MITRE ATT&CK", "NIST CSF", "MITRE D3FEND"],
"description": "Perform Kerberoasting attacks using Impacket's GetUserSPNs to extract and crack Kerberos TGS tickets for Active Directory service accounts."
}
// …
]
}

Descriptions are truncated to 300 characters — enough for the agent to choose, not enough to substitute for loading the playbook.

How results are ranked. Matches are scored per query token and sorted highest-first, so the most on-topic playbook comes back at the top:

Where the token matchesScore
The skill name, exactly+100
Anywhere in the skill name+5
A tag+3
A framework label+3
The subdomain+2
The description+1
Search broadly, then filter

Because scoring is additive across tokens, a long natural-language query still returns something — often only weakly related. If the top result's description does not clearly match the task, narrow with category or framework rather than adding more words.

When genuinely nothing matches, the verdict line is explicit:

NO MATCH: no playbook matched this query. Try broader keywords, or drop the source/category/framework filters — the library is not exhaustive of all security work.

load_skill​

Return the full SKILL.md playbook for an id returned by search_skills — typically when to use it, its prerequisites and its steps, plus any verification or validation criteria it carries.

Parameters

NameRequiredDescription
id✅Skill id in the form <source>/<name>, e.g. cybersecurity/analyzing-dns-logs-for-exfiltration.

Returns — the Markdown document itself, frontmatter included.

When a playbook ships bundled resources, a footer is appended. On Community that footer is count-only, disclosing no paths or file sizes:

---
_3 runnable bundled resource(s) ship with this skill; unlock them with a Pro license (read_skill_resource)._

With Pro or Enterprise it becomes the full inventory (paths and sizes), the same data list_skill_resources returns.

Errors

error: unknown skill id "cybersecurity/does-not-exist" (use search_skills to find valid ids)

Always take the id from search_skills rather than guessing it from a skill name you saw elsewhere.


list_skill_resources​

List the bundled reference, script and payload files that ship alongside a playbook — relative paths and sizes.

Licensed capability — Pro and above

On Community this returns an error: explaining the paywall. All 857 playbooks stay free to search and load; it is the runnable material that is licensed.

Parameters

NameRequiredDescription
id✅Skill id from search_skills.

Returns

RESOURCES: 3 bundled file(s) ship with grc/iso27001. Fetch one with read_skill_resource.
{
"id": "grc/iso27001",
"resources": [
{ "path": "references/annex-a-2013.md", "size": 7753 },
{ "path": "references/annex-a-2022.md", "size": 10131 },
{ "path": "references/control-mapping.md", "size": 7001 }
]
}

read_skill_resource​

Read one bundled resource file that ships with a playbook.

Licensed capability — Pro and above

Same paywall as list_skill_resources.

Parameters

NameRequiredDescription
id✅Skill id from search_skills.
path✅A relative path as returned by list_skill_resources, e.g. references/standards.md or payloads/jinja2.txt.

Returns — the file contents.

Paths are resolved strictly inside the skill's own directory, and symlinks are never listed or served, so a resource path cannot be used to read anything outside the playbook it belongs to.


license_status​

Report your active edition and exactly which sources and capabilities your credential unlocks. Useful when a tool unexpectedly returns a paywall error.

Parameters — none.

Returns

EDITION: community — playbooks only.
{
"tier": "community",
"unlocked_sources": { "cybersecurity": true, "grc": true, "pentesterflow": true },
"bundled_resources": false,
"audit_log": false,
"usage_metering": false,
"status": "Hosted: capabilities are provisioned on your Cert-IX API key"
}

The values describe the caller, not the operator. Hosted, they are resolved from your API key by the Cert-IX edge on every request — see Security & data handling.


get_attribution​

Return the third-party attribution and licence for each bundled library, including the full licence texts. This is the notice you must reproduce if you redistribute any of the content.

Parameters — none.

Returns

ATTRIBUTION: 3 third-party sources, redistributed under their own permissive licences.
{
"notice": "This product redistributes third-party skill content under the licences below. All rights of the original authors are retained. Full licence texts are included.",
"sources": [
{ "source": "cybersecurity", "upstream": "Anthropic-Cybersecurity-Skills", "author": "mahipal (community project)", "license": "Apache-2.0", "homepage": "https://github.com/mukul975/Anthropic-Cybersecurity-Skills" },
{ "source": "grc", "upstream": "Claude-Skills-Governance-Risk-and-Compliance", "author": "Hemant Naik (Sushegaad)", "license": "MIT", "homepage": "https://github.com/Sushegaad/Claude-Skills-Governance-Risk-and-Compliance" },
{ "source": "pentesterflow", "upstream": "PentesterFlow", "author": "PentesterFlow", "license": "Apache-2.0", "homepage": "https://github.com/pentesterflow/agent" }
],
"license_texts": { "cybersecurity": "Apache License…", "grc": "MIT License…", "pentesterflow": "Apache License…" }
}

An SPDX identifier and a homepage are a reference, not a notice — so the full text ships with the answer rather than expecting you to go and find the upstream repository.


Capability matrix​

ToolCommunityProEnterprise
list_sources✅✅✅
search_skills✅✅✅
load_skill✅✅✅
list_skill_resources—✅✅
read_skill_resource—✅✅
license_status✅✅✅
get_attribution✅✅✅

See Agent workflows for how to wire these into an agent's loop so it reaches for a playbook by default instead of improvising.

¿Te resultó útil esta página?