Low Risk

get_revealed_preference

Query the revealed-preference lens: what the agent *declared* in its composition vs what it *actually called* during the window. Only ACR can see both — so this is the view no self-report and no server log can produce alone. The lens classifies every target into one of four buckets: • bound_un...

Bulk/mass operation — affects multiple targets

Part of the ACR — Agent Composition Records MCP server. Enforce policies on this tool with Intercept, the open-source MCP proxy.

@tethral/acr-mcp Read Risk 2/5

AI agents call get_revealed_preference to retrieve information from ACR — Agent Composition Records without modifying any data. This is common in research, monitoring, and reporting workflows where the agent needs context before taking action. Because read operations don't change state, they are generally safe to allow without restrictions -- but you may still want rate limits to control API costs.

Even though get_revealed_preference only reads data, uncontrolled read access can leak sensitive information or rack up API costs. An agent caught in a retry loop could make thousands of calls per minute. A rate limit gives you a safety net without blocking legitimate use.

Read-only tools are safe to allow by default. No rate limit needed unless you want to control costs.

acr-agent-composition-records.yaml
tools:
  get_revealed_preference:
    rules:
      - action: allow

See the full ACR — Agent Composition Records policy for all 25 tools.

Tool Name get_revealed_preference
Category Read
Risk Level Low

View all 25 tools →

Agents calling read-class tools like get_revealed_preference have been implicated in these attack patterns. Read the full case and prevention policy for each:

Browse the full MCP Attack Database →

Other tools in the Read risk category across the catalogue. The same policy patterns (rate-limit, allow) apply to each.

What does the get_revealed_preference tool do? +

Query the revealed-preference lens: what the agent *declared* in its composition vs what it *actually called* during the window. Only ACR can see both — so this is the view no self-report and no server log can produce alone. The lens classifies every target into one of four buckets: • bound_uncalled — declared in composition, never called. Dead weight in the context window. • bound_underused — declared, called fewer than 3 times. Possibly low-value, possibly just task-gated. • bound_active — declared and called meaningfully. Healthy signal. • called_unbound — called without being declared. Composition drift — your declared environment doesn't match reality. When both composition sources are present (mcp_observed + agent_reported), the summary reports binding_source_disagreements — targets one source lists and the other doesn't. A disagreement on a target the agent actually calls is a strong integrity signal. Defaults to scope=yesterday (complete prior day). A live "today" window always undercounts the agent's steady state. Source defaults to 'agent' so the called-set is the agent's real traffic, not observer self-log.. It is categorised as a Read tool in the ACR — Agent Composition Records MCP Server, which means it retrieves data without modifying state.

How do I enforce a policy on get_revealed_preference? +

Add a rule in your Intercept YAML policy under the tools section for get_revealed_preference. You can allow, deny, rate-limit, or validate arguments. Then run Intercept as a proxy in front of the ACR — Agent Composition Records MCP server.

What risk level is get_revealed_preference? +

get_revealed_preference is a Read tool with low risk. Read-only tools are generally safe to allow by default.

Can I rate-limit get_revealed_preference? +

Yes. Add a rate_limit block to the get_revealed_preference rule in your Intercept policy. For example, setting max: 10 and window: 60 limits the tool to 10 calls per minute. Rate limits are tracked per agent session and reset automatically.

How do I block get_revealed_preference completely? +

Set action: deny in the Intercept policy for get_revealed_preference. The AI agent will receive a policy violation error and cannot call the tool. You can also include a reason field to explain why the tool is blocked.

What MCP server provides get_revealed_preference? +

get_revealed_preference is provided by the ACR — Agent Composition Records MCP server (@tethral/acr-mcp). Intercept sits as a proxy in front of this server to enforce policies before tool calls reach the server.

Enforce policies on ACR — Agent Composition Records

Open source. One binary. Zero dependencies.

npx -y @policylayer/intercept
github.com/policylayer/intercept →
// GET IN TOUCH

Have a question or want to learn more? Send us a message.

Message sent.

We'll get back to you soon.