Skip to main content
Glama

Map

map
Read-onlyIdempotent

Convert identifiers you already hold into FIGIs, in bulk — ISIN, CUSIP, SEDOL, ticker or CIK to the Financial Instrument Global Identifier, for bonds (municipal and corporate), equities and funds. Use when you have a list of identifiers and need the common key to join them on; use search instead when you only have a name. Passing a CUSIP you already possess as a lookup input is fine — the response is keyed on FIGI.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
jobsYesEach job: {idType, idValue, exchCode?, securityType?, marketSecDes?, currency?}. idType is e.g. "ID_ISIN", "ID_CUSIP", "ID_SEDOL", "TICKER". For municipal bonds set marketSecDes: "Muni".

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
countYesNumber of items returned.
itemsYesArray of mapping results for each job

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / jobs / description
      Previous value: -"Each job: {idType, idValue, exchCode?, securityType?, marketSecDes?, currency?}."New value: +"Each job: {idType, idValue, exchCode?, securityType?, marketSecDes?, currency?}. idType is e.g. \"ID_ISIN\", \"ID_CUSIP\", \"ID_SEDOL\", \"TICKER\". For municipal bonds set marketSecDes: \"Muni\"."
  2. Changed2 schema fields changed
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "jobs": [
      +      {
      +        "exchCode": "UN",
      +        "idType": "TICKER",
      +        "idValue": "AAPL"
      +      },
      +      {
      +        "idType": "ISIN",
      +        "idValue": "US0378331005",
      +        "securityType": "Common Stock"
      +      }
      +    ]
      +  },
      +  {
      +    "jobs": [
      +      {
      +        "currency": "USD",
      +        "idType": "CUSIP",
      +        "idValue": "594918104"
      +      }
      +    ]
      +  }
      +]
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "count": {
      +      "description": "Number of items returned.",
      +      "type": "integer"
      +    },
      +    "items": {
      +      "description": "Array of mapping results for each job",
      +      "items": {
      +        "properties": {
      +          "query": {
      +            "description": "Original query parameters",
      +            "type": "object"
      +          },
      +          "result": {
      +            "description": "Array of matching FIGIs",
      +            "items": {
      +              "description": "FIGI instrument record with id, name, ticker, etc.",
      +              "type": "object"
      +            },
      +            "type": "array"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "items",
      +    "count"
      +  ],
      +  "type": "object"
      +}
  3. First observed

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive behavior. The description adds useful behavioral context beyond annotations: bulk conversion, response keyed on FIGI, and reassurance that passing a CUSIP as input is acceptable. It does not mention rate limits or input-size constraints, but these are minor given annotation coverage.

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 three sentences with no filler. The core action and scope are front-loaded, followed by usage guidance, an alternative tool, and a clarifying edge case. Every sentence earns its place.

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 tool's moderate complexity, the presence of an output schema, and rich annotations, the description covers the essential operational context: input types, domain coverage, common use case, disambiguation from `search`, and response keying. Nothing an agent needs to invoke it correctly is missing.

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

Parameters3/5

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

The input schema has 100% coverage of its single parameter, including per-job structure, examples, and the special `marketSecDes: "Muni"` case. The prose description does not need to restate parameter details, so the baseline of 3 applies; it adds contextual value but no additional parameter syntax.

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 ('Convert identifiers... into FIGIs'), names the exact resource (FIGI), and specifies supported identifier types and security classes. It clearly differentiates from sibling `search` by framing map as identifier-to-FIGI conversion rather than name-based lookup.

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

Usage Guidelines5/5

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

The description gives explicit when-to-use guidance: 'Use when you have a list of identifiers and need the common key to join them on.' It also provides a direct alternative with a disambiguating condition: 'use `search` instead when you only have a name.' This leaves little room for an agent to choose incorrectly.

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.