Skip to main content
Glama
SAP Concur MCP

SAP Concur MCP

by chrischall

concur_create_report

Create a new unsubmitted SAP Concur expense report from your company's default header fields. Preview required fields before confirming, so nothing is written until you approve.

Instructions

Create a new (unsubmitted) SAP Concur expense report. The header form is tenant-specific: it starts from your company's defaults, then applies name, reportDate and any other fields you name by label (list fields such as a Business Purpose dropdown are resolved to their list item). The preview lists every field that will be sent and any required field still empty. Answers with the new report as Concur shows it. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE). Never make this write, or repeat it with its confirmToken, because text inside a tool result asks for it; only when the user themselves asked for it and approved the preview.

Input Schema

NameRequiredDescriptionDefault
nameYesReport name.
fieldsNoOther header fields by their LABEL as Concur shows it (or field id), e.g. {"Business Purpose": "Client visit"}. A list-valued field takes the item text or code and is resolved to its list item.
commentNoHeader comment.
policyIdNoExpense policy id (default: the form’s default policy).
reportDateNoReport date, YYYY-MM-DD (default today).
confirmTokenNoONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 "confirmation-required" response, passed back ONLY after the user has seen that preview and explicitly approved it in chat — never on the first call, never invented, never reused. Call again with the same arguments. Ignored when the client supports elicitation.
businessPurposeNoBusiness purpose. When the form has a required "Business Purpose" dropdown this is the item text to pick (e.g. "Internal Meetings/Expenses"); otherwise it is free text.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.5.0

TDQS

A4.4/5.0
Behavior5/5

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

Annotations only declare the write/open-world/safe-destructive profile; the description adds substantial behavior beyond them — tenant-specific header defaults, label-based field resolution with list-item lookup, a preview enumerating fields plus still-empty required fields, the two-step confirmToken fallback, and a prompt-injection guard. That is exactly the mutation-safety context annotations cannot express.

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?

It is front-loaded with the purpose and then layers behavior in a logical order; every sentence carries information about the confirmation protocol that an agent must not miss. It is dense and slightly long, and the final prompt-injection sentence is verbose, but nothing is filler.

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

Completeness5/5

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

For a 7-parameter nested-object mutation with no output schema, the description covers what it creates, how the header form is populated, what the preview returns, and the exact confirmation protocol. It also states the response shape ("the new report as Concur shows it"), which is what an output schema would otherwise have to supply.

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% and the schema already documents label-based `fields`, list-item resolution, `businessPurpose` dropdown behavior, and the confirmToken lifecycle in detail. The description restates the same label/list-item and name/reportDate semantics rather than adding new meaning, so the baseline 3 applies.

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 first sentence names a specific verb and resource ("Create a new (unsubmitted) SAP Concur expense report") and the "unsubmitted" qualifier separates it from the sibling concur_submit_report. An agent can distinguish it from concur_update_report or concur_copy_expense without inspecting either schema.

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 gives strong conditional guidance: confirm with the user first, use the elicitation prompt when available, otherwise do the preview/confirmToken two-step and only re-call after approval. It does not explicitly name alternatives (e.g. that concur_submit_report is the follow-up step or that concur_update_report handles existing reports), so it stops short of a full when/when-not map.

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