Skip to main content
Glama

FactGrid (Renamed to FactReason)

Component specification

factreason_component_spec
Read-onlyIdempotent

Look up electronics component pin assignments, voltage range, package, and alternatives. Pass exact partNumber for one component or query for a capability search; partNumber takes precedence if both are supplied. For exact lookups, set responseFormat="compact" for tokenizer-measured context savings; the backward-compatible default is "full". Uses metered access and returns matches or suggestions. Confirm critical values against the manufacturer datasheet.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
queryNoFree-text capability search, e.g. "3.3V ARM MCU with SPI"
partNumberNoExact part number, e.g. "STM32F401RE"
responseFormatNoUse compact for an exact part lookup; full preserves the legacy data responsefull

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
dataNo
hintNo
foundNo
compactNo
messageNo
resultsNo
partNumberNo
provenanceNo
qualityScoreNo
tokenMetricsNo
totalMatchedNo
nearestMatchesNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changed
    • addedInput schema / properties / responseFormat
      Added value: +{
      +  "default": "full",
      +  "description": "Use compact for an exact part lookup; full preserves the legacy data response",
      +  "enum": [
      +    "full",
      +    "compact"
      +  ],
      +  "type": "string"
      +}
    • removedOutput schema / properties / compact / additionalProperties
      Removed value: -true
    • changedOutput schema / properties / compact / type
      Previous value: -"object"New value: +"string"
    • addedOutput schema / properties / provenance
      Added value: +{
      +  "additionalProperties": true,
      +  "type": "object"
      +}
    • addedOutput schema / properties / qualityScore
      Added value: +{
      +  "type": "number"
      +}
    • addedOutput schema / properties / tokenMetrics
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "compactTokens": {
      +      "type": "number"
      +    },
      +    "encoding": {
      +      "const": "o200k_base",
      +      "type": "string"
      +    },
      +    "fullTokens": {
      +      "type": "number"
      +    },
      +    "reductionPct": {
      +      "type": "number"
      +    },
      +    "savedTokens": {
      +      "type": "number"
      +    }
      +  },
      +  "type": "object"
      +}
  2. Changed7 schema fields changed
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / anyOf
      Added value: +[
      +  {
      +    "required": [
      +      "partNumber"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "query"
      +    ]
      +  }
      +]
    • changedInput schema / properties / partNumber / description
      Previous value: -"Exact part number, e.g. \"STM32F401RE\", \"ESP32-WROOM-32E\""New value: +"Exact part number, e.g. \"STM32F401RE\""
    • addedInput schema / properties / partNumber / minLength
      Added value: +1
    • changedInput schema / properties / query / description
      Previous value: -"Alternative: free-text search, e.g. \"3.3V ARM MCU with SPI\""New value: +"Free-text capability search, e.g. \"3.3V ARM MCU with SPI\""
    • addedInput schema / properties / query / minLength
      Added value: +1
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "compact": {
      +      "additionalProperties": true,
      +      "type": "object"
      +    },
      +    "data": {
      +      "additionalProperties": true,
      +      "type": "object"
      +    },
      +    "found": {
      +      "type": "boolean"
      +    },
      +    "hint": {
      +      "type": "string"
      +    },
      +    "message": {
      +      "type": "string"
      +    },
      +    "nearestMatches": {
      +      "items": {
      +        "additionalProperties": true,
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "partNumber": {
      +      "type": "string"
      +    },
      +    "results": {
      +      "items": {
      +        "additionalProperties": true,
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "totalMatched": {
      +      "type": "number"
      +    }
      +  },
      +  "type": "object"
      +}
  3. Added

TDQS

A4.7/5.0
Behavior5/5

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

Beyond annotations, the description discloses metered access, returning matches or suggestions, the backward-compatible default for responseFormat, and the caveat to confirm critical values against datasheets. This meaningfully enriches the readOnly/idempotent annotation data.

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?

Each sentence earns its place: primary function, lookup modes, response format guidance, and a safety caveat. The description is front-loaded and compact 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?

Given the output schema exists, the description need not explain return values. It covers the two input modes, precedence, responseFormat semantics, metered access, and a datasheet verification caveat—complete for a moderately complex lookup tool.

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 coverage is 100%, so the baseline is 3. The description adds value by explaining partNumber precedence, the distinction between exact lookup and capability search, and why compact responseFormat is recommended for exact lookups—information not fully captured in the schema.

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 description uses a specific verb and resource: "Look up electronics component pin assignments, voltage range, package, and alternatives," which clearly defines the tool's function. It distinguishes itself from sibling tools like factreason_api_schema or factreason_deprecation_scan by focusing on component data, not API lifecycle or auth operations.

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

Usage Guidelines4/5

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

It gives clear usage context: pass exact partNumber for a specific component, use query for capability search, and notes precedence when both are supplied. It does not explicitly mention sibling alternatives or exclusions, but the mode guidance is strong and actionable.

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.