Skip to main content
Glama
ShieldLabs-ai

@shieldlabs-ai/mcp

Official

Get History record

shieldlabs_get_history
Read-onlyIdempotent

Retrieve a single identification, user, visitor, device, or IP history record by domain UUID and record ID for risk and activity review.

Instructions

Read one identification, user, visitor, device or ip card. domain is the public UUID and resource_id is the record id. The same flat list filters apply, plus device_id_source (legacy or fp21_record). relation, relation_limit and relation_page_token are not accepted. Nested filter, chips, offset and include_total are rejected.

Input Schema

NameRequiredDescriptionDefault
toNo
idsNo
fromNo
ai_botNo
domainYesPublic domain UUID from shieldlabs_list_domains, not the hostname.
is_torNo
is_vpnNo
sourceNo
campaignNo
is_proxyNo
resourceYes
snapshotNo
banned_ipNo
ai_browserNo
risk_bandsNo
ip_mismatchNo
resource_idYes
is_incognitoNo
latency_testNo
risk_signalsNo
is_antidetectNo
is_search_botNo
is_js_disabledNo
is_os_mismatchNo
device_spoofingNo
hre_min_devicesNo
response_formatNomarkdown
check_incompleteNo
device_id_sourceNo
hre_min_accountsNo
is_privacy_relayNo
is_os_not_detectedNo
is_timezone_mismatchNo
is_browser_automationNo
network_check_incompleteNo

Output Schema

NameRequiredDescriptionDefault
entityYes
resourceYes
untrusted_data_noteYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv1.1.0

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds real value by enumerating rejected parameters and clarifying that `domain` is the public UUID rather than a hostname, but says nothing about not-found behavior, error shapes, or how the filter params constrain a single-record fetch.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four dense sentences, front-loaded with the read action and the two required identifiers before the filter rules. No filler, though the two rejection sentences could be merged into one.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described. However, for a 35-parameter tool with 3% schema coverage, the description leaves the bulk of the filter surface unexplained and offloads it to a sibling tool's documentation — an agent could call this correctly only by reading shieldlabs_list_history first.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 3% across 35 parameters, so the description carries most of the burden — and it only explains `domain`, `resource_id`, `device_id_source` (whose values are already an enum) and the rejected params. The ~30 boolean/array filters (risk_bands, hre_min_devices, is_antidetect, etc.) get no explanation at all beyond the pointer to the list tool's 'flat list filters'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource: 'Read one identification, user, visitor, device or ip card', which maps directly to the `resource` enum and distinguishes it from the list sibling by the word 'one'. It never names shieldlabs_list_history explicitly, so the agent must infer the single-vs-list split from context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The exclusions are genuinely useful ('relation, relation_limit and relation_page_token are not accepted', 'nested filter, chips, offset and include_total are rejected'), steering the agent away from params it might otherwise guess. But 'The same flat list filters apply' is an unqualified cross-reference that only makes sense if the agent has already loaded shieldlabs_list_history, and there is no statement of when to prefer this over that sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.