Skip to main content
Glama
sapien47

sap-pam

by sapien47

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:

  1. A web app (deployable to SAP BTP) with a dashboard, a searchable product list and a My landscape risk check.

  2. 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 language

What 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

ECC6 ehp2

EHP2 FOR SAP ERP 6.0

NW 750 · Netwaever 7.5

SAP NETWEAVER 7.5

Solman 7.2

SAP SOLUTION MANAGER 7.2

BOBJ 4.3 · Business Objects 4.3

SBOP BI PLATFORM 4.3

S4 2023 · bw4hana 2021

SAP S/4HANA 2023 · SAP BW/4HANA 2021

HANA DB 2 · R3 4.6C

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. netweaver without 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.html in a browser and drop the CSV on it.

  • Deploy to SAP BTP (Cloud Foundry):

cd app
cf login --sso
cf push

manifest.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 push

Visitors 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 test

Tool

Example question

pam_summary

"Give me an overview of SAP support status. How much ends in the next 6 months?"

pam_search_products

"When does support for Solman 7.2 end?"

pam_get_product

"Show me everything PAM says about SAP NETWEAVER 7.5."

pam_expiring

"Which Technology Platform products lose mainstream maintenance within 12 months?"

pam_check_landscape

"Here's our system list. Rate each system's support risk and what to upgrade to."

pam_upgrade_options

"We run BOBJ 4.3. What should we move to, and how long is that supported?"

pam_changes

"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-previous

Connect 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 tools
pam_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax entries per list (default 100)
systemsNoOnly report changes for these systems (free text, e.g. ['ECC6 ehp8', 'NW 7.5'])
onlyNeedsAttentionNoOnly changes that need attention

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

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, 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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
systemsYesSystem or product names, e.g. ['ECC 6.0 EHP8', 'SAP NetWeaver 7.4', 'BW/4HANA 2021']
warnMonthsNoFlag as medium risk if mainstream maintenance ends within this many months (default 12)

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

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, 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.

Purpose4/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 50)
monthsNoLook-ahead window in months (default 12)
categoryNoProduct category filter
includeAlreadyEndedNoAlso include products whose mainstream maintenance already ended

TDQS

A3.5/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 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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
productVersionYesProduct version name as in PAM

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 20)
queryNoProduct name or part of it
statusNoStatus filter, e.g. 'Out of maintenance', 'customer-specific'
categoryNoProduct category filter

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/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 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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNoOptional product category filter, e.g. 'Technology Platform'

TDQS

B3.2/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 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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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'.

ParametersJSON Schema
NameRequiredDescriptionDefault
productYesProduct version, e.g. 'SAP NETWEAVER 7.4' or 'BO 4.3'

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

  1. 7 tool updatesv0.1.0
    • First observedpam_changes
    • First observedpam_check_landscape
    • First observedpam_expiring
    • First observedpam_get_product
    • First observedpam_search_products
    • First observedpam_summary
    • First observedpam_upgrade_options

TDQS

A3.7/5.0

Scored across 7 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    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
    C
    maintenance
    AI-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
    -
  • F
    license
    B
    quality
    D
    maintenance
    Enables Claude to directly access, query, and analyze local CSV files using natural language, keeping data private and local.
    4
    1
    -