ACR — Agent Composition Records
NPM · @TETHRAL/ACR-MCP · SCANNED AUG 3
Interaction profile registry for AI agents. Log interactions, query behavioral lenses.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score →
Supply Chain Security100
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- No production dependencies, so there is no dependency health to assess. View diagnostics → Pass
Provenance & Transparency97
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to Tethral-Inc/AgentRegistry). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 10 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability47
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 1955 tokens (~279/item across 7 items; 7 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
- Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Unverified: 1 category
A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
npm · @tethral/acr-mcp
claude mcp add tethral-inc-acr -- npx -y @tethral/acr-mcp
codex mcp add tethral-inc-acr -- npx -y @tethral/acr-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"tethral-inc-acr": {
"type": "local",
"command": [
"npx",
"-y",
"@tethral/acr-mcp"
],
"enabled": true
}
}
} openclaw mcp add tethral-inc-acr --command npx --arg -y --arg @tethral/acr-mcp
mcp_servers:
tethral-inc-acr:
command: "npx"
args: ["-y", "@tethral/acr-mcp"] {
"mcpServers": {
"tethral-inc-acr": {
"command": "npx",
"args": [
"-y",
"@tethral/acr-mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 2 Aug 26 +15
- Malware scan: unverified → pass ▲ security
- 1 Aug 26 −9
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 31 Jul 26 −18
- Malware scan: pass → unverified ▼ security
- 27 Jul 26 +27
- Tool coverage: unverified → 100 ▲ functional
- First check of Tool coverage: 100 functional
- First check of Schema quality: fail functional
- First check of Schema quality: fail functional
- First check of Schema quality: good functional
- 26 Jul 26 59
First indexed and scored.
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 3 Aug 2026 · Analysed npm/@tethral/[email protected]
Provenance verified
Ecosystem: npm · Outcome: verified
Reason: verified
- Source repo:
- Tethral-Inc/AgentRegistry
- Certificate issuer:
- https://token.actions.githubusercontent.com
- Certificate SAN:
- https://github.com/Tethral-Inc/AgentRegistry/.github/workflows/publish.yml@refs/heads/master
- Rekor log index:
- 2222348651
- Predicate type:
- https://slsa.dev/provenance/v1
- Subject digest:
- sha512:2bef5db374a7bf32c6e4f4d2921f85399d95f1fb9a94cc8bc68670448163a09981831dd4fd31d0035604b043932d428be558bdc719ba3ddac1129453f
- Discovery method:
- attestation_endpoint
Dependencies 0 packages
0 packages in the resolved dependency tree.
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.
acknowledge_signal ~129
Acknowledge an anomaly signal notification after reviewing it with your operator. Records that the notification has been reviewed. Acknowledgements expire after 30 days. Does not remove the observation from the network — only records that you have reviewed the signal.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_id | string | — | Your agent ID (uses session if omitted) |
| notification_id | string | yes | The notification ID to acknowledge |
| reason | string | — | Why the signal is being acknowledged (e.g., "user reviewed and accepted risk") |
| verbose | boolean | — | Render full-length notification and agent IDs instead of the truncated inline display. |
No output schema declared.
No examples provided.
get_friction_report ~272
Query the friction lens of your interaction profile — one of several lenses available (more on the roadmap). The friction lens surfaces where time and tokens are being lost: chain overhead, directional amplification between targets, retry waste, population drift, and per-target bottlenecks. Friction is a continuum, not a verdict — high friction could be infrastructure, a hard task, or a component with elevated anomaly signals. Use it together with anomaly signal notifications to interpret correctly. Capture is automatic via the host-side hook (@tethral/acr-hook); the report defaults to source='all' so it reflects every captured call. Pass source='agent' for your log_interaction self-reports only, or source='server' for the MCP observer self-log only.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_id | string | — | Your ACR agent ID (auto-assigned if omitted) |
| agent_name | string | — | Your agent name (alternative to agent_id). Use this if you know your name but not your ID. |
| scope | string | — | Time window for the report |
| source | string | — | Signal source. 'all' = every capture path incl. the host-side hook (default). 'agent' = your log_interaction self-reports only. 'server' = MCP observer self-log only (tool-call timing). |
No output schema declared.
No examples provided.
get_my_agent ~56
Identity card for your ACR agent: agent ID, API key, dashboard link, provider class, status. Pure identity — for "what should I do next?" call `orient_me`; for behavior data call any lens tool directly.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_notifications ~147
An anomaly signal is a behavioral pattern ACR observed across multiple unrelated agents (not a security event). Check for unread anomaly signal notifications about components in your composition. If ACR has observed anomaly signals affecting a skill, MCP, or system you use, it will have sent a notification here. Also delivers version updates. Call this on startup. ACR is a registry and notification layer, not a security check — notifications reflect what the network observed, not a verdict.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_id | string | — | Your agent ID (uses session if omitted) |
| verbose | boolean | — | Render full-length notification IDs instead of the truncated inline display. Useful when copying an ID into `acknowledge_signal`. |
No output schema declared.
No examples provided.
log_interaction ~1,159
Enrich your ACR interaction profile with a manually-reported receipt. Use this for signals the host-side observer cannot infer on its own — chain structure, decision tokens, substitutions, whether the result was actually used. Primary capture is the host-side observer: install @tethral/acr-hook as a Claude Code PreToolUse/PostToolUse hook (or the equivalent for your host) and every tool call your agent makes is recorded automatically, with no LLM cooperation. The hook gives you target + status + duration; this tool is how you add the structured signals the hook can't see. Good moments to call log_interaction: - A multi-step workflow you want the friction lens to analyze as a chain — pass chain_id, chain_position, preceded_by. - A call that replaced a failed one to a different target — pass substitution_of so the substitution-graph lens can learn the swap. - A call whose response you discarded — pass result_used=false to seed the wasted-attention lens. - Reasoning tokens spent deciding *which* target to call — pass decision_tokens. - A call that seemed wrong but didn't fail outright — pass anomaly_flagged=true with a content-free anomaly_detail. If you have not installed the hook yet, this tool can also serve as the only capture path — but expect lens views to be sparse, because LLMs don't reliably self-report every call. Classification fields (all optional, all content-free): activity_class ("language", "math", "visuals", "creative", "deterministic", "sound") and other category fields (target_type, interaction_purpose, workflow_role, workflow_phase, data_shape, criticality) describe the kind of work this call represents. Richer classification unlocks friction breakdowns by kind-of-work as agents specialize. ACR collects interaction metadata only (target names, timing, status, descriptive classifications). No request/response content is collected. We do not track the agent's owner. Terms: https://acr.nfkey.ai/terms
| Name | Type | Req | Description |
|---|---|---|---|
| activity_class | string | — | Kind of work the call represents. Examples: language, math, visuals, creative, deterministic, sound. Expandable — add new values as they emerge. |
| agent_id | string | — | Your ACR agent ID (auto-assigned if omitted) |
| anomaly_detail | string | — | What seemed wrong. DO NOT include credentials or API keys. |
| anomaly_flagged | boolean | — | Set true if something seemed wrong (unexpected behavior, suspicious output, excessive latency) |
| category | string | yes | Interaction category. Use "tool_call" for MCP tool calls and API requests. |
| chain_id | string | — | ID linking sequential calls in a chain. Same chain_id for all calls in a multi-step workflow. |
| chain_position | number | — | Position in chain (0-indexed). First call = 0, second = 1. |
| context_bytes | integer | — | Context payload size in bytes shipped to the target. Enables per-target context-cost analysis. |
| criticality | string | — | How essential this call was to the workflow. Examples: core, enrichment, debug. |
| data_shape | string | — | Content-free description of what kind of data moved. Examples: tabular, text, binary, structured_json, stream, image, audio. |
| decision_tokens | integer | — | Tokens spent deciding *which* target to call, separate from the target call itself. Useful for agents that run reasoning before routing. |
| duration_ms | number | — | Duration in ms (0 if unknown) |
| error_code | string | — | Error code if failed (e.g., "429", "TIMEOUT", "ECONNREFUSED") |
| interaction_purpose | string | — | What the agent was trying to accomplish. Examples: read, write, search, generate, transform, acknowledge. |
| preceded_by | string | — | The target_system_id of the immediately preceding call in a multi-step chain (e.g. 'api:openai.com'). Use this to link sequential calls so ACR can compute directional amplification — how much slower… |
| prompt_cache_hit_ratio | number | — | Fraction of prompt cached (0..1). Pass when the provider reports it. |
| queue_wait_ms | number | — | Time spent waiting in queue before execution (ms) |
| response_size_bytes | number | — | Response payload size in bytes |
| result_used | boolean | — | Did the agent actually use the response? Set false if the response was discarded (e.g. wrong shape, low quality). Seeds the wasted-attention lens. |
| retry_count | number | — | Number of retries (0 = no retries) |
| status | string | yes | Outcome of the interaction |
| substitution_of | string | — | When this call replaces a preceding failed call to a different target, pass the replaced target_system_id here (e.g. 'api:openai.com'). Seeds the substitution-graph lens. |
| target_system_id | string | yes | Target in type:name format (e.g., mcp:github, api:stripe.com, mcp:filesystem) |
| target_type | string | — | More granular target type, e.g. "api.llm_provider", "api.payment", "mcp.database". |
| tokens_used | integer | — | Total tokens used in this interaction (input + output). Optional — enables wasted-token callouts in the friction report. |
| workflow_phase | string | — | If the agent runs in phases. Examples: plan, act, reflect. |
| workflow_role | string | — | Where this call sits in the broader workflow. Examples: initial, intermediate, recovery, cleanup. |
No output schema declared.
No examples provided.
orient_me ~94
Where am I, and what should I do next? Reads your profile, coverage, and unread signals, then returns the single most useful next step for your current state (just registered / some data / steady). Call this when you're unsure where to start.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_id | string | — | Your ACR agent ID (auto-assigned if omitted) |
| agent_name | string | — | Your agent name (alternative to agent_id) |
No output schema declared.
No examples provided.
summarize_my_agent ~98
[DEPRECATED — call `orient_me` instead.] One-call snapshot of profile, friction, and coverage. Superseded by `orient_me`, which routes by state and surfaces the same lens summaries when the agent is steady. Will be removed in a future release.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_id | string | — | Your ACR agent ID (auto-assigned if omitted) |
| agent_name | string | — | Your agent name (alternative to agent_id) |
No output schema declared.
No examples provided.