Skip to main content
Glama
toshif1234

sap-ewm-io-agent

by toshif1234

sap-ewm-io-agent

MCP server exposing SAP EWM inventory-optimization tools to Claude: live read-only queries against confirmed EWM CDS views, plus standalone inventory-math calculators (ABC/XYZ classification, safety stock, reorder point, slow-moving detection, demand forecasting).

See ARCHITECTURE.md for the confirmed service map, known data gaps, and what's currently blocked.

Status at a glance

Tool

Status

get_stock_overview

✅ Live

get_bin_utilization

✅ Live

get_storage_type_capacity

✅ Live

get_goods_movement_history

🚫 Blocked (see ARCHITECTURE.md)

abc_xyz_classify

✅ Works standalone (needs caller-supplied value/demand data)

calc_safety_stock

✅ Works standalone

calc_reorder_point

✅ Works standalone

detect_slow_moving_stock

✅ Live on-hand qty + caller-supplied movement age

forecast_demand

✅ Works standalone

Related MCP server: Inventory Analysis MCP Server

Setup

npm install
cp .env.example .env
# fill in SAP_USERNAME / SAP_PASSWORD in .env

Run

npm start

Test

npm test

Runs the calc/ unit test suite (29 tests, no SAP connectivity required).

Configuration

All SAP service names, entity sets, and field definitions are confirmed from live $metadata and stored in src/config/serviceMap.json — this is the single source of truth. Tool code never hardcodes a SAP field name independently of this file; src/lib/s4hClient.js validates requested fields against it and throws a clear error if a field doesn't exist, rather than silently guessing.

Available Tools

9 tools
abc_xyz_classifyA

Classifies materials by ABC (value/Pareto) and XYZ (demand variability) and returns the combined 9-cell matrix label (e.g. 'AX'). DEPENDS ON: caller-supplied { id, value } items for ABC and { id, demandSeries } items for XYZ — demand series cannot currently be sourced automatically from get_goods_movement_history, which is blocked pending CDS-view confirmation (see goodsMovementHistory.js).

ParametersJSON Schema
NameRequiredDescriptionDefault
valueItemsYes
demandItemsYes

TDQS

A4.4/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. Discloses required input format, dependency on caller-supplied data, and a blocking issue with CDS-view. Does not mention side effects or error conditions, but the core behavioral traits are covered.

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?

Two sentences, front-loaded with the main purpose and return format. The second sentence adds essential dependency and constraint context. No wasted words.

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

Completeness4/5

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

Given no output schema and two complex parameters, the description covers inputs, output format, dependencies, and a known limitation. Could mention whether tool is read-only or requires permissions, but overall fairly complete for a classification 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 description coverage is 0%, so description must compensate. It explains that valueItems require {id, value} and demandItems require {id, demandSeries} with demandSeries being an array of numbers. Adds business context about ABC/XYZ and the blocking issue, significantly adding value beyond 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?

Clearly states the tool classifies materials by ABC (value/Pareto) and XYZ (demand variability) and returns a combined 9-cell matrix label like 'AX'. This distinguishes it from sibling tools like calc_reorder_point or forecast_demand which focus on different inventory analyses.

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?

Provides context on when to use: requires caller-supplied valueItems and demandItems. Notes a limitation that demand series cannot be sourced automatically due to a blocked CDS-view, giving practical guidance. Does not explicitly list exclusions or alternatives but implies usage scenarios.

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

calc_reorder_pointA

Calculates reorder point = (avgDemandPerPeriod * avgLeadTimePeriods) + safetyStock. DEPENDS ON: calc_safety_stock's output (or an equivalent safetyStock value) and the same demand/lead-time inputs — ultimately sourced from get_goods_movement_history, which is currently blocked (see that tool's file).

ParametersJSON Schema
NameRequiredDescriptionDefault
safetyStockYes
avgDemandPerPeriodYes
avgLeadTimePeriodsYes

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, description covers the calculation and a blocker but lacks details on error handling or side effects.

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

Conciseness4/5

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

Concise single sentence with added note, but could be structured to list parameters and dependencies more clearly.

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

Completeness3/5

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

Covers the formula and a key dependency, but lacks return value hint; adequate for a straightforward calculator.

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

Parameters2/5

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

0% schema coverage; description only explains safetyStock in context of dependency, not avgDemandPerPeriod or avgLeadTimePeriods beyond formula.

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?

Clearly states it calculates reorder point with the explicit formula, distinct from siblings like calc_safety_stock.

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?

Explains dependency on calc_safety_stock and notes a blocking issue with get_goods_movement_history, providing context on when to use.

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

calc_safety_stockC

Calculates safety stock via the Z-score method (service-level driven). DEPENDS ON: demand/lead-time statistics which would normally come from get_goods_movement_history (currently blocked) — for now, pass these values directly.

ParametersJSON Schema
NameRequiredDescriptionDefault
zNo
demandStdDevYes
serviceLevelNo
leadTimeStdDevNo
avgDemandPerPeriodYes
avgLeadTimePeriodsYes

TDQS

C2.9/5.0
Behavior3/5

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

The description discloses the computation method and the data dependency (demand/lead-time statistics), which is good. However, it lacks details on side effects, assumptions (e.g., normality of demand), or what happens with inputs like z vs serviceLevel.

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

Conciseness4/5

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

The description is concise, consisting of two informative sentences. The key purpose is front-loaded, and the dependency note follows naturally. Minor improvement would be to structure parameter explanations.

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

Completeness2/5

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

The tool has no output schema and requires detailed parameter input. The description does not mention the return value or formula, leaving the agent to infer what 'safety stock' means as an output. This omission reduces completeness.

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

Parameters2/5

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

With 0% schema description coverage, the description carries the full burden for parameter meaning. It only vaguely refers to 'demand/lead-time statistics' and does not explain parameters like avgDemandPerPeriod, demandStdDev, or the interplay between z and serviceLevel.

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

Purpose4/5

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

The description clearly states it calculates safety stock using the Z-score method, which is specific and actionable. However, it does not explicitly distinguish itself from the sibling tool 'calc_reorder_point', which likely has a different focus.

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

Usage Guidelines2/5

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 like calc_reorder_point or forecast_demand. It mentions a dependency on get_goods_movement_history but does not offer explicit usage context or exclusions.

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

detect_slow_moving_stockA

Flags slow-moving/dead stock by on-hand quantity vs. days-since-last-movement. Pulls on-hand quantities live from get_stock_overview for the given warehouse. DEPENDS ON: caller-supplied daysSinceLastMovement per material — this CANNOT currently be derived from get_goods_movement_history (blocked, no date field on that CDS view). Pass a movementAgeByMaterial map keyed by MaterialId.

ParametersJSON Schema
NameRequiredDescriptionDefault
warehouseYesRequired — used to pull current stock via get_stock_overview.
minOnHandQtyNo
staleDaysThresholdNo
movementAgeByMaterialYesMap of MaterialId -> daysSinceLastMovement (required, no automatic source yet).

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries full transparency burdens. It explains the tool's live dependency on get_stock_overview and the required input map. It does not mention side effects or destructive actions, but it is clear about its read-like nature and limitations.

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?

Three sentences covering purpose, dependency, and limitation. No fluff, all information is essential and well-structured.

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

Completeness4/5

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

Given the complexity (nested object, no output schema), the description covers the core behavior, inputs, and a critical limitation. It does not explain the output format, but the lack of output schema makes that less critical. It is sufficient for correct usage.

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?

The description adds value for two of four parameters (warehouse and movementAgeByMaterial) by explaining their role and constraints. The other two parameters (minOnHandQty, staleDaysThreshold) have only schema descriptions. Given 50% schema coverage, the description compensates well for the key parameters.

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 clearly states the tool's purpose: 'Flags slow-moving/dead stock by on-hand quantity vs. days-since-last-movement.' It distinguishes itself from siblings like get_goods_movement_history and get_stock_overview by noting its dependency on pre-calculated movement age and its live stock pull from get_stock_overview.

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?

Explicitly tells the caller that movement age must be provided via a map and warns that get_goods_movement_history cannot be used as a source because it lacks a date field. This guides the agent on when to use this tool and what inputs are required.

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

forecast_demandA

Forecasts next-period demand via simple moving average (sma) or single exponential smoothing (ses). DEPENDS ON: a historical demand series which would normally come from get_goods_movement_history (currently blocked) — pass demandSeries directly for now.

ParametersJSON Schema
NameRequiredDescriptionDefault
alphaNo
methodNo
windowSizeNo
demandSeriesYes

TDQS

A3.6/5.0
Behavior3/5

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 the algorithms (sma, ses) and notes the blocked data source dependency, but does not mention aspects like idempotency, rate limits, or side effects. Behavioral coverage is moderate.

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 two concise sentences with no redundant information. The purpose and key detail about the blocked dependency are front-loaded, making it efficient.

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

Completeness3/5

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

For a tool with 4 params and no output schema, the description covers the basic purpose and input requirements. However, it lacks details on parameter constraints (e.g., alpha range, windowSize meaning) and output format, leaving some gaps.

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

Parameters2/5

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

Schema description coverage is 0%. The description adds meaning to the 'method' parameter by naming sma and ses, but fails to explain 'alpha' and 'windowSize'. It only partially compensates for the schema gap.

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 clearly states the tool forecasts next-period demand using two specific methods (sma and ses), which is specific and distinguished from sibling tools like calc_reorder_point and calc_safety_stock.

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 mentions a dependency on a historical demand series and advises to pass demandSeries directly. It does not explicitly state when to use vs alternatives or provide conditions for choosing between sma and ses, offering only implied usage context.

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

get_bin_utilizationA

Returns EWM bin-level utilization (block flags, distinct material count, empty flag) from the confirmed ZC_EWM_BIN_UTILIZATION_CDS view. NOTE: the raw field IsBlockedForOutbound actually blocks PUTAWAYS (inbound) per its own SAP quickinfo, and IsBlockedForInbound actually blocks STOCK REMOVALS (outbound). This tool returns both the raw fields and semantically-named aliases (isPutawayBlocked / isStockRemovalBlocked) to avoid that ambiguity.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
warehouseYesEWM Warehouse Number (required).
storage_typeNoOptional Storage Type filter.

TDQS

A3.8/5.0
Behavior4/5

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

The description discloses a critical behavioral nuance: the raw fields IsBlockedForOutbound and IsBlockedForInbound have inverted meanings (blocking putaways and stock removals respectively), and the tool provides semantically-named aliases to resolve ambiguity. This goes beyond mere functionality, though it does not cover other potential behaviors like data freshness or performance.

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 two sentences long, front-loaded with the main purpose, and includes a valuable note without redundant information. Every sentence contributes meaning, making it efficient and clear.

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

Completeness4/5

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

Given no output schema, the description adequately explains the return fields (block flags, material count, empty flag) and the alias feature. However, it does not mention pagination or limits of the 'top' parameter, but the tool is simple enough that this is not a critical gap.

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

Parameters3/5

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

Schema description coverage is 67% (two of three parameters have descriptions). The description does not add meaning to parameters beyond what is in the schema; it only mentions return fields. With moderate coverage, a baseline of 3 is appropriate as no parameter information is missing critically.

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 clearly states the tool returns EWM bin-level utilization data including block flags, distinct material count, and empty flag from a specific CDS view. The verb 'Returns' and the resource 'bin-level utilization' are specific and unambiguous, distinguishing it from sibling tools like get_stock_overview or get_goods_movement_history.

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

Usage Guidelines2/5

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_storage_type_capacity or get_stock_overview. The description does not mention use cases, prerequisites, or scenarios where this tool is preferred.

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

get_goods_movement_historyA

BLOCKED. ZC_EWM_GOODS_MOVEMENT_HIST_CDS has no date field to support date_from/date_to filtering, and it is unconfirmed whether the view reads ORDIM_C (confirmed history) or ORDIM_O (open/in-progress tasks). Calling this tool currently raises an error explaining the gap rather than returning data.

ParametersJSON Schema
NameRequiredDescriptionDefault
date_toYes
materialYes
date_fromYes
warehouseYes

TDQS

A4.3/5.0
Behavior5/5

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

No annotations exist, so the description fully discloses the tool's current behavior: it raises an error due to missing date field and uncertain CDS view. This is highly transparent.

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 a single concise sentence that front-loads the critical information ('BLOCKED') and efficiently explains the reason, with no wasted words.

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

Completeness4/5

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

For a blocked tool with 4 required parameters and no output schema or annotations, the description adequately covers the blocking reason and error behavior. However, it lacks parameter-specific details for material and warehouse.

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

Parameters2/5

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

Schema coverage is 0%, and the description only adds meaning for date_from/date_to (stating they are unsupported). Material and warehouse parameters lack any semantic explanation, so the description only partially compensates.

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 explicitly states the tool is BLOCKED and explains why, making the purpose clear despite the tool not functioning. It distinguishes itself from siblings by being a blocked tool.

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?

The description clearly indicates that calling the tool currently raises an error, so agents should avoid using it. However, no alternative tools or explicit 'do not use' directive are provided.

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

get_stock_overviewA

Returns EWM stock overview records (warehouse/storage type/bin/quantity/batch/owner) from the confirmed ZC_EWM_STOCK_OVERVIEW_CDS view. Does NOT support filtering by ERP plant or storage_location (those fields don't exist on this EWM-level view) and does NOT return any age/last-movement timestamp (none exists on this entity).

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoMax records to return.
plantNoNOT SUPPORTED — no plant field on this view. Passing this will raise an error.
materialNoMaterial/Product GUID (maps to MaterialId).
warehouseNoEWM Warehouse Number (maps to Warehouse).
storage_locationNoNOT SUPPORTED — no storage_location field on this view. Passing this will raise an error.

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description fully discloses behavioral constraints: unsupported parameters that raise errors and missing fields. It covers the key error conditions and limitations.

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?

Two sentences, each earning its place: the first states the purpose and returned fields, the second lists important exclusions. No wasted words and front-loaded with the core action.

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

Completeness4/5

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

Given no output schema and multiple parameters, the description is complete: it specifies what is returned and what is not. It lacks details on pagination or top parameter behavior, but that is minor.

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

Parameters5/5

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

The schema already covers all parameters, but the description adds critical meaning: it clarifies that plant and storage_location are not supported and will raise errors, and it reinforces parameter mappings (MaterialId to Material GUID).

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 clearly states the tool returns EWM stock overview records with specific fields (warehouse/storage type/bin/quantity/batch/owner). It effectively distinguishes from siblings like get_bin_utilization and get_storage_type_capacity, which have different purposes.

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?

The description provides explicit guidance on what the tool does NOT support: filtering by plant or storage_location will cause errors, and no age/last-movement timestamps are returned. It lacks mention of alternatives but effectively advises when not to use this tool.

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

get_storage_type_capacityA

Returns per-storage-type capacity utilization (bins, max/free capacity, volume, weight) for a warehouse, from the confirmed ZC_EWM_STORAGE_CAPACITY_CDS view.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
warehouseYesEWM Warehouse Number (required).

TDQS

A3.5/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. Mentions it returns data from a view (implying read-only) but no details on auth, rate limits, or side effects.

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

Conciseness4/5

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

One sentence, but slightly verbose with technical view name. No wasted words, but could be more concise.

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

Completeness3/5

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

For a read tool with no output schema, description lists returned fields but not units, pagination, or ordering. Adequate but has gaps like explaining 'top' parameter.

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

Parameters2/5

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

Schema description coverage is 50% and description adds no additional meaning. The 'top' parameter is undocumented in the description; only 'warehouse' is mentioned via 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?

Clearly states it returns per-storage-type capacity utilization for a warehouse, specifying the source view. Distinguishes from siblings like get_bin_utilization which focuses on bins.

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?

Implies usage for capacity utilization per storage type but no explicit when-to-use or alternatives. Lacks guidance on when to use this vs other tools.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 9 tool updatesv0.1.0
    • First observedabc_xyz_classify
    • First observedcalc_reorder_point
    • First observedcalc_safety_stock
    • First observeddetect_slow_moving_stock
    • First observedforecast_demand
    • First observedget_bin_utilization
    • First observedget_goods_movement_history
    • First observedget_stock_overview
    • First observedget_storage_type_capacity

TDQS

A3.6/5.0
Disambiguation5/5

Each tool targets a distinct inventory analysis function: ABC/XYZ classification, reorder point calculation, safety stock, slow-moving detection, demand forecasting, bin utilization, stock overview, storage capacity, and goods movement history. No two tools overlap in purpose, and descriptions clearly differentiate them.

Naming Consistency3/5

Tool names use snake_case and are generally descriptive, but conventions vary: retrieval tools start with 'get_', calculations with 'calc_', but 'abc_xyz_classify', 'detect_slow_moving_stock', and 'forecast_demand' break this pattern. The mix is still readable but lacks a uniform verb prefix.

Tool Count5/5

9 tools is a well-scoped set for inventory analytics in SAP EWM. It covers core data retrieval (stock, bins, capacity) and key calculations (ABC/XYZ, safety stock, reorder point, slow-moving, forecast) without being overwhelming or too sparse.

Completeness2/5

The server has a critical gap: get_goods_movement_history is blocked, yet it is a dependency for demand forecasting, safety stock, reorder point, and slow-moving detection. This undermines the server's ability to function autonomously, as agents must provide external data for these tools. No write operations exist, which is acceptable for a read-only analytics agent, but the missing data source is a serious limitation.

Maintenance

ActivityStale
ResponsivenessNo issues

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI clients to query live data from SAP HANA and SQL databases through read-only SELECT queries with CSV-formatted results.
    MIT
  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Connects to Odoo ERP to provide comprehensive inventory analysis, including demand forecasting, ABC/XYZ classification, and stock level monitoring. It enables users to identify slow-moving items and generate turnover or aging reports through natural language queries.
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables querying three synthetic SAP systems (ERP, S/4HANA, BW) for master data, transactions, and analytics via natural language or MCP tools, with a live dashboard.
    1
    -
  • F
    license
    A
    quality
    D
    maintenance
    Enables read-only analytics queries on Acumatica ERP data, including sales orders, inventory, shipments, invoices, purchase orders, customers, and OData generic inquiries.
    16
    -

Latest Blog Posts

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/toshif1234/IO-Agent-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server