# SAP Concur MCP

> SAP Concur gives your AI agent direct access to corporate expense data, travel records, and employee profiles. Use it to list expenses, check report statuses, calculate totals across reports, and retrieve cost center details without logging into the dashboard.

## Overview
- **Category:** industry-titans
- **Price:** Free
- **Tags:** corporate-expenses, invoice-automation, travel-booking, receipt-tracking, cost-center

## Description

You'll connect your AI agent directly to SAP Concur’s backend data for expenses, travel records, and employee profiles. This server lets you pull raw financial data—like cost centers, specific amounts, and approval statuses—straight into your chat window without having to log in or click through the dashboard.

The server gives your agent immediate access to user identity information; it retrieves the profile details for the logged-in person, giving you their department ID and corporate cost center. You can also ask it to list every valid expense category configured by your organization's policy using `list_expense_types`.

For expenses themselves, there are a few ways you can pull data. The agent pulls full records for one specific expense transaction when you call `get_expense`. If you need a quick overview of everything the current user has submitted, it generates a paginated list through `list_expenses`, showing all recorded spending. You can also get a list specifically targeting any expenses that haven't been assigned to an official report yet by running `list_pending_expenses`.

When you need more context on a specific business event, the server runs `list_attendees` and returns names of people who were present at that meal or event. Furthermore, if your expense involves a full report, `get_expense_report` pulls all detailed information associated with that single submitted document.

To check up on what's going through the approval pipeline, you can use `list_expense_reports` to get a quick list of every report the user has submitted. You can then ask the server to pull basic financial totals across any selection of recent reports using `get_report_summaries`, giving you high-level figures for fast review. For even more detail on a single, specific expense report, `get_expense_report` handles that retrieval.

The agent also provides ways to combine these data points. When checking expenses, the server gives full details for one transaction using `get_expense`. You'll get both individual amounts and associated cost centers right there in the record detail. These tools let you check report statuses by querying submitted expense reports, giving you immediate confirmation on whether a report is pending or fully finalized.

It’s useful to know that these capabilities allow your agent to manage multiple data points simultaneously. For instance, it can pull user metadata for department and cost center details, list all expenses, identify people attending an event, and calculate totals across reports—all without you touching a login screen. You'll get the exact financial figures or employee records needed right where you are.

## Tools

### get_expense
Retrieves full details for a single, specific expense transaction.

### get_expense_report
Pulls all detailed information related to one entire submitted expense report.

### get_report_summaries
Calculates basic, high-level totals for a list of recent reports you specify.

### get_user_profile
Retrieves the profile details (like department and cost center) for the currently logged-in user.

### list_attendees
Pulls a list of names who were present during an expense event, like a business dinner.

### list_expense_reports
Gives you a quick listing of all expense reports submitted by the current user.

### list_expense_types
Retrieves every valid category or type of spending configured in your organization's policy.

### list_expenses
Gets a paginated list of all expenses recorded by the current user.

### list_pending_expenses
Quickly generates a list of any expenses that haven't been assigned to an official report yet.

## Prompt Examples

**Prompt:** 
```
Show me my last 10 expenses in Concur.
```

**Response:** 
```
Here are your 10 most recent expenses:
1. Uber ride — $24.50 (Jan 22)
2. Hotel — $189.00 (Jan 20)
3. Lunch meeting — $47.80 (Jan 18)
Would you like the full report for any of these?
```

**Prompt:** 
```
Get the status of expense report 'rep-8842'.
```

**Response:** 
```
Report 'rep-8842' is **Pending Approval**. Submitted by John Smith on Jan 20 with 5 entries totaling $412.30. Approver: Sarah Wilson.
```

**Prompt:** 
```
Retrieve the profile for employee 'E-4545'.
```

**Response:** 
```
Employee Profile:
- Name: Michael Davis
- ID: E-4545
- Department: Sales
- Cost Center: NA-West (CC-102)
- Manager ID: E-3300
```

## Capabilities

### Get Expense Details
The agent pulls full records for one specific expense entry.

### Check Report Status
You can ask the server to get status updates on any submitted expense report.

### List Expense Totals
It calculates basic financial totals across a selection of recent reports for quick review.

### Get User Metadata
The server retrieves an employee's profile details, including cost center and department ID.

### Find Event Attendees
You can list the names of people associated with a business meal or event expense.

### List All Expenses
The agent pulls a comprehensive, paginated list of your overall expenses from Concur.

## Use Cases

### Auditing a Business Trip
A manager needs to audit last month's spending. They ask the agent to 'List all expenses for the Boston trip.' The agent runs `list_expenses` and then uses `get_report_summaries` to give the manager a total spend figure, solving the need for manual spreadsheet aggregation.

### Checking Policy Compliance
An employee submits an expense report. Before they finalize it, they ask the agent to cross-reference their spending against policy using `list_expense_types` and check if certain categories are allowed for their department via `get_user_profile`.

### Identifying Missing Records
Finance needs a list of all expenses that were captured but never filed. They ask the agent to 'Show me any unassigned costs.' The agent runs `list_pending_expenses`, instantly providing the necessary list for follow-up.

### Confirming Meeting Costs
A user needs to expense a client meal. They ask, 'Who was at the meeting last week?' The agent uses `list_attendees` on the associated report data, retrieving the required names for accurate record-keeping.

## Benefits

- Automate auditing. Instead of manually opening 15 reports to sum up amounts, use `get_report_summaries` to calculate basic totals across multiple documents in one go.
- Validate employee data on the fly. Use `get_user_profile` to instantly confirm a person's cost center and department ID for proper expense coding—no need to search HR systems.
- Pinpoint compliance gaps. Run `list_pending_expenses` to immediately see expenses that are floating around without being attached to any report, flagging potential issues.
- Streamline approvals. Get the full status of a submission using `get_expense_report`, letting your agent tell you if it’s 'Pending Approval' or already paid.
- Deep dive into transactions. If you only have an expense ID, use `get_expense` to pull every single piece of data associated with that transaction, including receipt metadata.

## How It Works

The bottom line is: you talk to it like you're talking to a co-worker who already has access credentials for Concur.

1. First, you connect the SAP Concur integration and register an app to get the necessary Client ID, Secret, and Refresh Token.
2. Next, you issue a natural language command through your agent—for example, 'What's the status of report ABC-123?'
3. The server interprets the request, calls the appropriate tool (like `get_expense_report`), and returns structured data directly to your chat window.

## Frequently Asked Questions

**How do I check if an expense report is approved using get_expense_report?**
You pass the specific report ID to `get_expense_report`. The tool returns a detailed status, showing exactly who submitted it and what its current approval state is (e.g., 'Pending Approval').

**Can I get all expenses for my team? Does list_expenses work that way?**
`list_expenses` only retrieves your own recorded expenses, limited by your authentication scope. If you need a full department view, check the Concur documentation for group-level APIs.

**What is the best tool to get an overall financial picture?**
Use `get_report_summaries`. This function aggregates totals across several reports at once. It's designed specifically for giving management a quick, high-level overview of spending.

**If I forget the report ID, how can I find my recent submissions?**
Run `list_expense_reports`. This tool gives you a clean list of all your submitted reports and their IDs, so you know exactly what to pass into `get_expense_report` next.

**When using `list_expenses`, how do I filter results by cost center or date range?**
You must provide necessary parameters for filtering. The tool accepts filters like 'cost_center' and 'start_date', allowing you to narrow down the list right away.

**What happens if I call `get_expense_report` with a report ID that doesn't exist or is archived?**
The API will return an error code indicating invalid resource access. If you suspect the ID is wrong, run `list_expense_reports` first to verify current identifiers.

**Is it necessary to run `list_expense_types` before I process or categorize any expense data?**
Yes, that's critical. Running `list_expense_types` provides the exact, valid categories your organization uses. This prevents incorrect categorization when processing expenses.

**Does `get_user_profile` show me my own data, or can I look up another employee's profile?**
It only retrieves details for the currently authenticated user linked to your AI client. To get another person’s profile, you need a different tool with elevated permissions.

**How do I get my Concur Client ID and Secret?**
Register a new application in the SAP Concur Developer Portal. Once approved, you'll receive a Client ID and Client Secret.

**What is the Refresh Token used for?**
SAP Concur uses OAuth 2.0. The Refresh Token automatically generates short-lived access tokens without requiring manual login each time.

**Can I submit an expense report via this integration?**
The current version focuses on reading and listing data. Submit and approve capabilities may be added in future updates.