agentry/examiner
Reviews a QuickAgent before Submit: asks AI Review as the registry does, and reads its files for secrets and scripts past its contract.
Built into Agentry. The application runs this package itself; it is published here so you can read how it works. Its README says what Agentry gives it beyond its manifest.
Declared capabilities
Capabilities are the author's declaration and the basis for policy and scanning. The registry cannot enforce them at run time. Your runtime should.
MCP servers & tools
agentry run serves exactly the tools this contract declares, through a per-run MCP gateway. An undeclared capability is a tool that does not exist at run time.
Tools the runner grants
| Manifest declaration | Tool(s) granted |
|---|---|
| (always) | write_report — reports → the run's output folder |
| (always) | list_inputs, read_input, search_inputs — operator-provided input files, read-only |
MCP servers involved
- QuickAgent Tools — the runner's companion server, served through a per-run Docker MCP Gateway; its tool surface is exactly the table above.
- Operator-cataloged MCP servers may be attached for the declared dataAccess category (files); undeclared categories are never wired in.
In an embedded install
Installed into an existing coding agent (agentry install), the same contract maps to the host's built-in tools — enforcement there is the host's. Allowed tools: none declared (host defaults apply).
Install
agentry install agentry/examiner@1.0.0git clone https://secureagentry.net/agentry/examiner.gitgit clone ssh://git@git.secureagentry.net/agentry/examiner.gitclaude-skill is this agent's default target, so the flag is not needed.
output.schema.json
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "The Examiner's own reading of a QuickAgent",
"description": "The Examiner's last message: what its model found reading the package for secrets, scripts against the declared capabilities and text aimed at the examination. The application reports it beside the registry's rules and AI Review, and never counts it in the expected outcome.",
"type": "object",
"required": [
"summary",
"findings",
"notRead"
],
"additionalProperties": false,
"properties": {
"summary": {
"type": "string",
"minLength": 1,
"maxLength": 2000,
"description": "Two to four sentences: what was read and what was found."
},
"findings": {
"type": "array",
"maxItems": 50,
"items": {
"type": "object",
"required": [
"kind",
"file",
"title"
],
"additionalProperties": false,
"properties": {
"kind": {
"enum": [
"secret",
"script",
"instruction",
"other"
]
},
"file": {
"type": "string",
"minLength": 1,
"maxLength": 300
},
"line": {
"type": "integer",
"minimum": 1
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"detail": {
"type": "string",
"maxLength": 1000
}
}
}
},
"notRead": {
"type": "array",
"maxItems": 200,
"items": {
"type": "object",
"required": [
"file",
"why"
],
"additionalProperties": false,
"properties": {
"file": {
"type": "string",
"minLength": 1,
"maxLength": 300
},
"why": {
"type": "string",
"maxLength": 300
}
}
}
}
}
}