mcp-server-redcap
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-server-redcapExport records where age > 18"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-server-redcap
A Model Context Protocol (MCP) server for interacting with REDCap (Research Electronic Data Capture) instances.
Exposes 38 tools covering data access, project design, file management, and longitudinal project structure. Designed for use with LLM agents that need to query or build REDCap projects in natural language conversations.
Tools
Records
Tool | Description |
| Export records with optional filters by field, record ID, or event |
| Import records from a JSON payload |
| Delete records by ID |
| Export a saved REDCap report by its ID |
| Export the mapping from field names to export names (required for checkbox fields) |
| Get the next available record ID respecting the project's auto-numbering |
Metadata
Tool | Description |
| Retrieve project-level information and settings |
| Export the data dictionary, optionally filtered by field or form |
| Export the project audit log, with filters by type, user, record, or date range |
| Export the repeating instruments/events configuration |
| Update the repeating instruments/events configuration |
Instruments & project design
Tool | Description |
| List all instruments with internal names and display labels |
| List arm/event/instrument mappings (longitudinal projects) |
| Add a new field to an instrument (round-trip through data dictionary) |
| Remove a field from the data dictionary |
| Update specific properties of a field without touching the rest |
| Create a new instrument |
| Delete an instrument and all its fields |
| Rename an instrument's internal name |
| Reposition a field within the data dictionary |
| Copy all fields of an instrument into a new one with a field-name prefix |
| Add an instrument to a longitudinal event |
| Remove an instrument from a longitudinal event |
Analysis
Tool | Description |
| Compact overview of the whole project: instruments, field counts, event matrix |
| Find all fields that reference a given field in branching logic or calculations |
| Scan all branching logic for references to non-existent fields |
Files
Tool | Description |
| Download a file attachment from a record field (returned as base64) |
| Upload a file to a record field (accepts base64 content) |
| Delete a file attachment from a record field |
| Export a PDF of one or more instruments for a record (returned as base64) |
Arms & events (longitudinal)
Tool | Description |
| List arms |
| Create or update arms |
| Delete arms by number |
| List events, optionally filtered by arm |
| Create or update events |
| Delete events by unique name |
Surveys
Tool | Description |
| Get a participant-specific survey URL for a record |
| List survey participants and their response status |
Related MCP server: Redash MCP Server
Installation
pip install mcp-server-redcapOr with uv:
uvx mcp-server-redcapREDCap version compatibility
The server works against any REDCap instance running version 8.0 or later. Most tools are available from version 6.x, but export_pdf requires 8.x. Repeating instruments (export_repeating_instruments_events, import_repeating_instruments_events) require 6.16+. Tools that are unavailable on a given instance return a plain error string rather than crashing.
The current REDCap version of the connected instance is included in the output of get_project_structure.
Configuration
The server reads connection details from environment variables:
Variable | Required | Description |
| Yes | Full REDCap API endpoint URL (e.g. |
| Yes | Project-level API token from REDCap → API → Generate Token |
| No | Set to |
Create a .env file in your working directory and the server will load it automatically:
REDCAP_URL=https://redcap.example.org/api/
REDCAP_TOKEN=your_project_token_hereUsage with Claude Code
Add the server to your Claude Code MCP configuration:
claude mcp add redcap -e REDCAP_URL=https://redcap.example.org/api/ \
-e REDCAP_TOKEN=your_token -- uvx mcp-server-redcapOr edit .claude/settings.json manually:
{
"mcpServers": {
"redcap": {
"command": "uvx",
"args": ["mcp-server-redcap"],
"env": {
"REDCAP_URL": "https://redcap.example.org/api/",
"REDCAP_TOKEN": "your_project_token_here"
}
}
}
}Development
git clone https://github.com/msicilia/mcp-server-redcap
cd mcp-server-redcap
uv sync --extra devRun the MCP inspector for interactive local testing:
uv run mcp dev src/mcp_server_redcap/server.pyRun the server directly (stdio transport, for use with MCP clients):
uv run mcp-server-redcapProject structure
src/mcp_server_redcap/
├── __init__.py
├── __main__.py # python -m mcp_server_redcap
├── server.py # FastMCP server factory and entry point
├── connection.py # REDCap project connection (lazy, singleton)
└── tools/
├── __init__.py
├── records.py # record CRUD, field names, next record name
├── metadata.py # project info, data dictionary, logging, repeating instruments
├── instruments.py # instrument listing, field and instrument mutations
├── analysis.py # project structure overview, reference and logic validation
├── files.py # file attachments and PDF export
├── arms_events.py # longitudinal arms and events CRUD
└── surveys.py # survey links and participant listsSee DESIGN.md for the full API reference and design rationale.
License
MIT
Available Tools
38 toolsadd_fieldA
Add a new field to an existing instrument.
Exports the current data dictionary, inserts the new field, and imports the updated dictionary back. The operation is atomic from REDCap's perspective.
Args: form_name: Internal name of the instrument to add the field to. field_name: Variable name for the new field (lowercase, underscores, no spaces). field_type: One of: text, notes, calc, radio, checkbox, yesno, truefalse, select, slider, file, descriptive. field_label: Display label shown to data-entry users. choices: Choice definitions for radio/checkbox/select fields, formatted as "1, Label 1 | 2, Label 2". Ignored for other types. required: Whether the field must be filled before saving the record. branching_logic: Show/hide logic expression (e.g. "[age] > 18"). field_note: Helper text displayed below the field. section_header: Section header to display above this field. validation: Validation type for text fields (e.g. integer, number, date_ymd, email, phone). validation_min: Minimum allowed value (for validated text fields). validation_max: Maximum allowed value (for validated text fields). field_annotation: REDCap action tags and annotations (e.g. @HIDDEN). after_field: Insert the new field immediately after this field name. If None, the field is appended at the end of the instrument.
Returns: Confirmation message with the count of updated fields.
| Name | Required | Description | Default |
|---|---|---|---|
| choices | No | ||
| required | No | ||
| form_name | Yes | ||
| field_name | Yes | ||
| field_note | No | ||
| field_type | Yes | ||
| validation | No | ||
| after_field | No | ||
| field_label | Yes | ||
| section_header | No | ||
| validation_max | No | ||
| validation_min | No | ||
| branching_logic | No | ||
| field_annotation | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It explains the underlying process (exports data dictionary, inserts field, imports back) and notes the operation is atomic, giving insight into side effects and failure behavior. It stops short of detailing permissions or reversibility, but the atomicity note partially addresses that. This is substantially more transparent than typical descriptions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured with a clear purpose statement, a brief process explanation, and a well-organized Args list. Each parameter gets a concise, informative one-liner without redundant text. The length is justified by the 14 parameters, and the front-loaded purpose makes it scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with 14 parameters, the description covers all necessary aspects: purpose, process, parameter semantics, and return value (confirmation message with count). The output schema is also available, so the description need not elaborate further on return structure. Given the complexity, this is highly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does so exceptionally: every parameter is explained with meaning, formatting rules (e.g., field_name lowercase/underscores, choices format), and contextual notes (e.g., ignored for other types). This goes far beyond the schema's field names and types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Add a new field to an existing instrument,' which clearly states the specific action and target resource. This distinguishes it from related tools like add_instrument (adds an instrument) and update_field (modifies an existing field), making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: it is for adding a new field to an existing instrument. It does not explicitly mention alternatives or exclusions, such as warning to use update_field for modifications, but the purpose is so direct that the intended usage is apparent. A brief note contrasting with update_field would elevate this, but current guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_instrumentA
Add a new instrument (form) to the project.
Creates the instrument by inserting a placeholder descriptive field. REDCap requires at least one field per instrument; the placeholder can be removed later once real fields have been added via add_field.
Note: the instrument display label defaults to the prettified form_name and can only be changed in the REDCap UI (Designer → instrument name).
Args: form_name: Internal name for the instrument (lowercase, underscores, no spaces).
Returns: Confirmation message with the placeholder field name.
| Name | Required | Description | Default |
|---|---|---|---|
| form_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry the behavioral transparency burden. It discloses that the tool creates a placeholder descriptive field (a side effect), explains the REDCap constraint that requires at least one field per instrument, and notes the default display label behavior. It also states the return value. This is meaningful behavioral information beyond simple 'creates an instrument.'
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear purpose statement, an explanatory paragraph, a note, and an Args/Returns section. Every sentence provides useful information without redundancy. It is appropriately sized for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and an output schema, the description covers all essential aspects: what the tool does, the side effect of creating a placeholder, the parameter format, and the return value. The note about label modification adds relevant operational context. No critical gaps are apparent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema only lists form_name as a string with no description, so schema coverage is 0%. The description compensates fully by defining form_name as 'Internal name for the instrument (lowercase, underscores, no spaces),' which adds crucial format constraints and semantics that are absent from the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with a clear verb+resource: 'Add a new instrument (form) to the project.' It distinguishes this from the sibling tool add_field by explaining that a placeholder field is added and can later be replaced with real fields via add_field. This makes the tool's specific role unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context on when to use this tool — when adding a new instrument — and relates it to the subsequent use of add_field. It does not explicitly say 'use this instead of X' but clearly implies the workflow and notes that the display label can only be changed in the UI, which is practical guidance for users.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assign_instrument_to_eventA
Assign an instrument to an event in a longitudinal project.
Args: instrument: Internal form name of the instrument. event: Unique event name (e.g. 'baseline_arm_1'). arm_num: Arm number the event belongs to (default 1).
Returns: Confirmation message, or an error if the project is not longitudinal.
| Name | Required | Description | Default |
|---|---|---|---|
| event | Yes | ||
| arm_num | No | ||
| instrument | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the return type (confirmation or error) but does not mention potential side effects, permissions, or behavior on conflict. For a mutation operation, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, with a clear purpose sentence, an Args section, and a Returns section. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is relatively simple (3 params, no nested objects). The description covers the main purpose, parameters, and a notable error condition. Given no annotations, it is fairly complete, though it lacks behavioral details like idempotency or override behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It does so by explaining each parameter's meaning, including an example for 'event' and a default for 'arm_num'. This adds value beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Assign an instrument to an event') and the context ('in a longitudinal project'). It is specific and distinguishable from siblings such as 'unassign_instrument_from_event'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context (longitudinal project) and mentions the error condition if the project is not longitudinal. However, it does not explicitly compare to alternative tools or mention when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_field_referencesA
Find every field that references a given field in branching logic or calculations.
Run this before removing or renaming a field to avoid breaking the project. Returns all fields whose branching_logic or calculated formula reference field_name.
Args: field_name: Variable name to search for.
Returns: JSON object with a list of referencing fields, or a confirmation that no references exist.
| Name | Required | Description | Default |
|---|---|---|---|
| field_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the return behavior ('Returns all fields whose branching_logic or calculated formula reference field_name') and implies a read-only operation via verbs like 'Find' and 'Returns'. It does not explicitly state 'does not modify' but the purpose and actions are clear enough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: purpose (first sentence), usage guidance (second sentence), Args and Returns sections. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and an output schema, the description covers purpose, when to use, parameter meaning, and return format. It is fully contextual for the task at hand.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description compensates by defining field_name as 'Variable name to search for' in the Args section. This adds meaning beyond the schema's simple title 'Field Name'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Find every field that references a given field in branching logic or calculations.' It clearly distinguishes from sibling tools like validate_branching_logic (which validates logic) and remove_field (which removes fields) by focusing on reference detection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: 'Run this before removing or renaming a field to avoid breaking the project.' It tells the agent when to use the tool but does not mention alternatives or when not to use it, so it falls short of an explicit 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clone_instrumentA
Clone all fields of an instrument into a new instrument.
Each cloned field name is prefixed with field_prefix to avoid collisions. Branching logic is cleared on cloned fields because it references the original field names; update it manually with update_field after cloning.
Args: source_form: Internal name of the instrument to clone. new_form_name: Internal name for the new instrument. field_prefix: Prefix to prepend to every cloned field name (e.g. 'v2_' turns 'age' into 'v2_age').
Returns: Confirmation message with the count of cloned fields.
| Name | Required | Description | Default |
|---|---|---|---|
| source_form | Yes | ||
| field_prefix | Yes | ||
| new_form_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses key behaviors: branching logic is cleared because it references original field names, field_prefix prevents collisions, and the return is a confirmation message with the count of cloned fields. This goes beyond basic expectations and flags a non-obvious side effect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the primary action, followed by a caveat, then parameters, then return value. Every sentence adds value with no fluff or repetition, making it appropriately concise for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the purpose, all parameters, a key edge case (branching logic), and the return value. Given the output schema exists (though not shown), and the tool has only three parameters, the description is complete enough for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain each parameter. It does so with clear definitions: source_form (internal name of source), new_form_name (internal name of new instrument), and field_prefix (example 'v2_' turning 'age' into 'v2_age'). This fully compensates for the schema gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool clones all fields of an instrument into a new instrument, using a specific verb and resource. It distinguishes from siblings like rename_instrument or delete_instrument by focusing on the cloning action and the field_prefix mechanism.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (when cloning an instrument with all fields) and mentions a critical follow-up (update_field for branching logic). However, it does not explicitly name alternative tools or state when not to use it, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_armsA
Delete arms from a longitudinal REDCap project.
Args: arms: List of arm numbers to delete.
Returns: Confirmation message with the count of deleted arms.
| Name | Required | Description | Default |
|---|---|---|---|
| arms | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must disclose side effects. It mentions the confirmation message but omits consequences such as impact on associated events/records, irreversibility, or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Short, front-loaded action sentence, with structured Args/Returns sections. Every sentence earns its place without redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one param and an output schema, but the description lacks usage context and safety caveats. It covers core purpose and param, yet not enough to fully guide selection among sibling delete tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one param 'arms' with no description; the description clarifies it expects 'List of arm numbers to delete,' adding essential meaning beyond the raw array-of-strings schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb 'delete' with specific resource 'arms' in 'longitudinal REDCap project.' Distinct from sibling delete_* tools by naming the exact resource type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use vs alternatives or on prerequisites. The description simply states the action with no exclusions, alternatives, or contextual conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_eventsB
Delete events from a longitudinal REDCap project.
Args: events: List of unique event names to delete.
Returns: Confirmation message with the count of deleted events.
| Name | Required | Description | Default |
|---|---|---|---|
| events | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavioral traits. It does not mention that deletion is permanent, the impact on associated data, permission requirements, or error behavior. The description only states the action and return value, which is insufficient for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally concise, with a clear structure using Args and Returns sections. Every sentence contributes meaningful information, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a deletion tool, the description is incomplete. It lacks critical context about side effects, reversibility, ordering, or relationships with other entities (e.g., whether deleting events also affects assigned instruments). The presence of an output schema helps with return values, but the overall description does not sufficiently prepare the agent for a destructive operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema describes 'events' as an array of strings with no further detail. The description adds that it is a 'List of unique event names', which clarifies the semantic meaning and adds a uniqueness constraint. However, it does not specify the exact format of event names or how they should be obtained, leaving some ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the operation ('Delete events') and specifies the resource ('events') within a 'longitudinal REDCap project'. This distinguishes it from sibling tools like delete_file and delete_records, which target different resource types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor any preconditions or constraints (e.g., whether events with data can be deleted). It simply states the action without context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_fileA
Delete a file attachment from a REDCap record field.
Args: record: Record ID containing the file. field: Name of the file upload field. event: Event name (longitudinal projects only).
Returns: Confirmation message.
| Name | Required | Description | Default |
|---|---|---|---|
| event | No | ||
| field | Yes | ||
| record | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the transparency burden. It clearly states the destructive action ('Delete') and the target (file attachment), plus the return type (confirmation message). However, it omits details such as irreversibility, permission requirements, or whether deletion is permanent from storage, which are important for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured with Args and Returns sections. Every sentence adds value, and there is no redundant or vague wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, all parameters, and the return value, which is sufficient for a simple file deletion tool. However, it lacks side-effect caveats such as permanence or prerequisites, and with no annotations, a bit more context could be added, though not essential for basic usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description fully compensates by defining all three parameters in the Args section. It adds semantic meaning: record is the ID, field is the file upload field, and event is for longitudinal projects only, clarifying the optional param's purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific action verb ('Delete') with a clear resource ('file attachment from a REDCap record field'). It distinguishes this tool from similar siblings like delete_records and export_file/import_file by scoping to file attachments on record fields.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The Args section implies usage by specifying required record and field, and notes that event applies only to longitudinal projects. However, it does not explicitly mention alternatives or state when not to use this tool versus delete_records or other sibling tools, so guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_instrumentA
Delete an instrument and all its fields from the project.
Removes every field that belongs to the instrument. REDCap will reject the operation if the instrument contains the record-ID field.
Args: form_name: Internal name of the instrument to delete.
Returns: Confirmation message with the count of removed fields.
| Name | Required | Description | Default |
|---|---|---|---|
| form_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the transparency burden. It discloses that all fields belonging to the instrument are removed, the operation fails if the record-ID field is present, and returns a confirmation message with the count of removed fields. It does not mention permissions or irreversibility explicitly, but the destructive nature is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured, leading with the core action, then detailing behavior, followed by an Args section and a Returns section. Every sentence serves a purpose without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with an output schema, the description provides complete contextual information: what happens (all fields deleted), a key constraint (record-ID field rejection), and the return format (confirmation with count). The AI agent has sufficient information to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only provides 'Form Name' with no description (0% coverage), so the description's 'form_name: Internal name of the instrument to delete' adds crucial semantic meaning, clarifying that the ID is the internal name, not the display label.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Delete an instrument and all its fields from the project,' which specifies the verb, resource, and scope. This also distinguishes the tool from siblings like delete_records (removes data) and remove_field (removes a single field).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used when deleting an entire instrument with all its fields, but it does not explicitly mention alternatives or when-not-to-use cases. It does note that REDCap rejects the operation if the instrument contains the record-ID field, which is useful guidance, but no direct comparison to sibling tools is made.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_recordsA
Delete records from the REDCap project by record ID.
Args: record_ids: List of record IDs to delete.
Returns: Confirmation message with the count of deleted records.
| Name | Required | Description | Default |
|---|---|---|---|
| record_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It states the core delete action and return value but omits critical context for a destructive operation: irreversibility, permissions required, or effects on dependent data. This is a significant gap for a delete tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, front-loaded with the primary action, and uses a clear Args/Returns structure with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with an output schema, the description covers the basics, but it fails to mention permanent consequences or any caveats typically expected for deletion tools. This leaves the description functional but incomplete for safe use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only provides the type (array of strings) and title, with zero description coverage. The description adds that these are 'record IDs to delete', providing minimal semantic meaning beyond the schema. This is adequate for a simple parameter but not richly compensating.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Delete records'), the target resource ('from the REDCap project by record ID'), and distinguishes it from sibling delete tools like delete_file and delete_instrument by specifying 'records'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly conveys when to use this tool (when deleting record-level data by ID) and the context distinguishes it from other delete operations, but it does not explicitly name alternatives or mention when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_armsA
Export arms for a longitudinal REDCap project.
Args: arms: Specific arm numbers to export. None exports all arms.
Returns: JSON array of arms with arm_num and name fields.
| Name | Required | Description | Default |
|---|---|---|---|
| arms | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses the default behavior ('None exports all arms') and the return format ('JSON array of arms with arm_num and name fields'), but does not explicitly state that the operation is read-only or side-effect-free, though 'export' implies it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with clear Args and Returns sections, front-loading the purpose in the first sentence, and contains no superfluous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 1-parameter export tool with an output schema, the description covers the purpose, parameter behavior, return format, and project context ('longitudinal'), making it complete for agent selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides zero description coverage for the 'arms' parameter, but the description fully explains it: 'Specific arm numbers to export. None exports all arms.' This adds essential semantics beyond the schema's bare type definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Export arms for a longitudinal REDCap project' with a specific verb and resource, clearly distinguishing from sibling tools like import_arms and delete_arms. The word 'arms' and 'export' make the action unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving arms but does not provide explicit guidance on when to choose this over sibling tools like export_events or import_arms. Context is clear but no exclusions or alternative mentions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_eventsA
Export events for a longitudinal REDCap project.
Args: arms: Filter to specific arm numbers. None exports events for all arms.
Returns: JSON array of events with event_name, arm_num, day_offset, and other fields.
| Name | Required | Description | Default |
|---|---|---|---|
| arms | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It explains the default behavior when arms is None and specifies the return format. Though it doesn't explicitly state the operation is read-only, 'Export' strongly implies it. The description omits potential edge cases like invalid arm numbers, but the core behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured, with a clear purpose sentence followed by Args and Returns sections. Every sentence serves a function, and the format is easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one optional parameter and an output schema, the description covers the essential aspects: what it does, how the parameter works, and what it returns. While it doesn't mention permissions or edge cases, the simplicity of the tool and the presence of an output schema make this adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The explanation of the arms parameter adds significant meaning beyond the schema's bare type and default. It clarifies that None exports all arms, fully compensating for the 0% schema description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Export events for a longitudinal REDCap project' with a specific verb and resource, clearly distinguishing it from siblings like import_events and export_arms. The focus on events and export makes the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context about longitudinal projects and the arms filter, implying when to use it, but it does not explicitly contrast with alternative tools such as import_events or export_arms. No exclusions or 'when not to use' guidance is provided, so usage is implied rather than explicitly directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_field_namesA
Export the list of export field names for the project.
Checkbox fields have different export names (e.g. 'chk___1', 'chk___2') than their original field name. Use this to resolve the correct names before exporting or referencing checkbox data.
Args: field: Filter to a specific field name. None returns all fields.
Returns: JSON array of objects with original_field_name and export_field_name.
| Name | Required | Description | Default |
|---|---|---|---|
| field | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the checkbox field name transformation with examples and specifies the return structure (JSON array of objects). It implies a safe read-only operation through 'export' and 'list', and provides solid behavioral context beyond the tool name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured with clear sections for purpose, details, Args, and Returns. Every sentence contributes meaningful information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool, the description is nearly complete: it covers purpose, usage, parameter, and return format. While it doesn't mention errors or behavior for non-checkbox fields, these are minor gaps given the tool's simplicity and the presence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'field' is fully described: 'Filter to a specific field name. None returns all fields.' This adds meaning absent from the schema (which has no property descriptions). The description effectively compensates for the 0% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's purpose: exporting a list of export field names for the project. It adds specific scope (project) and details about checkbox field naming conventions, which distinguishes it from sibling tools like export_records or get_metadata, though it doesn't name them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit guidance on when to use the tool: 'Use this to resolve the correct names before exporting or referencing checkbox data.' It provides clear context but does not mention exclusions or alternative tools by name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_fileA
Export a file attachment from a REDCap record field.
Args: record: Record ID containing the file. field: Name of the file upload field. event: Event name (longitudinal projects only). repeat_instance: Repeat instance number for repeating instruments/events.
Returns: JSON object with base64-encoded file content, filename, and content type.
| Name | Required | Description | Default |
|---|---|---|---|
| event | No | ||
| field | Yes | ||
| record | Yes | ||
| repeat_instance | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the return format ('JSON object with base64-encoded file content, filename, and content type') and parameter context, which adds useful behavioral information. It does not explicitly confirm the operation is read-only, but the verb 'export' implies that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: a one-sentence summary, a concise argument list, and a return value specification. Every line adds value, and the most critical information (purpose) is front-loaded. No unnecessary details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose, parameters, and return format. Since an output schema exists, the description does not need to detail return values further. It also covers the optional nature of event and repeat_instance with contextual notes, making it complete for this tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It provides explanations for all four parameters: record, field, event, and repeat_instance, going beyond the schema's type-only definitions. Each parameter gets a meaningful purpose statement, which is essential for correct usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: 'Export a file attachment from a REDCap record field.' It distinguishes itself from sibling tools like export_pdf or import_file by focusing on file upload fields, making it unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool, mentioning 'file upload field' and the optional event/repeat_instance parameters for longitudinal/repeating projects. However, it does not explicitly mention alternatives or exclusions, though the context is sufficient for most cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_loggingA
Export the audit log for the REDCap project.
Args: log_type: Filter by event type. One of: 'export', 'manage', 'user', 'record', 'record_add', 'record_edit', 'record_delete', 'lock_record', 'page_view'. None returns all types. user: Filter to a specific REDCap username. record: Filter to a specific record ID. begin_time: Start of date range as ISO 8601 string (e.g. '2024-01-01T00:00:00'). end_time: End of date range as ISO 8601 string.
Returns: JSON array of log entries.
| Name | Required | Description | Default |
|---|---|---|---|
| user | No | ||
| record | No | ||
| end_time | No | ||
| log_type | No | ||
| begin_time | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the return type (JSON array of log entries) and the available filters, which effectively communicates non-destructive behavior. However, it does not explicitly mention permissions, rate limits, or data ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a one-sentence summary followed by an Args and Returns section. Every line provides necessary information without redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
All 5 optional parameters are described in detail, the return type is specified, and an example time format is provided. The tool's purpose and behavior are fully covered for an agent to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description compensates fully by explaining each parameter, including type, meaning, and allowed values (e.g., log_type enumerations and an ISO 8601 example for begin_time).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Export the audit log for the REDCap project' with a specific verb and resource, distinguishing it from sibling export tools like export_records or export_report.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving audit logs but does not explicitly state when to use it versus alternatives or provide any exclusions. The context is clear enough for basic selection, but no explicit guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_pdfA
Export a PDF of one or all instruments for a record.
Args: record: Record ID to export. None exports all records (use with caution). event: Event name (longitudinal projects only). instrument: Specific instrument to export. None exports all instruments. repeat_instance: Repeat instance number for repeating instruments/events. compact_display: If True, uses compact PDF layout.
Returns: JSON object with base64-encoded PDF content.
| Name | Required | Description | Default |
|---|---|---|---|
| event | No | ||
| record | No | ||
| instrument | No | ||
| compact_display | No | ||
| repeat_instance | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the burden of behavioral disclosure. It discloses the output format (base64-encoded PDF in JSON) and cautions about the all-records case. It does not explicitly state non-destructiveness, but the export verb implies it. This goes beyond a minimal description by adding relevant warnings and return type details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a one-line summary, an Args section, and a Returns section. Every sentence serves a purpose, and the length is appropriate for five parameters. It is front-loaded with the core purpose and maintains readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 5-parameter complexity and absence of annotations, the description covers all parameter semantics and the return format. It lacks explicit error handling or permission requirements, but for an export tool, it provides sufficient context for an AI agent to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description fully compensates by explaining each parameter's meaning and defaults. It clarifies that None for record and instrument means 'all', and that event is longitudinal-only. This adds significant value over the bare schema types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool exports a PDF of instruments for a record, distinguishing it from sibling tools like export_records or export_report. The verb 'Export' and specific resource 'PDF of instruments' make its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on how to use the tool, including parameter-specific instructions like 'record: None exports all records (use with caution)' and 'event: Event name (longitudinal projects only)'. However, it does not explicitly contrast with alternatives or state when-not-to-use scenarios, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_recordsA
Export records from the REDCap project.
Args: fields: Specific field names to export. None exports all fields. records: Specific record IDs to export. None exports all records. events: Specific event names to export (longitudinal projects only). raw_or_label: 'raw' for coded values, 'label' for choice labels. export_checkbox_label: Export checkbox field labels instead of 0/1. limit: Maximum number of records to return (default 1000).
Returns: JSON array of records.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| events | No | ||
| fields | No | ||
| records | No | ||
| raw_or_label | No | raw | |
| export_checkbox_label | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses important behaviors such as default limit of 1000, raw vs label value representations, checkbox label export behavior, and the JSON return format. However, it does not mention error handling, rate limits, or pagination beyond the limit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured with an Args section listing each parameter on its own line and a Returns section. Every sentence earns its place, providing necessary details without fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 6 parameters and no annotations, but the description covers all parameters and return format. It is largely complete for selection and invocation. However, it does not differentiate from similar export tools (export_report, export_file) in the sibling list, which a complete description might address.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description fully compensates by explaining each parameter's purpose and special semantics (e.g., None exports all fields/records, events only for longitudinal projects, raw_or_label choices, checkbox label behavior). This adds significant value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Export records from the REDCap project', using a specific verb and resource. It distinguishes from sibling tools like import_records and delete_records, and the return format is specified.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context through parameter explanations and the export purpose, but it does not explicitly mention when to use this tool versus alternatives like export_report or export_file. No exclusions are stated, but the context is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_repeating_instruments_eventsA
Export the repeating instruments and events configuration.
Requires REDCap 6.16 or later. Returns an error message on older instances.
Returns: JSON array of repeating instrument/event definitions, or an empty array if the project has no repeating instruments or events.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It transparently mentions the version dependency, the error behavior on older instances, and the return format, including the empty-array case when no repeating instruments/events exist. This goes beyond a simple 'export' statement and provides useful operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences, each delivering essential information: the action, a version caveat, and the return behavior. There is no redundant wording or padding, and the most important fact (what it exports) is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple stateless export with no parameters and an output schema, the description is sufficiently complete. It covers the expected output format, the empty case, and the version constraint. The existence of an output schema means the description does not need to enumerate return fields, and it adds the necessary nuance about older RedCap instances.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema description coverage is 100% (vacuously). The description adds no parameter-specific meaning, but the baseline for zero parameters is 4, and there is no additional burden to compensate for undocumented parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Export') and the specific resource ('repeating instruments and events configuration'). The verb 'export' distinguishes it from the sibling 'import_repeating_instruments_events', and the resource is precise enough to differentiate it from other export tools like 'export_records' or 'export_arms'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear usage context by noting the REDCap version requirement and the error on older instances. However, it does not explicitly state when to use this tool instead of alternatives such as 'get_instrument_event_mappings', which may also relate to repeating instrument/event data. There is implicit guidance but no explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_reportA
Export a saved REDCap report by its ID.
Args: report_id: The numeric ID of the report (visible in the REDCap URL when viewing the report).
Returns: JSON array of report rows.
| Name | Required | Description | Default |
|---|---|---|---|
| report_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the return format (JSON array of report rows) and clarifies how to find the report_id, but it does not explicitly state that the operation is read-only or describe what happens for invalid IDs or permissions. This is partial disclosure but lacks deeper behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and well-structured with separate Args and Returns sections. Every sentence provides necessary information without redundancy, making it easy to parse and act on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, clear purpose) and the presence of an output schema, the description is largely complete. It covers the core function and the key parameter. The only gap is lack of explicit usage guidance relative to siblings, which is minor for such a straightforward tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides only the parameter name and type, with no description. The description compensates fully by explaining that report_id is the numeric ID visible in the REDCap URL, adding semantic meaning and a concrete way to obtain it. For a single parameter, this is thorough.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Export a saved REDCap report') and identifies the resource by ID. It distinguishes this tool from siblings like export_records or export_file by targeting a saved report rather than raw data or files.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you have a saved report ID, but it does not explicitly mention when to use this tool over alternatives or when not to use it. There is no reference to sibling export tools or exclusions, leaving the selection context partially unspecified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_survey_linkA
Get a unique survey link for a participant to complete an instrument.
The instrument must be enabled as a survey in REDCap. Returns an error if surveys are not enabled or the instrument is not a survey.
Args: record: Record ID of the participant. instrument: Internal name of the survey instrument. event: Event name (longitudinal projects only). repeat_instance: Repeat instance number (default 1).
Returns: The survey URL as a plain string.
| Name | Required | Description | Default |
|---|---|---|---|
| event | No | ||
| record | Yes | ||
| instrument | Yes | ||
| repeat_instance | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses error conditions and the requirement for surveys to be enabled, but does not state whether the operation is read-only or has side effects (e.g., creating a participant). This is a notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured into clear sections (Overview, Prerequisite, Args, Returns) with no filler. It efficiently conveys all necessary information in a compact form.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and a schema that lacks descriptions, the description covers all critical aspects: purpose, parameter semantics, return type, and error conditions. The only missing piece is a clear statement about side effects or permissions, but overall it is highly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The Args section provides a meaningful one-line description for each parameter, including 'Event name (longitudinal projects only)' and 'Repeat instance number (default 1)'. This compensates fully for the absent schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb phrase 'Get a unique survey link for a participant to complete an instrument', clearly identifying the tool's function and distinguishing it from sibling tools like export_survey_participant_list. It also mentions the prerequisite and error conditions, reinforcing the tool's purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states a clear prerequisite ('instrument must be enabled as a survey') and describes error conditions when usage fails. However, it does not explicitly mention alternative tools or when not to use it, so it falls short of full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_survey_participant_listA
Export the list of survey participants for an instrument.
The instrument must be enabled as a survey in REDCap. Returns an error if surveys are not enabled or the instrument is not a survey.
Args: instrument: Internal name of the survey instrument. event: Event name (longitudinal projects only).
Returns: JSON array of participant records with email, name, and response status.
| Name | Required | Description | Default |
|---|---|---|---|
| event | No | ||
| instrument | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses error behavior (returns error if surveys not enabled or instrument not a survey) and return format (JSON array). This adds behavioral context beyond the schema, though it could mention more about data fields included.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear main sentence, followed by preconditions, Args, and Returns sections. It is concise, front-loaded, and every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a moderately simple tool with 2 parameters and an output schema, the description covers purpose, preconditions, parameter semantics, and return format. It is complete enough for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description's Args section is essential. It explains that 'instrument' is the internal name and 'event' is for longitudinal projects only, providing meaning beyond the bare schema. This is sufficient but could be slightly more detailed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool exports a list of survey participants for an instrument, using a specific verb and resource. It distinguishes from sibling tools like export_survey_link and export_records by focusing on participant list export.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when the tool works (instrument must be enabled as a survey) and mentions error conditions for when it won't. It also specifies that the event parameter is for longitudinal projects only, which helps in selecting appropriate use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_next_record_nameA
Generate the next available record name for the project.
Use this before importing a new record to obtain a valid, unused record ID that respects the project's auto-numbering scheme.
Returns: The next record name as a string.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool returns a valid, unused record ID respecting the auto-numbering scheme and notes the return type as a string. It doesn't clarify whether the ID is reserved upon generation, but the core behavior is well communicated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, with the main purpose in the first sentence and a clear usage instruction and return statement following. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with an output schema, the description provides ample context: why to use it, when to use it, and what it returns. No important aspects are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline score is 4. The description adds no parameter details, but none are needed since the schema is empty and coverage is trivially 100%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Generate') and resource ('next record name'), which fully explains the tool's core function. It also distinguishes from sibling tools by specifying its role before importing a record.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says 'Use this before importing a new record' which gives clear context for when to use the tool. It doesn't mention alternatives or exclusions, but no direct alternative exists among the siblings, making the guidance sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instrument_event_mappingsA
Get the mapping of instruments to events (longitudinal projects only).
Returns: JSON array of arm/event/instrument mappings, or an error message if the project is not longitudinal.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool returns a JSON array of mappings and an error message if the project is not longitudinal. This is useful behavioral context, though it does not explicitly confirm read-only behavior or other potential side effects, which is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, with the core purpose in the first and return behavior in the second. Every sentence adds value, and it is appropriately sized for a simple no-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (zero parameters) and the existence of an output schema, the description is complete: it states the scope (longitudinal only) and the return type, and it notes the error condition. No critical information is missing for an agent to select and invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, making parameter semantics trivial. The description correctly avoids inventing parameters, and the schema already fully covers the empty parameter set. The baseline of 4 is appropriate here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('mapping of instruments to events'), and clarifies it applies to 'longitudinal projects only'. This clearly distinguishes it from siblings like get_instruments or export_events, which focus on individual entities rather than mappings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear usage condition ('longitudinal projects only') and implies the tool is for retrieving mappings, not for modifying them. However, it does not explicitly mention alternative tools or scenarios where a different tool would be more appropriate, so it falls short of a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instrumentsA
Get the list of instruments (forms/surveys) in the REDCap project.
Returns: JSON array of instruments with their internal names and display labels.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It does disclose the return format (JSON array with internal names and display labels), which is a behavioral detail. However, it omits any statement about it being read-only, permission requirements, or edge-case behavior (e.g., empty project), leaving some ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise, well-structured sentences: the first states the purpose, the second specifies the return format. Every word earns its place, and the 'Returns:' label provides clear structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only listing tool, the description covers the essential function and output format. The presence of an output schema further reduces the need to explain return values. A brief mention of using get_metadata for field-level details would enhance completeness, but it's not a critical gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description is not responsible for explaining any. The baseline for no-parameter tools is 4, and the description correctly avoids adding unnecessary parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb ('Get the list of instruments') and resource ('in the REDCap project'), including a parenthetical clarification that instruments are forms/surveys. It does not explicitly differentiate from sibling tools like get_metadata, which also provides project structure, so it misses the highest mark.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as get_metadata or get_project_structure. The description merely states what it does without any contextual pointers, exclusions, or preferred use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_metadataA
Get the data dictionary (metadata) for the REDCap project.
Returns field definitions including type, label, choices, validation, branching logic, and required status.
Args: fields: Filter to specific field names. None returns all fields. forms: Filter to specific instrument/form names. None returns all forms.
Returns: JSON array of field definitions.
| Name | Required | Description | Default |
|---|---|---|---|
| forms | No | ||
| fields | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full behavioral disclosure burden. It discloses the JSON array return format and explains the filtering behavior of None meaning 'all'. However, it does not explicitly state that the operation is read-only or mention any permissions or side effects, leaving a notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured into clear sections: summary, parameter definitions, and return type. It is concise, with no filler or redundant content, and every sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simple two-parameter interface and the presence of an output schema, the description covers the essential information an agent needs: purpose, parameters, defaults, and return format. It is sufficiently complete for correct tool selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero description coverage, so the description must explain the parameters entirely. It does so effectively by defining both 'fields' and 'forms' as filters, including the meaning of None (return all). This adds essential semantics beyond the bare schema types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states it retrieves the data dictionary/metadata for the REDCap project, listing the specific field attributes returned. This clearly distinguishes it from sibling tools like get_instruments (which lists instrument names) or get_project_structure.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when metadata is needed but offers no explicit guidance on when to prefer this tool over siblings such as export_field_names or get_project_structure. No exclusions or alternative tools are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_infoA
Get information about the REDCap project.
Returns project title, PI name, creation time, record count, and other project-level settings.
Returns: JSON object with project metadata.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It clearly indicates a read-only operation ('Get information') and specifies the return content, which conveys no side effects. It does not mention auth or rate limits, but for a simple metadata endpoint this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the primary purpose. The final 'Returns:' block is redundant with the preceding sentence, slightly reducing conciseness, but the overall structure is clean and readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple zero-parameter tool with an output schema, the description fully covers what the tool does and returns. There are no missing gaps in context, and the output schema handles the exact return structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema is trivially complete (100% coverage). The description adds no parameter info, but the 0-param baseline of 4 applies, and no further explanation is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Get') and resource ('REDCap project'), and lists concrete information (title, PI name, etc.) that distinguishes it from sibling tools which operate on records, files, or instruments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (getting project-level settings) but does not explicitly state when to use this tool over alternatives or provide exclusions. For a simple getter, this is adequate but lacks proactive guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_structureA
Return a compact structural overview of the REDCap project.
Useful as a first call when starting work on an existing project. Returns instruments with field counts and type breakdowns. For longitudinal projects, includes the full event/instrument matrix.
Returns: JSON object describing the project structure.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It clearly conveys that this is a read-only operation (repeated 'Return' statements) and explains the output structure (instruments, field counts, type breakdowns, event/instrument matrix). It stops short of stating edge cases like longitudinal vs non-longitudinal behavior explicitly, but the mention of 'for longitudinal projects' adds useful behavioral context. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is unusually efficient: three short paragraphs, each with a distinct purpose (overview, usage timing, output details). No word is wasted; the 'Returns:' line clearly signals the output type. It is front-loaded with the core purpose, making it easy for an agent to scan quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters and a straightforward output schema, the description is complete. It tells the agent what to expect (compact overview, instruments with counts and types, optional event matrix), when to use it (first call), and what form the output takes (JSON object). It does not over-explore because the output schema already exists, and sibling tools cover other concerns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema fully covers that aspect. Baseline for 0 params is 4. The description doesn't need to explain parameters and instead focuses on return semantics, which is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action ('Return a compact structural overview') and clearly identifies the resource (REDCap project). It further distinguishes this tool from siblings by specifying exactly what it returns (instruments with field counts and type breakdowns, plus an event/instrument matrix for longitudinal projects), making it clear that this is not a full metadata or record dump.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Useful as a first call when starting work on an existing project', providing clear when-to-use guidance. It does not mention alternatives or when-not-to-use, but the context of sibling tools (get_project_info, get_metadata, get_instruments) and the 'compact' nature imply it is a quick orientation tool, not a replacement for detailed queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_armsA
Import (create or update) arms in a longitudinal REDCap project.
Args: data: JSON array of arm objects, each with arm_num and name fields. override: If True, existing arms not in the import will be deleted.
Returns: Confirmation message with the count of imported arms.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| override | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and discloses key behaviors: it creates or updates arms, and the override parameter explicitly states that existing arms not in the import will be deleted. This is a significant destructive behavior clearly disclosed. However, it doesn't explain how matching between existing and imported arms works (e.g., by arm_num), which is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a one-sentence purpose statement followed by 'Args:' and 'Returns:' sections. Every sentence earns its place, and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation tool with no annotations, the description covers data format, override behavior, and return value. The main missing piece is the upsert matching logic (e.g., by arm_num) and the default behavior when override is False. The output schema exists, so return value details are adequately addressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero description coverage and only provides titles 'Data' and 'Override.' The description fully compensates: it clarifies that 'data' is a JSON array of arm objects with arm_num and name fields, and explains 'override' as deleting existing arms not in the import. This is essential meaning absent from the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Import (create or update) arms in a longitudinal REDCap project.' This provides a specific verb (import), a clear resource (arms), and clarifies upsert behavior. It distinguishes from siblings like export_arms and delete_arms.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies its usage through the verb and resource, but it does not explicitly mention when to use this tool vs alternatives. No exclusions or alternatives are named. The 'longitudinal REDCap project' context hints at a specific scenario, but explicit guidance is lacking.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_eventsB
Import (create or update) events in a longitudinal REDCap project.
Args: data: JSON array of event objects with event_name, arm_num, day_offset, etc. override: If True, existing events not in the import will be deleted.
Returns: Confirmation message with the count of imported events.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| override | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden. It discloses a key destructive behavior: 'If True, existing events not in the import will be deleted' for the override parameter. However, it doesn't mention other side effects like idempotency, impact on project structure, or potential irreversibility beyond the override.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description follows a clear, conventional structure: summary line, Args section, and Returns section. Every sentence adds value with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with only two parameters and an output schema, the description covers purpose, both parameters, and return value adequately. It lacks mention of alternatives and doesn't enumerate all fields in the data array, but remains complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description is the only source for parameter meaning. It explains data as 'JSON array of event objects with event_name, arm_num, day_offset, etc.' and clarifies override's deletion behavior. However, the 'etc.' is vague and doesn't list all required fields or provide examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states 'Import (create or update) events in a longitudinal REDCap project' with a specific verb and resource, clearly identifying the tool's action. It distinguishes from siblings like export_events and delete_events by emphasizing the create/update nature, though it doesn't explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus alternatives such as export_events or delete_events, nor does it mention when not to use it. Usage is only implied by the verb 'import'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_fileA
Import (upload) a file into a REDCap record field.
Args: record: Record ID to attach the file to. field: Name of the file upload field. file_name: Name to give the file in REDCap. content_base64: Base64-encoded file content. event: Event name (longitudinal projects only). repeat_instance: Repeat instance number for repeating instruments/events.
Returns: Confirmation message.
| Name | Required | Description | Default |
|---|---|---|---|
| event | No | ||
| field | Yes | ||
| record | Yes | ||
| file_name | Yes | ||
| content_base64 | Yes | ||
| repeat_instance | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It states the action and return (confirmation message) but does not disclose side effects such as overwriting existing files, permissions required, or error conditions. Missing key behavioral context beyond the obvious.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured docstring: front-loaded purpose, concise parameter definitions, and a return statement. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers parameters and return value sufficiently for a simple upload tool, but lacks guidance on when to use vs alternatives and does not mention potential side effects or failure modes. Completeness is adequate but has clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has no descriptions (0% coverage), but the description's Args section explains each of the 6 parameters, adding meaning beyond the schema titles. It clarifies event usage and repeat_instance, though it lacks detail on constraints like file size or encoding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb 'Import (upload)' with resource 'file' and target 'REDCap record field'. Distinct from sibling tools like delete_file and export_file, so purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use vs alternatives. The parameter hints (event for longitudinal projects, repeat_instance for repeating instruments) imply some usage constraints, but no exclusions or comparisons to sibling tools like import_records.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_recordsA
Import records into the REDCap project.
Args: data: JSON array string of records to import. Each record must include the project's record ID field.
Returns: Confirmation message with the count of imported records.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description must carry the transparency burden. It does disclose that data must be a JSON array string including the record ID field and that a confirmation with the count is returned. However, it omits critical behavioral details such as whether existing records are overwritten, whether validation occurs, or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is succinct, leading with a clear one-sentence purpose and using structured Args/Returns sections. Every sentence provides necessary information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and an output schema, the description covers the main action, parameter format, and return value. It lacks details on side effects like overwriting and access requirements, but the overall description is reasonably complete for the tool's low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides only the property name 'data' for the single parameter, but the description compensates fully by explaining that it is a JSON array string of records and that each record must include the project's record ID field. This adds meaningful semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Import records into the REDCap project,' using a specific verb and resource. It distinguishes from sibling import_* tools by focusing on records, though it doesn't explicitly contrast with related tools like import_repeating_instruments_events.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as import_events, import_arms, or import_repeating_instruments_events. No exclusions, prerequisites, or preferred contexts are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_repeating_instruments_eventsA
Import (create or update) repeating instruments and events configuration.
Requires REDCap 6.16 or later. Returns an error message on older instances.
Args: data: JSON array of repeating instrument/event objects. Each object should have event_name, form_name, and custom_form_label fields.
Returns: Confirmation message with the count of imported definitions.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It states that it creates or updates, returns an error on older instances, and returns a confirmation message with a count. However, it does not disclose whether the operation replaces or merges existing configuration, or any permissions needed. This is acceptable but leaves behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, with a clear purpose statement, version note, Args, and Returns sections. Every sentence serves a purpose without unnecessary fluff, making it easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with a single parameter and no annotations, the description covers the operation, parameter format, return value, and an error condition. It lacks details on merge/replace semantics, but given the simplicity, it is reasonably complete. The presence of an output schema (though not shown) shifts some burden, but the description still provides essential context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, so the description must compensate. It does this excellently by explaining that 'data' is a JSON array of objects with event_name, form_name, and custom_form_label fields, adding critical meaning beyond the bare schema definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool imports (creates or updates) repeating instruments and events configuration, specifying the exact resource. This distinguishes it from sibling tools like import_records, import_events, import_arms, etc., by focusing on the 'repeating instruments and events' aspect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a version requirement ('Requires REDCap 6.16 or later') which gives some usage context, but it does not explicitly state when to use this tool versus alternatives or provide exclusion criteria. The purpose implies usage for configuring repeating instruments, but no direct guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_fieldA
Move a field to a new position in the data dictionary.
Field order controls the layout of data-entry screens and surveys.
Args: field_name: Variable name of the field to move. after_field: Move the field immediately after this field name. If None, the field is moved to the end of its own instrument.
Returns: Confirmation message.
| Name | Required | Description | Default |
|---|---|---|---|
| field_name | Yes | ||
| after_field | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing behavioral traits. It does add context: moving fields affects data-entry screens, and setting after_field to None moves the field to the end of its instrument. However, it does not mention whether the operation is destructive, requires specific permissions, or has side effects on validation or surveys. This is partial transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a introductory sentence, context, then Args and Returns sections. Each sentence earns its place, with no redundancy. The format is front-loaded and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, the description is quite complete: it covers the operation, parameter behavior, and return value. However, it could be more comprehensive by addressing edge cases or prerequisites (e.g., whether the field must exist or if after_field must be in the same instrument). The existence of an output schema for the confirmation message helps, but a bit more behavioral context would make it complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides detailed semantics for both parameters in the Args section: field_name is the variable name, and after_field specifies the immediate successor with None moving to the end. This fully compensates for the schema's 0% description coverage and is a strong example of parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Move a field to a new position in the data dictionary.' It uses a specific verb and resource, and the additional context about field order controlling layout reinforces the purpose. It distinguishes well from sibling tools like add_field, update_field, and remove_field.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by explaining that field order controls layout, suggesting the tool is for reordering fields. However, it does not explicitly state when to use this tool versus alternatives like update_field for changing field properties or add_field for creating fields. There is no exclusion guidance, so it falls short of a higher score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_fieldA
Remove a field from the project data dictionary.
Exports the current data dictionary, removes the field, and imports the updated dictionary back.
Note: REDCap will reject the removal of the record-ID field and may reject removals that would break branching logic or calculated fields in other instruments.
Args: field_name: Variable name of the field to remove.
Returns: Confirmation message, or an error if the field was not found.
| Name | Required | Description | Default |
|---|---|---|---|
| field_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations to lean on, the description carries the full burden. It explains the export/remove/import mechanism, warns about REDCap's rejection rules, and states the return behavior. This is solid, though it could mention irreversibility or referential integrity beyond branching logic.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-organized: purpose, mechanism, caution, argument, return format. Every sentence earns its place, and the most important detail (what the tool does) is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, clear action) and the presence of an output schema in context signals, the description covers the essentials: action, mechanism, edge cases, and return value. It doesn't discuss auth or other errors, but those are not critical for a REDCap API wrapper with one field parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only specifies field_name as a required string. The description adds semantic value by clarifying it is the 'Variable name of the field to remove,' which distinguishes it from a label. Schema coverage is 0%, so this compensation is necessary and well done.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Remove a field from the project data dictionary'), clearly distinguishing it from sibling tools like add_field, update_field, and move_field. The scope and intent are unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the tool's name and description, but there is no explicit guidance on when to prefer this over alternatives (e.g., deactivating a field via update_field). It does provide cautionary notes about record-ID and branching logic, but stops short of positioning the tool relative to others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_instrumentA
Rename an instrument by updating the form_name on all its fields.
Note: this changes the internal name only. The display label shown in the REDCap UI must be updated separately in Designer.
Args: old_form_name: Current internal name of the instrument. new_form_name: New internal name (lowercase, underscores, no spaces).
Returns: Confirmation message with the count of updated fields.
| Name | Required | Description | Default |
|---|---|---|---|
| new_form_name | Yes | ||
| old_form_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden; it discloses that all fields' form_name are updated, that the change is internal-only, and that a confirmation with count is returned. This is informative, though it does not mention reversibility or potential impacts on references.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, focused sections with no filler—purpose, caveat, args/returns.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has only two simple parameters and the description covers its purpose, parameter formats, side-effect limitation, and return value, making it fully sufficient for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema lacks descriptions, but the Args section in the description defines both parameters, including the naming convention for new_form_name (lowercase, underscores, no spaces), adding significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Rename an instrument') and the mechanism ('updating the form_name on all its fields'), distinguishing it from sibling tools like add_instrument or delete_instrument.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The note about changing only the internal name while the display label must be updated separately provides clear context on when this tool is appropriate, but it does not explicitly reference alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unassign_instrument_from_eventA
Remove an instrument from an event in a longitudinal project.
Args: instrument: Internal form name of the instrument. event: Unique event name (e.g. 'baseline_arm_1').
Returns: Confirmation message, or an error if the mapping did not exist.
| Name | Required | Description | Default |
|---|---|---|---|
| event | Yes | ||
| instrument | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses the return (confirmation or error if mapping didn't exist), but does not mention side effects, reversibility, permissions, or impact on existing data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three tightly scoped sections (action, args, returns) with no redundancy. It is front-loaded with the purpose and each sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 2-parameter mutation, the description covers the operation, parameters, and expected outcome. It lacks a suggestion to verify existing mappings via sibling tools, but is otherwise complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates by defining 'Internal form name' for instrument and 'Unique event name' with an example, adding meaning far beyond the schema's bare property names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Remove') and resource ('instrument from an event'), and clarifies the longitudinal project context, distinguishing it from assign_instrument_to_event.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context is clear (removing an existing mapping), but no explicit alternatives or when-not-to-use guidance is provided. Sibling tools like get_instrument_event_mappings are not mentioned, nor is any prerequisite checking.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_fieldA
Update properties of an existing field in the data dictionary.
Only the properties you pass will be changed; all other properties are preserved exactly as they are. Exports the full dictionary, patches the target field, and imports it back.
Args: field_name: Variable name of the field to update. field_label: New display label. field_note: New helper text shown below the field. required: Set to True to make the field required, False to make it optional. branching_logic: New show/hide logic expression. choices: New choice definitions for radio/checkbox/select fields, formatted as "1, Label 1 | 2, Label 2". validation: New validation type for text fields. validation_min: New minimum allowed value. validation_max: New maximum allowed value. field_annotation: New action tags and annotations. section_header: New section header above this field.
Returns: Confirmation message, or an error if the field was not found.
| Name | Required | Description | Default |
|---|---|---|---|
| choices | No | ||
| required | No | ||
| field_name | Yes | ||
| field_note | No | ||
| validation | No | ||
| field_label | No | ||
| section_header | No | ||
| validation_max | No | ||
| validation_min | No | ||
| branching_logic | No | ||
| field_annotation | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the internal process of exporting the full dictionary, patching the target field, and importing it back, and states that only passed properties change. It also mentions the return behavior (confirmation or error if not found), which is valuable operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: opening purpose, behavior note, detailed arg list, and returns. It is somewhat verbose but necessary given 11 parameters. All content is relevant and front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and a complex schema with 11 parameters, the description is fully complete. It covers all parameters, behavior, return values, and important caveats (preservation of unmentioned properties). No significant gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, but the description's Args section fully compensates with detailed explanations for all 11 parameters, including formats (e.g., choices formatted as "1, Label 1 | 2, Label 2") and semantics (e.g., required as boolean). This is well beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates properties of an existing field in the data dictionary, distinguishing it from siblings like add_field, remove_field, and move_field. The verb 'update' plus the resource 'existing field in the data dictionary' precisely conveys the action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context that only passed properties are changed and all others are preserved, which is key when deciding to use this tool for partial updates. It implies the tool is for existing fields but does not explicitly name alternatives or when-not-to-use conditions, leaving some room for ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_branching_logicA
Scan all branching logic expressions for references to non-existent fields.
Checks every field's branching_logic for [field_name] tokens that do not match any field in the data dictionary. For longitudinal projects, event names in [event_name][field_name] syntax are excluded from the check.
Returns: A confirmation message if all references are valid, or a JSON object listing every broken reference with its location.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description discloses key behavior: it checks every field's branching_logic for invalid [field_name] tokens, excludes event_name syntax in longitudinal projects, and returns either a confirmation or a JSON object with broken references. This is substantial transparency about what gets validated and what the output looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured: a one-line summary, followed by two detailed paragraphs explaining the check and the return value. No unnecessary words or repetition; every sentence contributes meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter validation tool with an output schema, the description fully covers behavior, exclusions, and return format. It provides all needed context for an agent to understand what the tool does without digging into structured data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema coverage is 100% (vacuously). Per the rubric, 0 params gives a baseline of 4. The description appropriately adds no parameter details since none exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: 'Scan all branching logic expressions for references to non-existent fields.' It distinguishes itself from sibling tools like check_field_references by focusing solely on branching_logic expressions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The tool's purpose implies when to use it (to validate branching logic references), but it does not explicitly mention alternatives, exclusions, or when not to use it. There's no guidance on how it differs from similar validation tools like check_field_references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools have clearly distinct purposes, with the export_* family differentiated by target (records, report, files, PDF, arms, events, surveys). A few pairs like get_project_info vs get_project_structure could initially confuse agents, but their descriptions separate metadata from structural overview.
All 38 tools follow a consistent verb_noun pattern using lowercase with underscores (e.g., delete_file, get_metadata, import_records). There are no mixed naming conventions or vague verbs, making the API highly predictable.
38 tools is a substantial surface, but it maps to the full breadth of REDCap functionality (records, files, metadata, instruments, arms, events, surveys, project structure). Each tool has a specific job, and the count feels justified for a comprehensive integration, though it borders on heavy.
The tool set covers the core REDCap workflows: record CRUD, file attachments, data dictionary editing, instrument/event management, longitudinal arms/events, and survey links. Obvious gaps include user/role management and project-level settings updates, but these are peripheral to most programmatic REDCap interactions.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Connect AI clients to biomedical data and tools.
Provides access to Civic Plus - See Click Fix, allowing you to interact with your data via an LLM.…
Manage projects, tasks, time tracking, and team collaboration through natural language.
Search, read, and automate TextMine documents, records, workflows, integrations, and agent tasks.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables LLM-based agents to interact with FHIR healthcare data through natural language prompts, providing full CRUD operations on FHIR resources, document processing, and semantic search capabilities.1398MIT
- AlicenseBqualityBmaintenanceEnables interaction with Redash instances through a standardized interface, allowing users to execute SQL queries, manage data sources, and retrieve query results using natural language.43851MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI applications to interact with Redmine project management systems for issue tracking, time logging, and project management through natural language.24MIT
- AlicenseAqualityDmaintenanceEnables AI assistants to manage Redash queries, dashboards, visualizations, and data sources via natural language.1520MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/msicilia/mcp-server-redcap'
If you have feedback or need assistance with the MCP directory API, please join our Discord server