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 & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 11 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability34
- AI-judged instruction clarity (poor).Fail
- Context-footprint check failed: tool/resource definitions use about 3112 tokens (~148/item across 21 items; 21 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 Management23
- Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
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
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 tethralai-acr -- npx -y @tethral/acr-mcp
codex mcp add tethralai-acr -- npx -y @tethral/acr-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"tethralai-acr": {
"type": "local",
"command": [
"npx",
"-y",
"@tethral/acr-mcp"
],
"enabled": true
}
}
} openclaw mcp add tethralai-acr --command npx --arg -y --arg @tethral/acr-mcp
mcp_servers:
tethralai-acr:
command: "npx"
args: ["-y", "@tethral/acr-mcp"] {
"mcpServers": {
"tethralai-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.
- 3 Aug 26 +3
- Stability: unverified → 0.23 ▲ functional
- 2 Aug 26 +15
- Malware scan: unverified → pass ▲ security
- 31 Jul 26 −6
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 28 Jul 26 −18
- Malware scan: pass → unverified ▼ security
- 27 Jul 26 +23
- Tool coverage: unverified → 100 ▲ functional
- First check of Schema quality: fail functional
- First check of Schema quality: poor functional
- First check of Schema quality: fail functional
- First check of Tool coverage: 100 functional
- 26 Jul 26 47
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 none
Ecosystem: npm · Outcome: none
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_threat ~115
Acknowledge an anomaly signal notification after reviewing it with your operator. This records that the notification has been reviewed. Acknowledgements expire after 30 days. Note: acknowledging does not remove the observation from the network — it 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 threat is being acknowledged (e.g., "user reviewed and accepted risk") |
No output schema declared.
No examples provided.
check_entity ~134
Ask the ACR network what it knows about a specific skill hash, agent, or system. Returns the raw behavioral signals ACR has observed: interaction counts, failure and anomaly rates, agent adoption counts, and related metadata. This is NOT a security check — ACR does not evaluate, score, or test. It only records what has been observed and surfaces the raw counts. Read-only lookup; no data is sent to ACR.
| Name | Type | Req | Description |
|---|---|---|---|
| entity_id | string | yes | The entity identifier: skill SHA-256 hash, agent_id, or system_id |
| entity_type | string | yes | Type of entity to look up |
No output schema declared.
No examples provided.
check_environment ~60
Check the current ACR network environment: active anomaly signals and network-level observation data. Call on startup to see the state of the broader network. Remember to call log_interaction after every external call so your interaction profile stays current — every lens depends on it.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
configure_deep_composition ~106
Operator privacy control. Enable or disable deep composition capture for this session. When enabled (default), ACR sees the internals of your attached skills and MCPs so it can distinguish internal friction from external friction. When disabled, only top-level component info is sent — ACR no longer sees sub-components. Also settable at startup via the ACR_DEEP_COMPOSITION environment variable.
| Name | Type | Req | Description |
|---|---|---|---|
| enabled | boolean | yes | Set to true to enable deep capture, false to disable. |
No output schema declared.
No examples provided.
get_coverage ~92
Signal coverage: which fields you populate on your receipts and which you don't. Shows transparent rules with their conditions, observed inputs, and whether they triggered. Use this to see if your logging is complete enough for the other lenses to be useful.
| 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.
get_failure_registry ~85
Failure registry: per-target breakdown of failures — status codes, error codes, categories, and median duration when failed. Shows where your interactions are failing and how.
| 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) |
| scope | string | — | Time window |
No output schema declared.
No examples provided.
get_friction_report ~186
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: bottleneck targets, chain overhead, retry waste, directional friction between targets, and how you compare to the population baseline. 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. Data comes from log_interaction — if the report is empty, you need to start logging your external calls.
| 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 |
No output schema declared.
No examples provided.
get_interaction_log ~214
View your interaction history. Use mode "list" for a scannable log, or "detail" (or provide receipt_id) for a full technical readout of a single interaction with network context.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_id | string | — | Your ACR agent ID |
| agent_name | string | — | Your agent name (alternative to agent_id) |
| anomaly_only | boolean | — | Show only anomaly-flagged interactions |
| category | string | — | Filter by category (tool_call, delegation, etc.) |
| limit | number | — | Max interactions to show |
| mode | string | — | Display mode: "list" for scannable log, "detail" for full readout |
| receipt_id | string | — | Specific receipt ID for detail view |
| since | string | — | Show interactions after this ISO timestamp |
| status | string | — | Filter by status (success, failure, timeout, partial) |
| target | string | — | Filter by target system (e.g. "mcp:github") |
No output schema declared.
No examples provided.
get_my_agent ~37
Get your agent profile — name, ID, provider, status, and registration date. Zero-config: uses the auto-assigned agent identity.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_network_status ~58
Network-wide observation dashboard. Shows agent and system totals, system signal rates sorted worst-first, skills with elevated anomaly signals, and recent cross-agent escalations. Use this to see the state of the broader ACR network beyond just your own profile.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_notifications ~97
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) |
No output schema declared.
No examples provided.
get_profile ~97
Your interaction profile: identity, composition summary, composition delta (MCP-observed vs agent-reported), receipt counts, target counts, and days active. This is the foundation view — other lenses (friction, coverage, trend) build on top of these counts.
| 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.
get_skill_tracker ~104
Track skill adoption and anomaly signal rates across the agent population. Use without skill_hash for an overview, or with skill_hash for a deep-dive with provider breakdown and cross-provider anomaly data.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | — | Max skills to show |
| min_anomaly_signals | number | — | Only show skills with at least this many anomaly signals |
| skill_hash | string | — | Specific skill hash for deep-dive view |
| sort | string | — | Sort field |
No output schema declared.
No examples provided.
get_skill_versions ~55
Get version history for a skill. Shows how it has changed over time, whether your version is current, and how many versions behind you are.
| Name | Type | Req | Description |
|---|---|---|---|
| skill_hash | string | yes | The skill hash to look up version history for |
No output schema declared.
No examples provided.
get_stable_corridors ~102
Stable corridors: interaction paths that are consistently reliable — zero failures, low latency variance, sufficient sample count. The filter thresholds are disclosed in the response so you can see exactly what qualifies. Useful for identifying which targets you can rely on.
| 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) |
| scope | string | — | Time window |
No output schema declared.
No examples provided.
get_trend ~98
Trend: per-target latency and failure rate changes over time. Compares current period to previous period and shows raw deltas — no synthetic direction labels. You see the numbers and decide what matters.
| 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) |
| scope | string | — | Time window (compares current to previous) |
No output schema declared.
No examples provided.
log_interaction ~803
Log an interaction to populate your ACR interaction profile. You MUST call this after EVERY external tool call, API request, or MCP server interaction you make. Every lens on your profile (friction, and more to come) depends on these signals — without logging, the lenses return nothing. How to use: After each external call completes, call log_interaction with the target (e.g. "mcp:github", "api:stripe.com"), the category, the outcome status, and how long it took. If something seemed off, set anomaly_flagged to true — anomaly signals feed both your own lens views and the network's anomaly signal notifications. For multi-step workflows, use chain_id, chain_position, and preceded_by to link sequential calls so the friction lens can analyze chain overhead and directional friction between targets. Classification fields (all optional, all content-free): set activity_class ("language", "math", "visuals", "creative", "deterministic", "sound") and other category fields (target_type, interaction_purpose, workflow_role, workflow_phase, data_shape, criticality) to describe the kind of work this call represents. Richer classification unlocks friction breakdowns by kind-of-work, which matters 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. |
| 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. |
| 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 | — | target_system_id of the call that immediately preceded this one. |
| queue_wait_ms | number | — | Time spent waiting in queue before execution (ms) |
| response_size_bytes | number | — | Response payload size in bytes |
| retry_count | number | — | Number of retries (0 = no retries) |
| status | string | yes | Outcome of the interaction |
| 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". |
| 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.
register_agent ~311
Register an agent with the ACR network. Optional — agents are auto-registered on first tool call. ACR collects interaction metadata (target names, timing, status) to build your interaction profile — queryable through behavioral lenses (friction and more) — and to propagate anomaly signal notifications. No request/response content is collected. We do not track the agent owner. Terms: https://acr.nfkey.ai/terms
| Name | Type | Req | Description |
|---|---|---|---|
| api_components | array | — | External APIs the agent calls. Each can declare sub_components (endpoints, sub-APIs). |
| mcp_components | array | — | Rich nested MCP composition. Each MCP can declare sub_components (exposed tools). |
| name | string | — | Human-readable name for this agent (e.g. "my-dev-assistant"). Auto-generated if omitted. |
| operational_domain | string | — | What domain this agent operates in |
| provider_class | string | yes | Agent provider/framework |
| public_key | string | yes | Agent public key or unique identifier (min 32 chars) |
| skill_components | array | — | Rich nested skill composition. Each skill can declare sub_components (sub-scripts, sub-tools) so ACR can distinguish internal from external friction. |
| skill_hashes | array | — | SHA-256 hashes of installed SKILL.md files (flat legacy format) |
| skills | array | — | List of installed skill names (flat legacy format) |
| tool_components | array | — | Tools the agent has bound. Each can declare sub_components. |
No output schema declared.
No examples provided.
search_skills ~165
Search ACR network knowledge about a skill by name, description, or capability. Returns raw signals observed by the network: adoption counts, anomaly signal counts, version info. Not a catalog or a verdict — ACR records what has been observed about skills that exist in public registries. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | — | Filter by category |
| limit | number | — | Max results to return |
| min_agents | number | — | Only return skills observed being used by at least N agents |
| min_anomaly_signals | number | — | Only return skills with at least N observed anomaly signals |
| query | string | yes | Search text (skill name, keyword, or capability) |
| source | string | — | Filter by source (clawhub, github, npm) |
No output schema declared.
No examples provided.
summarize_my_agent ~83
Single-read overview of your interaction profile across all available lenses. Fetches profile, friction summary, and coverage in one call. Use this for a quick status check instead of calling each lens individually.
| 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.
update_composition ~110
Update your agent composition without re-registering. Use this after installing, loading, or removing skills/MCPs/tools to keep your composition current. Preserves your agent identity. Supports both flat legacy fields and rich nested components with sub-components — when sub-components are provided, ACR can see internal interactions (your model engaging its own parts) separately from external interactions.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_id | string | — | Your agent ID (uses current session agent if omitted) |
| composition | object | yes | Your current composition |
No output schema declared.
No examples provided.