sap-pam
Provides tools for querying and analyzing SAP Product Availability Matrix (PAM) data from a local CSV export, including product support dates, upgrade paths, expiring maintenance, landscape risk checks, and changes between PAM exports.
Click on "Deploy 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., "@sap-pamcheck my landscape: ECC6 ehp2, NW 7.4, BOBJ 4.3, Solman 7.2"
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.
SAP Support Radar: PAM web app + MCP server
"Which of our SAP systems are running out of support?": answered in seconds, for people and for AI assistants, from the official SAP Product Availability Matrix (PAM).
SAP offers no public API for PAM. It does let any S-user export it as a CSV file. This project turns that export into:
A web app (deployable to SAP BTP) with a dashboard, a searchable product list and a My landscape risk check.
An MCP server, so an AI assistant (Claude, Joule, Copilot or any MCP client) can answer support questions with the complete data instead of guessing from the web.
No SAP data is included or uploaded anywhere. Everyone brings their own PAM export. The web app reads it inside the browser; the MCP server reads it from a local file.
┌─► Web app (SAP BTP, static) → for people: dashboard, filters, landscape check
PAM CSV export ───────┤
└─► MCP server (local) → for AI: ask questions in plain languageWhat it adds on top of a PAM viewer
Feature | What you get |
Upgrade path | For every system: the newest released version of the same product with longer support, any announced version, and SAP's strategic successor where one exists (e.g. ERP → S/4HANA, Solution Manager → Cloud ALM). |
What changed | Compare two PAM exports and see what SAP moved: dates extended or shortened, products newly in customer-specific maintenance, new or removed versions. Changes that affect your landscape are flagged. |
Forgiving landscape matching | Paste system names as people actually write them ("ECC6 ehp2", "Solman", "BOBJ 4.3"), with "did you mean" when unsure. |
AI access (MCP) | The same answers inside Claude or another AI assistant, e.g. "read this design document and tell me what runs out of support and what to upgrade to". |
Upgrade path example
System | Recommended next version | Announced | Strategic successor |
NW 7.4 | SAP NETWEAVER 7.5 (mainstream to 31.12.2027, extended to 31.12.2030) | – | – |
BOBJ 4.3 | SBOP BI PLATFORM 2025 (to 31.12.2027) | SBOP BI PLATFORM 2029 (to 31.12.2031) | – |
ECC6 ehp2 | EHP8 FOR SAP ERP 6.0 (to 31.12.2027, extended to 31.12.2030) | – | SAP S/4HANA 2025 (to 31.12.2032) |
ASE 16.0.4 | SAP ASE 16.1 (to 31.12.2032) | – | – |
Solman 7.2 | latest version listed | – | SAP Cloud ALM (not in PAM) |
Same-product recommendations come straight from PAM data. "Strategic successor" is a short, hand-maintained list of SAP's general direction (app/insights.js), not a PAM link.
What changed example
PAM gives no change log. Upload this month's export and the app compares it with the previous one, which it keeps automatically:
Product | Change | Before → after |
⚠ SAP ASE 16.0.4 | supported shorter | End of mainstream maintenance 31.12.2028 → 31.12.2027 |
⚠ EHP2 FOR SAP ERP 6.0 | status worse | Unrestricted available → In customer-specific maintenance |
SAP NETWEAVER 7.5 | date published | End of extended maintenance – → 31.12.2030 |
SBOP BI PLATFORM 2025 | supported longer | 31.12.2026 → 31.12.2027 |
SAP S/4HANA 2025 | new | Newly listed |
Illustration made with a simulated older export; it is not a real SAP change log.
Related MCP server: Claude Data Buddy
Write system names the way people do
Landscape lists are rarely written in PAM's official wording. A shared matcher (app/matcher.js, used by both the web app and the MCP server) understands shorthand and typos:
You write | Matched PAM product version |
| EHP2 FOR SAP ERP 6.0 |
| SAP NETWEAVER 7.5 |
| SAP SOLUTION MANAGER 7.2 |
| SBOP BI PLATFORM 4.3 |
| SAP S/4HANA 2023 · SAP BW/4HANA 2021 |
| SAP HANA PLATFORM EDITION 2.0 · SAP R/3 4.6C |
It never guesses silently:
A version number you type must appear in the product version (7.4 is never matched to 7.5).
When candidates tie (e.g.
netweaverwithout a version) or the match is weak, it asks "did you mean…" instead.Every automatic match shows what was originally typed, so a person can confirm it.
npm test checks 25 real-world spellings against the PAM data, plus upgrade-path and export-comparison logic on a built-in fixture.
Example: checking a (fictional) landscape
Risk | Typed as | PAM product | Why |
high | NW 7.40 | SAP NETWEAVER 7.4 | Mainstream maintenance ended 31.12.2020; customer-specific maintenance only |
high | ECC6 ehp2 | EHP2 FOR SAP ERP 6.0 | Mainstream maintenance ended 31.12.2025 |
medium | BOBJ 4.3 | SBOP BI PLATFORM 4.3 | Mainstream maintenance ends 31.12.2026 |
low | ECC6 ehp8 | EHP8 FOR SAP ERP 6.0 | Mainstream until 31.12.2027, extended until 31.12.2030 |
low | S4 2023 | SAP S/4HANA 2023 | Mainstream until 31.12.2030 |
unknown | Some legacy tool | – | Not in PAM |
(With "today" = 7 Oct 2026 and the PAM export of the same day.)
Risk levels: critical = out of maintenance · high = mainstream maintenance already ended · medium = ends within the warning window (default 12 months) · low = later · unknown = no date published or no confident match.
Get the data
Log in to the SAP Support Portal, open the Product Availability Matrix and export it as CSV (semicolon-separated, about 1,500 product versions).
Web app
Static HTML/JavaScript, no backend, no build step. Files are in app/.
Run locally: open
app/index.htmlin a browser and drop the CSV on it.Deploy to SAP BTP (Cloud Foundry):
cd app
cf login --sso
cf pushmanifest.yml uses the static-file buildpack with 64 MB memory. The page stores the uploaded data in the visitor's own browser only.
Bundle the data for colleagues without an S-user (internal use): whoever has an S-user exports PAM once a month and runs:
npm run publish-data -- "C:\path\to\extractPAM.csv"
cd app
cf pushVisitors then see the data immediately, without uploading anything. The previous bundled export is kept, so What changed shows the month-to-month differences. A banner shows the export date and asks for a newer export after 30 days. app/data/ is git-ignored, so the data goes to your BTP app, never to GitHub.
⚠ A Cloud Foundry route is reachable by anyone who has the link. Bundled PAM data comes from behind an S-user login, so protect the app (e.g. approuter + XSUAA) before sharing it beyond a proof of concept, and check that sharing PAM content fits your SAP agreement. The page asks search engines not to index it, but that is not access control.
MCP server
Requires Node.js 18 or newer.
npm install
npm run convert -- "C:\path\to\extractPAM.csv"
npm testTool | Example question |
| "Give me an overview of SAP support status. How much ends in the next 6 months?" |
| "When does support for Solman 7.2 end?" |
| "Show me everything PAM says about SAP NETWEAVER 7.5." |
| "Which Technology Platform products lose mainstream maintenance within 12 months?" |
| "Here's our system list. Rate each system's support risk and what to upgrade to." |
| "We run BOBJ 4.3. What should we move to, and how long is that supported?" |
| "What did SAP change in PAM since last month that affects ECC6 ehp8, NW 7.5 and ASE 16.0.4?" |
Comparing exports: each npm run convert of a newer export keeps the current data as data/pam-previous.json. To compare with an older export you already have:
npm run convert -- "C:\path\to\older-export.csv" --as-previousConnect to Claude Desktop: quit Claude Desktop completely, then run npm run add-to-claude-desktop, then start Claude Desktop again. Or add this to claude_desktop_config.json yourself:
{
"mcpServers": {
"sap-pam": {
"command": "node",
"args": ["C:/path/to/pam-mcp-server/src/server.js"]
}
}
}Limitations
Data is as fresh as your export. Re-export regularly; PAM online is always the reference.
Product dependencies are not modelled. For example, extended maintenance for Solution Manager comes from the ERP contract.
Upgrade paths are a starting point, not a migration plan. They do not check technical prerequisites, add-on compatibility or licensing.
Change detection needs two exports. It shows what changed between them, not when SAP made the change.
Empty dates are "unknown", never "no risk". About 7% of product versions have no end-of-mainstream-maintenance date in PAM.
Not affiliated with or endorsed by SAP.
Credits
Inspired by Tobias Hofmann's SAP Product Support Validation app and MCP server, shared on LinkedIn. This project builds on that idea with upgrade paths, export comparison and forgiving landscape matching; it is meant as a complement, not a replacement. The discussion under his post (product dependencies, matching against what is really running) shaped the roadmap.
License
MIT
Available Tools
7 toolspam_changesWhat changed between PAM exportsA
Compare the current PAM export with the previous one: products newly listed or no longer listed, maintenance dates extended or shortened, status changes. Changes that need attention (shortened dates, removed dates, status now in customer-specific/extended/out of maintenance) come first. Optionally focus on a list of systems.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max entries per list (default 100) | |
| systems | No | Only report changes for these systems (free text, e.g. ['ECC6 ehp8', 'NW 7.5']) | |
| onlyNeedsAttention | No | Only changes that need attention |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses output ordering ('changes that need attention come first') and defines what counts as needing attention, which is real behavioral context beyond the schema. However, it is silent on prerequisites (a previous export must exist), the assumed comparison baseline/timeframe, and pagination behavior, leaving meaningful gaps for an unannotated 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?
Three tight sentences: the core comparison is front-loaded, the prioritization rule follows immediately, and the optional scoping parameter is mentioned last. Every sentence adds information with no 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?
With no annotations and no output schema, the description does much of the heavy lifting by describing what changes are returned and their ordering, which effectively substitutes for a return-value spec. It falls short only on operational details such as the prerequisite of an existing prior export and how limits/pagination are applied.
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 100%, so the baseline is 3, but the description adds genuine meaning by defining 'needs attention' (shortened dates, removed dates, status now customer-specific/extended/out of maintenance), which makes onlyNeedsAttention interpretable, and by clarifying that systems is an optional free-text focus list.
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?
States a specific verb (compare) and resource (current vs. previous PAM export) and enumerates the exact change categories reported: new/removed listings, extended/shortened maintenance dates, and status changes. This is clearly distinct from siblings like pam_expiring or pam_summary without needing to open a schema.
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 phrase 'compare the current PAM export with the previous one' implies the usage context, and 'optionally focus on a list of systems' hints at scoping, but there is no explicit when-to-use vs. when-not guidance and no named alternatives among the sibling tools (e.g., when to prefer pam_expiring over this).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pam_check_landscapeCheck a system landscapeA
Check a list of SAP systems/components (free text, e.g. from a design document or system list) against PAM. Matches each to a product version, rates support risk (critical, high, medium, low or unknown) and gives upgrade options (newer version of the same product, announced versions, SAP's strategic successor). Fuzzy matches should be confirmed by a person.
| Name | Required | Description | Default |
|---|---|---|---|
| systems | Yes | System or product names, e.g. ['ECC 6.0 EHP8', 'SAP NetWeaver 7.4', 'BW/4HANA 2021'] | |
| warnMonths | No | Flag as medium risk if mainstream maintenance ends within this many months (default 12) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does reasonably well: it discloses the output content (version match, risk tier, upgrade suggestions) and the exact risk taxonomy (critical/high/medium/low/unknown). It leaves the read-only nature, the 200-item batch ceiling, and any rate/latency behavior to the schema rather than stating them.
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 dense sentences with zero filler: purpose, then the three outputs, then the one caution. The most decision-relevant information (what it checks and against what) 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?
With no annotations and no output schema, the description does the necessary work by enumerating the three return categories and the risk vocabulary. It stops short of covering batch limits, partial-failure behavior, or what a fuzzy vs. exact match looks like in the result.
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 100%, so the baseline is 3, but the description adds genuine meaning: it clarifies that 'systems' accepts free-text design-document entries and that matching is fuzzy, and its mention of the 'medium' tier implicitly explains what warnMonths controls. It does not, however, restate the default of 12 or the 1-60 bounds.
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?
States a specific verb (check) and resource (a list of SAP systems/components against PAM) plus the enrichment it returns: product version match, support-risk rating, and upgrade options. An agent can tell this is the batch/landscape-ingestion counterpart to pam_get_product or pam_upgrade_options, but the description never names a sibling to make the boundary explicit.
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 names the input scenario clearly ('free text, e.g. from a design document or system list'), which tells the agent when this tool fits. It also adds a workflow caveat ('Fuzzy matches should be confirmed by a person'), but gives no explicit when-not condition or pointer to the single-product siblings for follow-up.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pam_expiringProducts running out of supportA
List SAP product versions whose end of mainstream maintenance falls within the next N months, soonest first.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 50) | |
| months | No | Look-ahead window in months (default 12) | |
| category | No | Product category filter | |
| includeAlreadyEnded | No | Also include products whose mainstream maintenance already ended |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses the ordering guarantee ('soonest first') and the look-ahead scoping, but says nothing about permissions, dataset coverage, pagination interaction, or whether the default excludes already-ended versions.
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?
A single front-loaded sentence with the selection criterion and sort order, and zero filler. Nothing could be cut without losing 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 simple list tool with no annotations and no output schema, the description is close to adequate: it conveys scope and ordering. It stops short of describing what a returned entry contains (version, end date, category), which is the one gap an agent would want filled in the absence 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?
Schema description coverage is 100%, so all four parameters (limit, months, category, includeAlreadyEnded) are already documented with defaults and ranges. The description only echoes the 'N months' window and does not add semantics for limit, category, or the already-ended toggle. Baseline 3 applies.
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?
Names a specific verb (List) and resource (SAP product versions) plus the exact selection criterion: end of mainstream maintenance within the next N months. That criterion is distinctive enough to separate it from siblings like pam_search_products, though it never names an alternative 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?
Usage is implied by the criterion (reach for this when planning around maintenance expiry), but there is no explicit when-to-use statement, no exclusions, and no routing against pam_search_products, pam_upgrade_options, or pam_changes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pam_get_productGet one product versionA
Full PAM record for one product version (exact name as in PAM, e.g. 'SAP NETWEAVER 7.5'), including all availability and maintenance dates and the Support Portal link. Suggests close names if not found.
| Name | Required | Description | Default |
|---|---|---|---|
| productVersion | Yes | Product version name as in PAM |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full load, and it does disclose useful behavior beyond the schema: the return payload (all availability and maintenance dates plus the Support Portal link) and the not-found fallback ('Suggests close names if not found'). It omits any note on permissions, rate limits, or result cardinality, which keeps it out of the top tier.
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?
Two short sentences, zero filler, with the core purpose and payload front-loaded before the fallback behavior. Every clause earns its place.
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?
With no output schema, the description correctly enumerates the returned fields, and even covers the failure path via suggested close names. Combined with 100% schema coverage on the lone input parameter, an agent has what it needs to invoke correctly; only permissions/edge-case details are absent.
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 100% for the single parameter, so the baseline is 3. The description adds value beyond the schema by clarifying that the value must be the exact PAM name and giving a concrete example format, which reduces invocation errors. It does not document any format edge cases, so it is not a 5.
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?
States a specific verb and resource (retrieve one product version's full PAM record) and enumerates the contents: availability dates, maintenance dates, and Support Portal link. The example input format ('SAP NETWEAVER 7.5') makes the granularity unambiguous. It does not explicitly name or contrast itself with the sibling pam_search_products, so it stops short of a 5.
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 phrase 'exact name as in PAM' implies this is for lookups where the name is already known, which indirectly contrasts with the fuzzy sibling pam_search_products. However, no alternative is named and there is no explicit when-to-use/when-not guidance, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pam_search_productsSearch SAP productsA
Search SAP product versions in PAM by name (tolerant of shorthand like 'ECC EHP8', 'SolMan 7.2', 'BO 4.3'). Returns support dates, status and a risk assessment.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 20) | |
| query | No | Product name or part of it | |
| status | No | Status filter, e.g. 'Out of maintenance', 'customer-specific' | |
| category | No | Product category filter |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose useful behaviour: partial/shorthand-tolerant matching and the shape of the return (support dates, status, risk assessment). It says nothing about pagination, result ordering, or permission/auth needs, leaving meaningful gaps for a no-annotation 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?
Two tightly packed sentences with zero filler; the core action leads and the parenthetical examples earn their space by disambiguating input format.
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?
There is no output schema or annotation block, and the description compensates by naming the returned fields and match semantics. It is close to complete for a search tool, with only pagination behaviour and filter interplay left unaddressed.
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 100%, so the baseline is 3. The description adds genuine value for the query parameter by clarifying that shorthand forms like 'ECC EHP8' resolve correctly, but it says nothing about how status or category filters interact with the search.
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?
States a specific verb and resource ('Search SAP product versions in PAM') and even clarifies matching behaviour with concrete shorthand examples. It does not distinguish itself from siblings like pam_get_product or pam_summary, so an agent must infer the boundary rather than read it.
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: this is the name-based lookup path for discovering product versions, contrasting implicitly with pam_get_product (single record) and pam_expiring (lifecycle focus). However, no explicit when-to-use, when-not-to-use, or named alternative is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pam_summaryPAM overviewB
Overview of the SAP Product Availability Matrix data: export date, number of product versions, counts by support status and category, and how many reach end of mainstream maintenance in 3/6/12/24 months.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Optional product category filter, e.g. 'Technology Platform' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose the shape of the result (aggregate counts and date-window maintenance forecasts), which is genuine behavioral value for a tool with no output schema, and its aggregate phrasing correctly implies a read-only operation. It says nothing about cost, caching, freshness, or whether the export date is the data cutoff versus a snapshot time.
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?
A single front-loaded sentence that leads with the tool's nature and then enumerates the payload with no filler. The trailing list is dense but each element is informative rather than redundant.
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 one-parameter read-only tool with no annotations or output schema, the description adequately covers what the call returns. However, it leaves the routing decision against pam_expiring unresolved and omits any indication of scope, so an agent can invoke it but cannot confidently choose it over the overlapping sibling.
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 a single optional parameter and 100% schema description coverage, the schema already fully documents 'category'. The description echoes it ('counts by support status and category') but adds no syntax, defaults, or semantics beyond what the schema states, so the baseline of 3 applies.
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?
States a specific verb-and-resource pair ('Overview of the SAP Product Availability Matrix data') and then enumerates exactly what the overview contains (export date, version counts, support-status and category breakdowns, EOM timelines). The 'overview' framing implicitly separates it from the lookup-oriented siblings (pam_get_product, pam_search_products), though no sibling is named explicitly to make the distinction airtight.
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 when-to-use guidance, no prerequisites, and no named alternatives. This gap is substantive rather than cosmetic: the description promises 'how many reach end of mainstream maintenance in 3/6/12/24 months', which overlaps directly with the sibling pam_expiring, and nothing here tells an agent which of the two to pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pam_upgrade_optionsUpgrade options for a productA
What to move to from a given SAP product version: the newest released version of the same product with longer mainstream maintenance, any announced (not yet available) version, and SAP's strategic successor product where one exists (e.g. SAP ERP -> SAP S/4HANA). Accepts shorthand like 'ECC6 ehp7' or 'BOBJ 4.3'.
| Name | Required | Description | Default |
|---|---|---|---|
| product | Yes | Product version, e.g. 'SAP NETWEAVER 7.4' or 'BO 4.3' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. It does disclose the shape and content of the result set (three categories of upgrade option, with the ERP -> S/4HANA example), which is real value in the absence of an output schema, but it says nothing about read-only nature, authentication, or behavior for an unknown/unmatched product string.
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?
One front-loaded sentence that opens with the answer to 'what does this return', followed by the three categories and a shorthand note. Dense but every clause carries information; no 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 one-parameter, non-mutating lookup with no output schema and no annotations, the description covers what an agent needs: what is returned, the successor-product nuance, and accepted input formats. Only minor gaps remain (no sibling routing, no statement on unknown-product 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 100% for the single parameter, so the baseline is 3, but the description earns an extra point by documenting input flexibility the schema does not: shorthand forms such as 'ECC6 ehp7' and 'BOBJ 4.3' are accepted, telling the agent it need not normalize to the schema's example format.
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 resource and scope: upgrade/migration targets for a given SAP product version, enumerated as three concrete categories (newest release, announced version, strategic successor). That content is distinguishable from lookup siblings like pam_get_product or pam_search_products, though those siblings are never named.
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 'What to move to from a given SAP product version', so the agent can infer this is for upgrade-path questions rather than general product lookup. However there is no explicit when-to-use statement, no exclusions, and no routing to pam_get_product or pam_search_products.
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.
7 tool updates
v0.1.0- First observed
pam_changes - First observed
pam_check_landscape - First observed
pam_expiring - First observed
pam_get_product - First observed
pam_search_products - First observed
pam_summary - First observed
pam_upgrade_options
TDQS
Scored across 7 tools
Most tools have clearly distinct purposes (expiring list, summary stats, search, single-record fetch, landscape audit, upgrade paths, changelog). However, pam_search_products and pam_get_product both return product details at different depths, and pam_expiring overlaps conceptually with pam_summary's time-window counts, so a couple of boundaries need care.
All tools share the consistent 'pam_' prefix, which is a strong plus. The second segment mixes noun-style names (pam_summary, pam_changes, pam_upgrade_options) with verb_noun patterns (pam_search_products, pam_get_product, pam_check_landscape), but everything remains readable and predictable.
Seven tools is a well-scoped set for a read-only PAM query surface. Each tool covers a distinct query mode (time-based, aggregate, search, detail, batch audit, upgrades, change diff) and none feels redundant.
The surface covers the key PAM workflows: discovery by name, detail lookup, expiry tracking, summary metrics, landscape auditing, upgrade guidance, and export diffing. A minor gap is the lack of a browse/enumerate tool (e.g. list all products or filter by category/status) without knowing a product name in advance.
Maintenance
Related MCP Connectors
Open, inspect, filter, edit and convert xlsx and csv files from your AI chat. Processing is local.
Open, inspect, filter, edit and convert xlsx and csv files from your AI chat. Processing is local.
Open, inspect, filter, edit and convert xlsx and csv files from your AI chat. Processing is local.
Group, aggregate and pivot spreadsheet or CSV data from your AI chat: filters, sums, sorts.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI clients to query live data from SAP HANA and SQL databases through read-only SELECT queries with CSV-formatted results.MIT
- FlicenseNot gradedqualityDmaintenanceEnables conversational analysis of CSV and Parquet files through natural language, providing statistics, summaries, data type information, and comprehensive multi-step data analysis.-
- FlicenseNot gradedqualityCmaintenanceAI-first CSV analysis tool that enables AI agents to analyze, query, and audit large CSV files directly within conversations, turning raw data into actionable insights.2-
- FlicenseBqualityDmaintenanceEnables Claude to directly access, query, and analyze local CSV files using natural language, keeping data private and local.41-