Skip to main content
Glama

Brapi Raw Search

brapi_raw_search
Read-only

Passthrough to any BrAPI POST /search/{noun} endpoint, returning the resolved envelope (async polling resolved upstream). Spills to a canvas dataframe when the upstream advertises more rows than loadLimit AND the result is a list shape; inline result is unchanged. Skips spillover when the caller drives paging via body.page / body.pageSize. No distributions or foreign-key resolution applied.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
bodyYesFilter body passed verbatim to POST /search/{noun}.
nounYesSearch noun — e.g. "observations", "calls", "germplasm".
aliasNoConnection alias registered via brapi_connect. Omit to read the connection registered under alias `default` — i.e. a prior brapi_connect call that did not specify an alias. Calls that used a non-default alias must pass that same alias here.
loadLimitNoCap on rows returned inline. Omit for the deployment default. Rows beyond the cap land in a dataframe; query with brapi_dataframe_query (SQL) instead of paging row-by-row.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
kindNoWhether the server returned inline results or we polled an async search.
nounNoThe `/search/{noun}` segment the body was posted to.
aliasNoAlias of the registered BrAPI connection the call used.
errorNoPresent when the call failed. Absent on success.
resultNoRaw BrAPI `result` value — whatever shape the endpoint returns.
metadataNoBrAPI envelope metadata (pagination and any additional upstream fields).
dataframeNoPresent when the upstream advertised more rows than `loadLimit` AND the result is a list shape. The inline `result` is unchanged; the dataframe carries the full union of pages — query with brapi_dataframe_query.
suggestionNoEmitted when a curated goal-shaped tool covers this search.
searchResultsDbIdNoPopulated when the server returned an async searchResultsDbId.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only declare readOnlyHint and openWorldHint; the description adds substantial non-obvious behavior: async polling resolved upstream, spillover to a canvas dataframe under a precise condition, unchanged inline result, the paging exception via body.page/body.pageSize, and the lack of distributions/FK resolution. This is rich, accurate behavioral disclosure beyond what annotations or schema provide.

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

Conciseness5/5

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

The description is four dense sentences, each carrying a distinct and non-redundant rule: core passthrough, spillover condition, paging exception, and scope limitation. It is front-loaded with the central verb and resource, and every sentence earns its place without fluff.

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

Completeness5/5

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

For a generic passthrough tool with four parameters and an existing output schema, the description covers all essential call-time behavior: request mechanics, optional parameters, spillover behavior, paging interaction, and what transformations are not applied. Nothing an agent needs to invoke it correctly appears to be missing.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3, and this description adds extra semantic value: it explains what loadLimit actually controls (rows beyond the cap land in a dataframe) and how body.page/body.pageSize changes the behavior. Those details are not fully evident from the property names or schema descriptions alone.

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

Purpose5/5

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

The opening sentence states the exact mechanism ('Passthrough to any BrAPI POST /search/{noun} endpoint') and scope ('any'), making the generic nature immediately clear. The closing clause ('No distributions or foreign-key resolution applied') and the 'raw' in the name differentiate it from the brapi_find_* typed search siblings. This is a specific verb+resource description that enables correct tool selection.

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

Usage Guidelines3/5

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

The description provides operational guidance for specific cases: when spillover occurs, when it is skipped, and it explicitly routes querying of spilled data to brapi_dataframe_query. It also explains the alias default behavior. However, it never explicitly states when to prefer this generic raw search over the typed brapi_find_* tools or brapi_raw_get, so usage selection guidance is partially left to inference.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.