# How to connect Ramp MCP with ChatGPT

```json
{
  "title": "How to connect Ramp MCP with ChatGPT",
  "toolkit": "Ramp MCP",
  "toolkit_slug": "ramp_mcp",
  "framework": "ChatGPT",
  "framework_slug": "chatgpt",
  "url": "https://composio.dev/toolkits/ramp_mcp/framework/chatgpt",
  "markdown_url": "https://composio.dev/toolkits/ramp_mcp/framework/chatgpt.md",
  "updated_at": "2026-09-19T05:36:00.979Z"
}
```

## Introduction

### How to connect Ramp MCP with ChatGPT
[ChatGPT](https://chatgpt.com/) can take action across your apps and files, stay with a project for hours, and turn a goal into finished materials like sheets, slides, and docs, not just answers.
In this guide, I will explain the easiest and most secure way to connect your Ramp account to ChatGPT via Composio Connect, so it can analyze spend, issue virtual cards, manage your bills, approve expenses, and reconcile transactions through natural language commands without ever putting your account credentials at risk.

## Also integrate Ramp MCP with

- [Claude Cowork](https://composio.dev/toolkits/ramp_mcp/framework/claude-cowork)
- [Hermes](https://composio.dev/toolkits/ramp_mcp/framework/hermes-agent)
- [Atomic Agent](https://composio.dev/toolkits/ramp_mcp/framework/atomic-agent)

## TL;DR

### Why use Composio over default connectors?
- Apps with read and write access. Default connectors mostly can read your data. Composio's Ramp integration lets ChatGPT take actions like creating drafts, sending updates, labeling records, and more.
- 1,500+ SaaS toolkits out of the box. Composio gives you instant access to a vast catalog of pre-built connectors, from Gmail and Slack to Notion, Linear, and Salesforce.
- One MCP server for every app. Connect any of your applications on demand through a single endpoint, rather than juggling a separate server for each app.
- Smart, context-aware tool loading. Unlike traditional MCP servers that dump every available tool into the LLM context window, Composio searches for and loads only the tools relevant to the task at hand.
- Cross-app automation. Chain actions across multiple apps in a single run - fetch a thread, summarize it in Notion, and post highlights to Slack without leaving the conversation.

## Connect Ramp MCP to ChatGPT

### Prerequisites
- A ChatGPT account. We will use the [ChatGPT desktop app](https://openai.com/chatgpt/download/), and the steps are the same on the web.
- Access to the Ramp workspace you want to connect.
- [Composio plugin](https://dashboard.composio.dev/login?utm_source=toolkits&utm_medium=framework_template&utm_campaign=chatgpt&utm_content=composio_connect&next=%2F~%2Forg%2Fconnect%2Fclients%2Fchatgpt).
Note: Composio connects through OAuth. You will be asked to sign in and approve specific permissions. Review the permission screen carefully if you are using a work account.
### Step-by-step: Connect Ramp to ChatGPT
### 1. Install the Composio plugin
Click the button. ChatGPT opens the Composio plugin page. Click Install plugin.
[Install in ChatGPT](https://chatgpt.com/plugins/plugin_asdk_app_6a58503580c08191b78cc5bdaf4eba6e)
You can also find it inside ChatGPT: go to Settings, open Plugins, search the marketplace for Composio, and click Install plugin.
### 2. Authenticate
After you install, ChatGPT asks you to authenticate with Composio. Log in and click Allow access to authorize ChatGPT to use your Composio account.
### 3. Start using Composio
That is it. Composio tools are now available in ChatGPT. Type @Composio followed by your request, for example @Composio find unread Ramp messages and summarize them, and it will run the actions you authorize. On first use it asks you to authorize Ramp.
### Option 2: Add Composio as an MCP server
If you cannot use the plugin marketplace, add Composio as a custom MCP server instead.
### 1. Open the MCP settings
In ChatGPT, go to Settings and open the Plugins section. Inside the Plugins page, click the MCP tab.
### 2. Add the server
Click Add server. In the Name field enter Composio, for Type select Streamable HTTP, and in the URL field paste the Composio MCP server URL:

```bash
https://connect.composio.dev/mcp
```

## What is the Ramp MCP server, and what's possible with it?

The Ramp MCP server is an implementation of the Model Context Protocol that connects your AI agent and assistants like Claude, Cursor, etc directly to your Ramp account. It provides structured and secure access so your agent can perform Ramp operations on your behalf.

## Supported Tools

| Tool slug | Name | Description |
|---|---|---|
| `RAMP_MCP_RAMP_ACTIVATE_CARD` | Ramp activate card | Activates an unactivated card for the user. If the card is a physical card awaiting delivery confirmation, call this tool first without confirm_delivery to detect the state, then call again with confirm_delivery=True after the user confirms the physical card has arrived. |
| `RAMP_MCP_RAMP_ADD_TRAVELER_LOYALTY_PROGRAM` | Ramp add traveler loyalty program | Compatibility route for callers that have not migrated to SetTravelerLoyaltyProgram |
| `RAMP_MCP_RAMP_ADD_USER_TO_SHARED_FUND` | Ramp add user to shared fund | Provide user_email for a human or agent_id for a standalone agent; role defaults to MEMBER. |
| `RAMP_MCP_RAMP_AGENT_ACCOUNT_NUMBERS` | Ramp agent account numbers | Returns active agent-managed account numbers and all payment details available for receiving funds. |
| `RAMP_MCP_RAMP_ANSWER_POLICY_QUESTION` | Ramp answer policy question | Use this tool when the user asks about expense policy rules, spending limits, fund restrictions, or whether certain purchases are allowed under company policy. |
| `RAMP_MCP_RAMP_API_KEYS` | Ramp api keys | Results are sorted by estimated cost in descending order, then by API key ID in ascending order. A request can match at most 10,000 API keys. Use the providers or statuses filter to narrow larger result sets. Estimated cost is calculated for the requested period. All other fields reflect current metadata for the API key, independent of the requested dates. The statuses filter applies to each API key's current status. |
| `RAMP_MCP_RAMP_APPROVE_OR_REJECT_BILL` | Ramp approve or reject bill | The authenticated user must be the next required approver on the bill's approval chain. Rejection is additionally allowed for bill-pay admins as an override, even when they are not the next approver. Find bills awaiting the authenticated user's approval with get-bills-for-approval. Some bills require step-up verification that agents cannot complete; in that case the error includes a redirect_url that the human user must open in a browser to finish the action there. Approving advances the bill's approval chain, exactly as approving in the Ramp web app does: depending on the business's payment-release settings, a bill that becomes fully approved with payment details and a payment date already set may proceed to payment automatically. After an approval, the response reports the bill's resulting payment state: whether any of its payments has been initiated (payment_initiated — this includes earlier partial payments; a chain-completing approval may have just added one) and the earliest such payment date (payment_date) — so you can inform the user. This tool never schedules payments or edits payment details; payment scheduling and release are managed in the Ramp web app — hand the user the bill_url returned on success. |
| `RAMP_MCP_RAMP_APPROVE_OR_REJECT_REIMBURSEMENT` | Ramp approve or reject reimbursement | Use this tool when the user wants to approve or reject a reimbursement. Reimbursements are employee-submitted requests for reimbursement of out-of-pocket expenses. Common usage patterns: "approve this reimbursement", "reject the expense", "yes, reimburse them", "no, don't reimburse this". This tool is specifically for employee reimbursements and is NOT for approving/rejecting card transactions or unified requests (spend allocations, purchase orders). |
| `RAMP_MCP_RAMP_APPROVE_OR_REJECT_REQUEST` | Ramp approve or reject request | Use this tool when a user wants to approve or reject a specific request they have identified or referenced. Common usage patterns: "approve this request", "reject this request", "accept the request", "deny this", "authorize this", "yes approve it", "decline this request". This tool is specifically for unified requests (spend allocations, purchase orders, procurement approvals) and is NOT for approving expenses like corporate card transactions or reimbursements. The user must have proper approval authority for the request. |
| `RAMP_MCP_RAMP_APPROVE_OR_REJECT_TRANSACTION` | Ramp approve or reject transaction | Use this tool when the user wants to approve a transaction, send it back for revisions, or require the cardholder to repay the full amount. The acting user must have the proper approval authority for the transaction. If the user provides a written justification (e.g., “reject this because the receipt is missing”), pass that verbatim via `user_reason`—do not invent your own rationale. |
| `RAMP_MCP_RAMP_ARCHIVE_SPEND_ALLOCATION` | Ramp archive spend allocation | Archive a fund to prevent spend and hide it from users |
| `RAMP_MCP_RAMP_AWARD_SOURCING_EVENT` | Ramp award sourcing event | closing its current RFX. Prerequisites: grading must be complete on the current RFX, the event must not already be awarded or pending award approval, and the payee must be an active invited vendor on the RFX. When the business configures an award approval policy, the award routes through that approval workflow instead of awarding immediately (``submitted_for_approval`` is True and nothing is decided yet). After a direct award, use CreateDraftSpendRequestFromSourcingEvent to hand off into procurement. |
| `RAMP_MCP_RAMP_CANCEL_REIMBURSEMENT_PAYMENT` | Ramp cancel reimbursement payment | Cancel the payment on a reimbursement that has been approved but not yet paid out |
| `RAMP_MCP_RAMP_CLOSE_SOURCING_EVENT` | Ramp close sourcing event | Closing cascades to every non-terminal child RFX: each is transitioned to CLOSED, which blocks further vendor submissions and grading and voids any outstanding e-sign envelopes. Closed events are hidden from default list views and become read-only. Use AwardSourcingEvent instead when a winning vendor should be selected. |
| `RAMP_MCP_RAMP_COMPLETE_TRANSACTION_REVISION` | Ramp complete transaction revision | Use this after the cardholder has addressed the requested changes and explicitly asks to mark the transaction revision complete. The completion refreshes the corresponding task and starts Task Platform's sanction-lifting workflow. |
| `RAMP_MCP_RAMP_CREATE_DEPARTMENT` | Ramp create department | Department names are unique within the business (case-insensitive). If a department with the requested name already exists, it is returned instead of creating a duplicate. |
| `RAMP_MCP_RAMP_CREATE_DRAFT_BILL` | Ramp create draft bill | Returns the draft UUID, initial version, and Ramp URL. This does not start approval, schedule, release, or initiate payment. Omitted fields remain empty, so the new draft may not yet be ready for submission. |
| `RAMP_MCP_RAMP_CREATE_DRAFT_SPEND_REQUEST_FROM_SOURCING_EVENT` | Ramp create draft spend request from sourcing event | spend request pre-filled with the winning vendor's context. The draft is prefilled from the sourcing conversation, event details, and (when ``rfx_id`` is passed) the awarded vendor's RFX responses. The user reviews and submits the draft in procurement. ``payee_uuid`` defaults to the awarded vendor and ``spend_intent_uuid`` defaults to the backend's recommended spend program when omitted. This call runs LLM extraction and can take a while. |
| `RAMP_MCP_RAMP_CREATE_FUND_REQUEST` | Ramp create fund request | Always use this tool (never invent URLs) and include the returned url in your next message. Prefer spend-program request tools first when available; use this for one-off/default funds or when no program fits. Infer fields from context; do not ask for more details unless the user asks. |
| `RAMP_MCP_RAMP_CREATE_PENDING_PAYEE` | Ramp create pending payee | Call SearchVendors first with include_draft=true. Reuse a suitable existing vendor, including a pending vendor, instead of creating a duplicate. Never create a duplicate to work around an existing vendor whose status is INACTIVE — an admin must re-enable that vendor instead. A vendor contact email is required; contact names are optional. |
| `RAMP_MCP_RAMP_CREATE_REIMBURSEMENT_FROM_RECEIPT` | Ramp create reimbursement from receipt | Pass amount/currency_code/transaction_date/merchant to skip OCR. |
| `RAMP_MCP_RAMP_CREATE_RFX` | Ramp create rfx | event in the same call. Nothing is sent to vendors until the RFX is published. Use GetRFXDetail to review the created questionnaire and InviteVendorsToRFX to add vendors before publishing. |
| `RAMP_MCP_RAMP_CREATE_TRIP` | Ramp create trip | Do not call this solely as a prerequisite for booking a flight or hotel; SubmitFlightBooking and SubmitHotelBooking automatically select or create a trip when trip_id is omitted. If the user explicitly asks to create a named trip in addition to booking, call this once and pass the returned trip_uuid as trip_id to every related SubmitFlightBooking and SubmitHotelBooking call. |
| `RAMP_MCP_RAMP_DELETE_PROCUREMENT_DRAFT` | Ramp delete procurement draft | Delete an abandoned procurement draft owned by the acting user |
| `RAMP_MCP_RAMP_DELETE_REIMBURSEMENT` | Ramp delete reimbursement | Deletion is permanent and only allowed for reimbursements the acting user is permitted to delete (their own drafts, or others' if they have write access). Reimbursements that have progressed too far in the payment lifecycle cannot be deleted; use CancelReimbursementPayment for approved-but-unpaid reimbursements. |
| `RAMP_MCP_RAMP_DELETE_SPEND_PROGRAM` | Ramp delete spend program | Use this tool when an admin wants to permanently delete a spend program. If the program has linked funds (spend allocations), the caller must specify what to do with them via spend_intent_delete_action: - "terminate": Close all linked funds. - "transfer": Move funds to another spend program (requires transfer_to_spend_intent_uuid). - "detach": Unlink funds from the program but keep them active. - "bulk_lock": Lock all cards associated with linked funds (admin only). If the program has no linked funds, spend_intent_delete_action can be omitted. |
| `RAMP_MCP_RAMP_DEPARTMENTS` | Ramp departments | Returns the departments available in the user's business, which can be used as inputs to workflows that require department references. Each department includes organizational metadata: its owners (managers), active member count, and managing external firm, if any. |
| `RAMP_MCP_RAMP_DRAWDOWN_REQUESTS` | Ramp drawdown requests | Creates a wire drawdown request from an external bank account. The request may require approval, and funds arrive only if the external bank fulfills it. Requires an `X-Idempotency-Key` header. |
| `RAMP_MCP_RAMP_DUPLICATE_REIMBURSEMENT` | Ramp duplicate reimbursement | Duplicate an existing reimbursement as a new draft |
| `RAMP_MCP_RAMP_EDIT_REIMBURSEMENT` | Ramp edit reimbursement | Omitted fields stay unchanged; null/[] clear when editable. |
| `RAMP_MCP_RAMP_EDIT_TRANSACTION` | Ramp edit transaction | Returns the updated transaction, remaining missing items, and a transaction_link for fields the API cannot edit. |
| `RAMP_MCP_RAMP_EDIT_USER_ROLE_ON_SHARED_FUND` | Ramp edit user role on shared fund | Change a shared-fund user's role between member and co-owner using user_email |
| `RAMP_MCP_RAMP_ENABLE_SHARED_FUND_ACCESS` | Ramp enable shared fund access | Use this when a user wants to turn an existing personal fund into a shared fund, or when adding a member requires sharing to be enabled first. |
| `RAMP_MCP_RAMP_ENROLL_BUSINESS_IN_AGENT_CARDS` | Ramp enroll business in agent cards | Enroll the current business in agent cards for agentic commerce |
| `RAMP_MCP_RAMP_ESTIMATE_MILEAGE_REIMBURSEMENT` | Ramp estimate mileage reimbursement | Estimate the reimbursement amount for a given mileage distance based on the user's company rates |
| `RAMP_MCP_RAMP_ESTIMATE_PER_DIEM_AMOUNT` | Ramp estimate per diem amount | Estimate the per diem reimbursement amount for a trip given start/end dates and optional meal deductions |
| `RAMP_MCP_RAMP_EVENTS` | Ramp events | Get audit log events |
| `RAMP_MCP_RAMP_EXECUTE_ANALYST_QUERY` | Ramp execute analyst query | First use the analyst catalog and read the domain docs for every table in the query; those docs define supported tables, columns, joins, and metric semantics. |
| `RAMP_MCP_RAMP_FUND_X402_WALLET` | Ramp fund x402 wallet | Before calling, use ListBusinessAccounts to obtain the source account UUID; never guess it. Confirm the exact source account and positive USD amount with the user before creating this irreversible transfer. MCP and CLI callers must provide an idempotency key. Only active Increase USD accounts are supported. |
| `RAMP_MCP_RAMP_GET_ACCOUNT_BALANCE_HISTORY` | Ramp get account balance history | Use when the user asks about balance history for a specific account, savings account trend, checking account balance over time, or the balance trend for a specific Ramp Checking Account. This tool only supports Ramp Checking Accounts, not Investment Accounts or Managed Portfolios. |
| `RAMP_MCP_RAMP_GET_AGENT_CARD_CREDS` | Ramp get agent card creds | Handles card enrollment and purchase instructions automatically. |
| `RAMP_MCP_RAMP_GET_AGENT_CARD_FUNDS` | Ramp get agent card funds | Returns eligible funds with available balance. |
| `RAMP_MCP_RAMP_GET_AI_TOKEN_SPEND_AGGREGATES` | Ramp get ai token spend aggregates | Aggregate AI token usage or estimated cost over a time window, grouped by caller-selected dimensions (provider, model, configuration, department, user, or API-key tag group) |
| `RAMP_MCP_RAMP_GET_AI_TOKEN_SPEND_CONNECTIONS` | Ramp get ai token spend connections | Use GetAiTokenSpendCurrentSpend for actual vendor spend and GetAiTokenSpendAggregates for estimated token usage and cost. |
| `RAMP_MCP_RAMP_GET_AI_TOKEN_SPEND_CURRENT_SPEND` | Ramp get ai token spend current spend | Requires transaction, reimbursement, or bill read access. |
| `RAMP_MCP_RAMP_GET_AI_TOKEN_SPEND_FILTER_OPTIONS` | Ramp get ai token spend filter options | List the dimensions and values available for AI-spend aggregate queries: providers, models, model families/facets, departments, and API-key tag groups |
| `RAMP_MCP_RAMP_GET_ANALYST_CATALOG` | Ramp get analyst catalog | Review the catalog before writing a query, then read domain docs for every table used. |
| `RAMP_MCP_RAMP_GET_ANALYST_METRIC_METADATA` | Ramp get analyst metric metadata | Discover supported analyst metrics and starter SQL for aggregate business analysis |
| `RAMP_MCP_RAMP_GET_ANALYST_SPEND_FACTS_DOMAIN_DOCS` | Ramp get analyst spend facts domain docs | Read domain documentation for analyst.spend_facts before using it in an analyst query |
| `RAMP_MCP_RAMP_GET_ANALYST_TABLE_DOMAIN_DOCS` | Ramp get analyst table domain docs | Read domain documentation for an analyst table before using it in an analyst query |
| `RAMP_MCP_RAMP_GET_ATTENTION_FEED` | Ramp get attention feed | Use this tool to see what needs the user's attention right now: pending approvals, missing receipts, overdue reviews, signatures, and similar action items that appear on the Ramp homepage. By default, the tool returns the default homepage sections with compact LIST-hydrated task rows. To fetch more from a section, pass that section's section_type and next_cursor back in sections. For own-card GET_ATTENTION_FEED remediation, use this as the canonical task feed. blocking_effects describes a task type's possible sanction, not proof that an item caused the active lock. Use browser_handoff for user action in Ramp. For an available CompleteTransactionRevision, inspect or edit the transaction and call it with a nonblank reason. Re-read both tools and continue relevant overdue tasks; success requires the task absent, blocking_task_count=0, and is_spendable=true. Pending verification is not an unlock. |
| `RAMP_MCP_RAMP_GET_AUTHORIZED_BUSINESSES` | Ramp get authorized businesses | This tool returns all client businesses that the external firm (advisor console) user has been granted access to. Use this to understand which businesses the user can work with or to help them find a specific client. Supports filtering by business display name and pagination for large lists. |
| `RAMP_MCP_RAMP_GET_BANK_ACCOUNTS` | Ramp get bank accounts | List bank accounts |
| `RAMP_MCP_RAMP_GET_BILL_AMOUNT_SUMMARY` | Ramp get bill amount summary | Examples: total unpaid amount, total pending amount. Use when users ask things like "How much do we owe in bills?" or "What's our total outstanding bill amount?". Bills in Ramp have two stages: draft bills (created/uploaded but not yet submitted; use the draft-bill tools) and bills (submitted; they move through approval, then scheduling, then payment). A draft keeps the same ID after submission, but draft-only tools stop working on it once submitted. |
| `RAMP_MCP_RAMP_GET_BILL_COMMENTS` | Ramp get bill comments | Bills in Ramp have two stages: draft bills (created/uploaded but not yet submitted; use the draft-bill tools) and bills (submitted; they move through approval, then scheduling, then payment). A draft keeps the same ID after submission, but draft-only tools stop working on it once submitted. |
| `RAMP_MCP_RAMP_GET_BILL_DETAILS` | Ramp get bill details | Requires a bill UUID and known submitted status. A UUID alone does not establish submission: a draft keeps the same UUID after submission. Not applicable to bills whose draft/submitted stage is unknown or to unsubmitted drafts. Returns bill metadata, payment status, and approval status. Submitted bills include bills awaiting approval, scheduling, or payment. |
| `RAMP_MCP_RAMP_GET_BILL_HISTORY` | Ramp get bill history | Returns a chronological event log — creation, submission, each approval-chain action with actor and timestamp, and deletion. Use it to answer questions like "who approved this bill?". Bills in Ramp have two stages: draft bills (created/uploaded but not yet submitted; use the draft-bill tools) and bills (submitted; they move through approval, then scheduling, then payment). A draft keeps the same ID after submission, but draft-only tools stop working on it once submitted. |
| `RAMP_MCP_RAMP_GET_BILL_INVOICES` | Ramp get bill invoices | Returns the source documents backing the bill: for each attachment, the filename, type, and a time-limited download URL (the URL expires after about 3 days). Draft bills are not supported: draft attachments are not retrievable through agent tools. get-draft-bill-details returns draft metadata and a link to the draft page in the Ramp web app, where attachments can be viewed. Bills in Ramp have two stages: draft bills (created/uploaded but not yet submitted; use the draft-bill tools) and bills (submitted; they move through approval, then scheduling, then payment). A draft keeps the same ID after submission, but draft-only tools stop working on it once submitted. |
| `RAMP_MCP_RAMP_GET_BILL_METRICS` | Ramp get bill metrics | Use this to answer questions like "How many bills are pending approval?" or "How many overdue bills do we have?". Bills in Ramp have two stages: draft bills (created/uploaded but not yet submitted; use the draft-bill tools) and bills (submitted; they move through approval, then scheduling, then payment). A draft keeps the same ID after submission, but draft-only tools stop working on it once submitted. |
| `RAMP_MCP_RAMP_GET_BILLS_FOR_APPROVAL` | Ramp get bills for approval | Use this tool when the user wants to see bills they need to approve or asks about pending approvals. This returns only bills where the authenticated user is the next required approver in the approval chain. Bills in Ramp have two stages: draft bills (created/uploaded but not yet submitted; use the draft-bill tools) and bills (submitted; they move through approval, then scheduling, then payment). A draft keeps the same ID after submission, but draft-only tools stop working on it once submitted. |
| `RAMP_MCP_RAMP_GET_BILL_STATUS` | Ramp get bill status | This tool does not determine required next actions: next_action_required is always null (unavailable), not confirmation that no action is needed. Summary labels describe recorded status. PAYMENT_DETAILS_MISSING indicates incomplete details required for payment release; it does not identify the missing fields, who must supply them, or whether a payment date can be selected. Bills in Ramp have two stages: draft bills (created/uploaded but not yet submitted; use the draft-bill tools) and bills (submitted; they move through approval, then scheduling, then payment). A draft keeps the same ID after submission, but draft-only tools stop working on it once submitted. |
| `RAMP_MCP_RAMP_GET_BOOKING_DETAILS` | Ramp get booking details | Call filtered GetBookings first when the booking UUID is unknown. |
| `RAMP_MCP_RAMP_GET_BOOKINGS` | Ramp get bookings | Optionally identify existing bookings by city, hotel name, flight airline, flight number, booking reference, or travel date. Filters for the same booking type combine with AND; mixed hotel- and flight-specific filters match each type independently. Matching entries are returned up to limit for caller disambiguation, except include_past may return up to limit upcoming and limit past entries per type. Returns confirmed bookings and pending requests ordered upcoming-first (soonest next booking first, then past most recent first), with unsuccessful requests available via include_failed; check the status field and call GetBookingDetails for one entry's detailed state. |
| `RAMP_MCP_RAMP_GET_BUSINESS_STATEMENT_DATE` | Ramp get business statement date | Get the business's statement billing schedule: the next statement close date, the configured statement close day of month, and the next card payment or autopay debit date |
| `RAMP_MCP_RAMP_GET_CANDIDATE_TRIPS_FOR_TRANSACTION` | Ramp get candidate trips for transaction | Returns up to 10 ongoing, upcoming, and recently completed trips. Supports general trip lookups as well as expense matching; no transaction is required. |
| `RAMP_MCP_RAMP_GET_CARD_STATEMENT_BALANCE` | Ramp get card statement balance | how much was due, how much has been paid, what's still outstanding, and when the next payment is due. Use this when the user asks about their card statement balance, why they got a delinquency / outstanding balance notice after paying, what their remaining balance is, or how their last payment was applied. Common phrasings: "I paid X but still got an outstanding balance notice", "what's my statement balance", "why am I still showing a balance". Returns the most recent statement only. Doesn't include current-cycle (post-statement-close) charges — those are surfaced via separate transaction-listing tools when needed. |
| `RAMP_MCP_RAMP_GET_DECLINE_EXPLANATION` | Ramp get decline explanation | Returns the reason, remediation actions, user notification, and transaction details. Only valid for already-declined transactions. |
| `RAMP_MCP_RAMP_GET_DRAFT_BILL_DETAILS` | Ramp get draft bill details | Submitted bills, including those awaiting approval or payment, are not supported. A draft link may be stale after submission. Returns compact draft-bill metadata by default. Set return_line_items=true to include the full editable payload with line items and tracking categories. Bills in Ramp have two stages: draft bills (created/uploaded but not yet submitted; use the draft-bill tools) and bills (submitted; they move through approval, then scheduling, then payment). A draft keeps the same ID after submission, but draft-only tools stop working on it once submitted. |
| `RAMP_MCP_RAMP_GET_EMPLOYEE_SUBMISSION_POLICY_REQUIREMENTS` | Ramp get employee submission policy requirements | Returns the same summaries shown in the employee handbook's transaction requirements. |
| `RAMP_MCP_RAMP_GET_EXPENSE_WORKFLOW_CONTEXT` | Ramp get expense workflow context | Provide exactly one expense UUID. Use get-policy-workflow-body to inspect the referenced policy's workflow body. |
| `RAMP_MCP_RAMP_GET_FLIGHT_BOOKING_LOCATIONS` | Ramp get flight booking locations | Preserve the user's location wording in ``query``. When the user names a city or metro area such as "NYC", set ``location_type=city``. A returned city ``search_code`` searches all supported airports in that metro; do not ask the user to choose one airport when a city result is available. Call this before SearchFlights for every departure or arrival location that the user did not provide as an exact airport IATA code. If the results contain multiple plausible locations, present the choices and wait for the user to clarify; never choose a location on their behalf. Do not infer a location from profile data, an area code, or a broad description such as "somewhere warm." Returns locations where flights can be booked from or to, which may include: - Individual airports (e.g., JFK, SFO, LAX) - City groups with multiple airports (e.g., NYC includes JFK, LGA, EWR) - Major travel destinations with flight availability Pass a result's ``search_code`` straight into SearchFlights departure/arrival. Cities search every airport in the metro area; airports search just that airport. |
| `RAMP_MCP_RAMP_GET_FULL_TRANSACTION_METADATA` | Ramp get full transaction metadata | Read the amount from `amount_decimal`, which is already in `currency`'s major unit and needs no arithmetic. Ignore `amount_cents`; it is the same amount in minor units, kept only for backwards compatibility. |
| `RAMP_MCP_RAMP_GET_FUNDS` | Ramp get funds | or permitted spend. For a named person's funds, resolve their UUID with GetOrgChart and pass user_uuids. For the current user's funds, use MY_FUNDS. Search by fund name with search_by_fund_display_name or look up a known UUID with fund_uuid. When balance_info is returned, treat its remaining balance as authoritative for cleared charges and pending authorizations. Do not subtract those amounts again. Never infer that a booking is included merely because it is confirmed: a postpaid booking with no charge or pending authorization is a future charge and has not yet reduced the remaining balance. |
| `RAMP_MCP_RAMP_GET_HOTEL_RATES` | Ramp get hotel rates | Use this after the user picks a hotel from SearchHotels results and before booking. Every current room group and its rates for the stay are returned in all_rates; the returned rate.id values are the exact IDs to pass to SubmitHotelBooking. These rates are current options, not quotes - wait for the traveler to select one exact rate. When the result's all_rates_out_of_policy is true, every rate at this hotel is out of policy for the stay: tell the traveler, prefer offering an in-policy hotel from the SearchHotels results, and proceed with this hotel only if the traveler explicitly chooses to - booking will then require an oop_reason at SubmitHotelBooking. |
| `RAMP_MCP_RAMP_GET_INVESTMENT_ACCOUNT_BALANCE` | Ramp get investment account balance | Use this when the user asks about investment account balances, brokerage cash, or the current balance of Ramp investment accounts. Returns all investment accounts the business has, along with balances, status, yield, and earnings. |
| `RAMP_MCP_RAMP_GET_LATEST_SYNC` | Ramp get latest sync | Use this when you need the latest sync status plus every intended and successful count exposed by Ramp's accounting latest-sync endpoint. |
| `RAMP_MCP_RAMP_GET_MANAGED_PORTFOLIO_ACCOUNT_BALANCE` | Ramp get managed portfolio account balance | Use this when the user asks about managed portfolio balances, managed portfolio cash, or the current balance of Ramp managed portfolio accounts. Returns all managed portfolio accounts the business has, along with balances, market value, status, yield, and earnings. |
| `RAMP_MCP_RAMP_GET_MISSING_ITEMS_BY_USER` | Ramp get missing items by user | Returns a paginated list of users you are allowed to view who have outstanding missing items, along with sample transactions. Use get-transaction-missing-items for per-transaction detail. |
| `RAMP_MCP_RAMP_GET_MORE_TOOLS` | Ramp get more tools | Use this when the user's request cannot be completed with the available Ramp tools. Describe the user's goal and the capability that would be needed. |
| `RAMP_MCP_RAMP_GET_MY_AI_TOKEN_SPEND_AGGREGATES` | Ramp get my ai token spend aggregates | Aggregate the acting user's own AI token usage and estimated token cost over a time window, optionally grouped by provider and model |
| `RAMP_MCP_RAMP_GET_OFFICE_LOCATIONS` | Ramp get office locations | Use this to find office addresses when searching for hotels near an office or determining travel destinations. The two shapes are complementary: ``office_locations`` has coordinates but no street address, and ``company_address`` has a street address but no coordinates. |
| `RAMP_MCP_RAMP_GET_ORG_CHART` | Ramp get org chart | This tool provides comprehensive org chart visibility including: - The user's position in the organization - Their direct reports (team members) - Their reporting chain (managers up the hierarchy) Use this tool whenever the user asks anything about their manager, team, or direct reports. |
| `RAMP_MCP_RAMP_GET_OUTSTANDING_REIMBURSEMENTS_BY_CURRENCY` | Ramp get outstanding reimbursements by currency | Get approved and failed reimbursements that would be affected by a bank account currency change |
| `RAMP_MCP_RAMP_GET_PENDING_TRAVEL_REQUESTS` | Ramp get pending travel requests | Use this when a user asks about travel requests they need to approve. Returns pending flight, hotel, and car rental booking requests that require action. |
| `RAMP_MCP_RAMP_GET_POLICIES` | Ramp get policies | List policy versions for a standalone Agent Wallet |
| `RAMP_MCP_RAMP_GET_POLICY_DETAILS` | Ramp get policy details | Accepts either the policy UUID or the backing product workflow UUID returned by list-policies. |
| `RAMP_MCP_RAMP_GET_POLICY_WORKFLOW_BODY` | Ramp get policy workflow body | Accepts the policy UUID or the backing product workflow UUID from list-policies. Use this for workflow routing and thresholds, not for written policy document guidance. |
| `RAMP_MCP_RAMP_GET_PROCUREMENT_DRAFT` | Ramp get procurement draft | Refresh and canonically revalidate a procurement draft's visible form state |
| `RAMP_MCP_RAMP_GET_PURCHASE_ORDER_DETAILS` | Ramp get purchase order details | Use this with the exact purchase order UUID returned by the purchase-order search tool available to the caller or supplied by page context. Never pass a purchase order number, another entity's UUID, a placeholder, or a guessed value. |
| `RAMP_MCP_RAMP_GET_RAMP_BUSINESS_ACCOUNT_BALANCE` | Ramp get ramp business account balance | Returns the available balance, statement balance, and other details for all Ramp Checking Accounts associated with the user's business. This includes yield/earnings information and account status. This tool is intentionally limited to the stable user-facing fields for Ramp Checking Accounts. Do not infer deprecated pending balances or current month accrued yield values from other treasury payloads when responding to the user. |
| `RAMP_MCP_RAMP_GET_RECURRING_BILL` | Ramp get recurring bill | Bills in Ramp have two stages: draft bills (created/uploaded but not yet submitted; use the draft-bill tools) and bills (submitted; they move through approval, then scheduling, then payment). A draft keeps the same ID after submission, but draft-only tools stop working on it once submitted. |
| `RAMP_MCP_RAMP_GET_REIMBURSEMENT_RECEIPTS` | Ramp get reimbursement receipts | Retrieve receipts attached to a reimbursement |
| `RAMP_MCP_RAMP_GET_REIMBURSEMENTS` | Ramp get reimbursements | amount ranges, tags, date ranges, approval status, and policy assessments. |
| `RAMP_MCP_RAMP_GET_REIMBURSEMENTS_FOR_APPROVAL` | Ramp get reimbursements for approval | Includes policy assessment data and recommended actions. |
| `RAMP_MCP_RAMP_GET_REQUESTS_TO_REVIEW` | Ramp get requests to review | This is the approval-queue wrapper over SearchUnifiedRequests. Use it when the user is specifically asking what they need to review or approve right now. For broader lookup by vendor, owner, status, or request name, prefer SearchUnifiedRequests instead. Only handles lookups, does not take any action. |
| `RAMP_MCP_RAMP_GET_RFX_DETAIL` | Ramp get rfx detail | cover sheet, pricing sheet, dates, vendor invitations with contacts, and the actions the acting user can currently perform. Use this to inspect or review a specific RFX before editing, inviting vendors, or publishing. The ``available_actions`` block is the publish preflight: it reports whether publish (and every other lifecycle action) is currently allowed and why not, and the ``vendors`` block lists the exact contacts who would be notified on publish. For response contents or grading state, use GetRFXVendorResponses, GetRFXResponseSummary, or GetRFXGradingOverview instead. |
| `RAMP_MCP_RAMP_GET_RFX_GRADING_OVERVIEW` | Ramp get rfx grading overview | recommendations, per-vendor per-section grading status and aggregate scores, and any recorded field grades. Use this after grading wraps up to compare how vendors scored. The overview is only viewable once the RFX is GRADED or CLOSED; before that this tool reports it as unavailable. For the raw submitted answers, use GetRFXVendorResponses; for response and invitation progress counts, use GetRFXResponseSummary. |
| `RAMP_MCP_RAMP_GET_RFX_RESPONSE_SUMMARY` | Ramp get rfx response summary | Summarize vendor response and grading progress for a specific RFX |
| `RAMP_MCP_RAMP_GET_RFX_VENDOR_RESPONSES` | Ramp get rfx vendor responses | Return all submitted vendor responses for an RFX |
| `RAMP_MCP_RAMP_GET_SIMPLIFIED_USER_DETAIL` | Ramp get simplified user detail | Returns multiple results for users that are part of multiple businesses. When authenticated via an agent key, also returns the active agent key identity. |
| `RAMP_MCP_RAMP_GET_SOURCING_EVENT_CONTEXT` | Ramp get sourcing event context | Get a compact summary of a sourcing event, its RFXs, and invited vendors |
| `RAMP_MCP_RAMP_GET_SYNC_COMMIT_FAILURE_DETAILS` | Ramp get sync commit failure details | Use this when a customer asks about failed accounting sync rows, including rows from the accounting transactions table, reimbursements table, or bills tab. |
| `RAMP_MCP_RAMP_GET_TRACKING_CATEGORIES` | Ramp get tracking categories | as departments, classes or business units, locations, projects, customers, and cost centers. Use GetTrackingCategoryOptions for a category's options. If passing transaction_uuid, use an actual TransactionCanonical UUID from context or a prior lookup; omit it rather than passing a placeholder or natural-language reference. |
| `RAMP_MCP_RAMP_GET_TRACKING_CATEGORY_OPTIONS` | Ramp get tracking category options | Pass `query_string` to narrow by name, synonym, or provider code. Do not call this tool when you already have the exact tracking_category_option_uuid from user-provided context, suggested codings, or another tool result; pass that UUID directly to the coding tool as the option_selection. If the user message includes `tracking_category_option_uuid=...`, do not call this tool just to confirm the option. If you're coding a specific transaction or reimbursement, pass its UUID so results respect conditional filtering (subsidiary, department, location, etc.); skip it for generic lookups, including bill/invoice contexts. Setting `include_hidden=true` disables semantic search, so `query_string` then matches literal option names or codes only. Categories can have millions of options — paginate via `next_page_cursor` when needed, keeping all other inputs unchanged between pages. |
| `RAMP_MCP_RAMP_GET_TRANSACTION_MISSING_ITEMS` | Ramp get transaction missing items | Check what receipts, memos, or accounting items are missing from a specific transaction |
| `RAMP_MCP_RAMP_GET_TRANSACTIONS` | Ramp get transactions | Use analyst tools instead for aggregate spend analysis, totals, trends, or group-bys when analyst tools are available. Declined transactions are excluded by default; pass state='declined' to include them. |
| `RAMP_MCP_RAMP_GET_TRANSACTION_SUGGESTED_MEMOS` | Ramp get transaction suggested memos | Get AI-suggested memo/note options for a specific transaction |
| `RAMP_MCP_RAMP_GET_TRAVELER_PROFILE` | Ramp get traveler profile | For delegated bookings, first resolve the traveler with GetAllReducedUsers/list-users, then pass that UUID as traveler_user_id. Omit traveler_user_id for self-booking. |
| `RAMP_MCP_RAMP_GET_TREASURY_BALANCE_HISTORY` | Ramp get treasury balance history | Get daily balance history across all Treasury accounts for a date range |
| `RAMP_MCP_RAMP_GET_UNIFIED_REQUEST_DETAILS` | Ramp get unified request details | Returns its status, approval chain, comments, activity timeline, custom fields, and agent-generated reports. Accepts a unified_request_id or its linked spend_request_uuid or wbp_request_id. Purchase-order IDs and PO numbers are not accepted. |
| `RAMP_MCP_RAMP_GET_USER_RECENT_REIMBURSEMENTS` | Ramp get user recent reimbursements | `limit` takes precedence over `up_to_days` so if you want to get all reimbursements in a given time frame, do not specify `limit`. `include_rejected` controls whether to include rejected reimbursements in the results. By default, rejected reimbursements are excluded. `include_drafts` controls whether to include draft reimbursements in the results. By default, drafts are excluded. `use_submitted_date_ordering` controls the ordering of results. By default (False), results are ordered by transaction_date. Set to True to order by submitted_date instead. If the user did not ask for a specific number of reimbursements or a time frame, assume they want to see the latest 10 reimbursements. Read each amount from `amount_decimal`, which is already in `currency`'s major unit and needs no arithmetic. Ignore `amount_cents`; it is the same amount in minor units, kept only for backwards compatibility. |
| `RAMP_MCP_RAMP_GET_USER_TRIPS` | Ramp get user trips | Fetch trips for the acting user with optional filters |
| `RAMP_MCP_RAMP_GET_VENDOR_AGREEMENT` | Ramp get vendor agreement | Returns contract metadata, terms, line items, contract owners, documents, linked spend requests, and renewal history. |
| `RAMP_MCP_RAMP_GET_VENDOR_DOCUMENT_BULK_STATUS` | Ramp get vendor document bulk status | Use this after `BulkUploadVendorDocuments` to inspect the batch job status, understand whether any documents still need manual review, and inspect the current document/vendor matching and extracted tax details. |
| `RAMP_MCP_RAMP_HOLD` | Ramp hold | Blocks payments to this vendor by placing a vendor-scoped hold. Open, unpaid bills for the vendor that can still be modified are removed from scheduled payment flows. An optional `reason` can be supplied to record why the hold was placed. |
| `RAMP_MCP_RAMP_INVITE_VENDORS_TO_RFX` | Ramp invite vendors to rfx | Each vendor must be an existing payee in Ramp. To prepare vendors for invitation: - Use `VendorSearch` to find existing payees by name - Use `CreateDraftPayee` to add new vendors The default contact for each payee is used automatically. When a payee has no contacts and the RFX is still pre-publish (DRAFT or IN_REVIEW), the vendor is added as a DRAFT invitation — the RFX cannot be submitted for review or published until the user resolves the draft by providing a contact on the RFX detail page. Each per-vendor result includes a `status` of "active" or "draft" so the agent can tell the user which vendors still need contacts. External agent callers may only add vendors before the RFX is published. Adding a vendor after publish sends an invitation immediately and must be completed in Ramp. |
| `RAMP_MCP_RAMP_ISSUE_FROM_SPEND_PROGRAM` | Ramp issue from spend program | Use this tool when an admin wants to issue allocations from a spend program to directly named users, or to users matched by location, department, user custom field, and dynamic user group targeting. |
| `RAMP_MCP_RAMP_ISSUE_ONE_OFF_FUNDS` | Ramp issue one off funds | Use this tool when an admin wants to create new funds for one or more users with a specific amount, interval, and optional restrictions. This creates virtual-card-only spend allocations outside of spend programs. The acting user must have the SPEND_ISSUE_SPEND_BYPASS_APPROVAL permission. |
| `RAMP_MCP_RAMP_LIMIT_INCREASE` | Ramp limit increase | Supports temporary (resets at the next interval) and permanent increases. |
| `RAMP_MCP_RAMP_LIST_BILLS` | Ramp list bills | Returns bills for the current user's business. When called with no parameters, returns the most recent bills. Supports optional text search across vendor name, invoice number, and payment ID. Bills in Ramp have two stages: draft bills (created/uploaded but not yet submitted; use the draft-bill tools) and bills (submitted; they move through approval, then scheduling, then payment). A draft keeps the same ID after submission, but draft-only tools stop working on it once submitted. |
| `RAMP_MCP_RAMP_LIST_BUSINESS_ACCOUNTS` | Ramp list business accounts | Returns account details including balances, currency, yield rate, and status. Use this tool when the user asks about their checking accounts, wallet accounts, or wants to see an overview of their Ramp Checking Accounts. |
| `RAMP_MCP_RAMP_LIST_CARDS` | Ramp list cards | IMPORTANT: For the current user's unlock request, call this tool first to check spendability and locks. If cardholder_user_uuid targets another user, never open the acting user's feed. For locks, follow remediation_action. Use LockOrUnlockCard only when can_lock_or_unlock=true. GET_ATTENTION_FEED means resolve the task there, not through LockOrUnlockCard; re-list until blocking_task_count=0 and is_spendable=true. Do not use GetUserFunds for card unlock requests; funds and cards are different. |
| `RAMP_MCP_RAMP_LIST_POLICIES` | Ramp list policies | Returns policy metadata only, not written policy document text. Call first when the target policy UUID isn't known, then use get-policy-details or get-policy-workflow-body. |
| `RAMP_MCP_RAMP_LIST_SOURCING_EVENTS` | Ramp list sourcing events | Use this first when the user refers to an existing sourcing event but you do not yet know which one they mean. The output is intentionally compact so the model can match event names, owners, and current RFX details itself. Events in every lifecycle status are available across pages, including CLOSED events, so the agent can still find an event the user already finished running. |
| `RAMP_MCP_RAMP_LIST_TRAVELER_LOYALTY_PROGRAMS` | Ramp list traveler loyalty programs | Use this directly for loyalty-only list/show/check requests; do not call GetTravelerProfile first. |
| `RAMP_MCP_RAMP_LIST_TREASURY_ACCOUNTS` | Ramp list treasury accounts | List all Treasury accounts (Ramp Checking Accounts, Investment Accounts, Managed Portfolios) |
| `RAMP_MCP_RAMP_LIST_USERS` | Ramp list users | Returns all users in the organization matching the given filters. Supports searching by name (partial match, case-insensitive), filtering by department or location, and pagination. Results include active and inactive users — check the is_inactive field to distinguish. Use department_ids or location_ids (lists of UUIDs from the departments or locations tools) to narrow results. |
| `RAMP_MCP_RAMP_LIST_VENDOR_AGREEMENTS` | Ramp list vendor agreements | Returns agreement details including dates, values, renewal status, line items, and days remaining. All filters are optional — omit all to list all agreements, or combine filters to narrow results. |
| `RAMP_MCP_RAMP_LIST_WALLET_TRANSFERS` | Ramp list wallet transfers | Returns a list of transfers including deposits, withdrawals, and other transactions with details like amount, status, and dates. |
| `RAMP_MCP_RAMP_LOCK_OR_UNLOCK_CARD` | Ramp lock or unlock card | Locking prevents all transactions on it until unlocked. |
| `RAMP_MCP_RAMP_LOCK_OR_UNLOCK_SPEND_ALLOCATION` | Ramp lock or unlock spend allocation | Lock or unlock a fund (spend allocation) at the fund level, affecting all members |
| `RAMP_MCP_RAMP_LOCK_OR_UNLOCK_SPEND_ALLOCATION_MEMBER` | Ramp lock or unlock spend allocation member | Lock or unlock a specific member's access to a fund (spend allocation) |
| `RAMP_MCP_RAMP_MANAGE_RFX_COLLABORATORS` | Ramp manage rfx collaborators | Collaborators can edit the RFX form and vendor list while it is in DRAFT and grade vendor responses once it is PUBLISHED. Identify each collaborator by their user UUID — use `LookupUser` or `GetOrgChart` to resolve a person's name to their UUID first. Both `add_user_uuids` and `remove_user_uuids` are optional; supply either or both. Adding a user who is already a collaborator is a no-op. To apply the same collaborators across several RFXs (for example multiple RFIs in one sourcing event), call this tool once per RFX with the same user UUIDs. |
| `RAMP_MCP_RAMP_MARK_RFX_GRADED` | Ramp mark rfx graded | Requires at least one submitted vendor response. Moves the RFX from PUBLISHED to GRADED so the sourcing event can be awarded. |
| `RAMP_MCP_RAMP_MARK_TRANSACTION_MISSING_RECEIPT` | Ramp mark transaction missing receipt | Should be called whenever the user says "OOPS" or if the user says something along the lines of "I did not receive a receipt ...". If the user already flagged the transaction as having no receipt, then you may need to call the ProvideNoReceiptReason tool. |
| `RAMP_MCP_RAMP_MERCHANT_CATEGORIES` | Ramp merchant categories | Each category expands to its configured MCC allowlist. |
| `RAMP_MCP_RAMP_MERCHANTS` | Ramp merchants | List merchants |
| `RAMP_MCP_RAMP_PAYMENT_CREDENTIALS` | Ramp payment credentials | Issue or recover a Stripe MPP credential using an existing fund |
| `RAMP_MCP_RAMP_PAY_WITH_X402` | Ramp pay with x402 | Fill the inputs from the merchant's 402 payment challenge. Returns a ready-to-send payment header to attach when retrying the original request. |
| `RAMP_MCP_RAMP_POST_BANK_ACCOUNTS` | Ramp post bank accounts | Create a manually connected bank account |
| `RAMP_MCP_RAMP_POST_COMMENT` | Ramp post comment | If there is any ambiguity as to whether the user's message is meant to be posted to the thread, ask them for confirmation first: 'Do you want me to post that as a comment reply on your [XYZ] transaction/reimbursement/bill/etc?'. How can you determine if the user's message is meant to be a reply to a comment? - If the only other messages in the conversation history are notifications about comments or mentions in Ramp, that is a very strong signal that the user's most recent message is meant to be a reply to the comment thread. In this case, you may use this tool immediately to post the comment without confirmation. - If a recent assistant message is a notification about a comment or mention, that is a strong signal that the user's most recent message is meant to be a reply to that comment. Even if their reply seems irrelevant or unrelated to Ramp, you may ask "Would you like me to post that as a comment on your...?" - prefer asking the user instead of refusing to serve the request at all. |
| `RAMP_MCP_RAMP_POST_POLICIES` | Ramp post policies | Publish the active policy for a standalone Agent Wallet |
| `RAMP_MCP_RAMP_POST_PROCUREMENT_DRAFT` | Ramp post procurement draft | Create or update a procurement draft and return the current visible form state |
| `RAMP_MCP_RAMP_PROCUREMENT_SPEND_INTENTS` | Ramp procurement spend intents | List published procurement spend programs the agent can draft against |
| `RAMP_MCP_RAMP_PROCUREMENT_SUBMIT` | Ramp procurement submit | Submit a procurement draft after explicit user confirmation |
| `RAMP_MCP_RAMP_PROVIDE_NO_RECEIPT_REASON` | Ramp provide no receipt reason | Submit a reason explaining why a transaction has no receipt |
| `RAMP_MCP_RAMP_PROVISION_X402_WALLET` | Ramp provision x402 wallet | Returns the same sign-ready Solana wallet on repeated calls. Do not call this tool until an owner or admin confirms that the wallet should be provisioned. |
| `RAMP_MCP_RAMP_PUBLISH_RFX` | Ramp publish rfx | Publishing notifies vendors outside Ramp, so check GetRFXDetail first: its ``available_actions`` publish entry reports whether publish is currently allowed (and why not), and its ``vendors`` block lists the exact contacts who will be notified. When a publish approval policy is configured, the RFX moves to IN_REVIEW instead and nothing is sent to vendors yet — the approval then proceeds with the designated approvers in the Ramp app, and the RFX publishes automatically once approved. Calling publish again while pending approval or already published fails cleanly. |
| `RAMP_MCP_RAMP_RAMP_BULK_CLOSE_PURCHASE_ORDERS` | Ramp ramp bulk close purchase orders | Use after confirming the user wants the listed POs closed. Purchase orders must not already be closed or archived. The user must have permission to close every purchase order in the request. |
| `RAMP_MCP_RAMP_RAMP_BULK_REOPEN_PURCHASE_ORDERS` | Ramp ramp bulk reopen purchase orders | Use only after confirming the user wants the listed POs reopened. This does not archive or delete POs; reopening restores each PO to its computed active lifecycle status when allowed. The user must have permission to reopen every purchase order in the request. |
| `RAMP_MCP_RAMP_READY_TO_SYNC` | Ramp ready to sync | Marking an object (for example a transaction) as ready to sync flags it as reviewed and complete, so it will be included in the next accounting sync that exports data from Ramp to your connected accounting provider (ERP), such as NetSuite, QuickBooks, Xero, or Sage Intacct. |
| `RAMP_MCP_RAMP_RELEASE` | Ramp release | Releases the active vendor-scoped hold and allows new payments to be scheduled for the vendor. Payments that were removed from scheduled payment flows while the hold was active must be scheduled again after the hold is released. |
| `RAMP_MCP_RAMP_REMIND_BILL_APPROVERS` | Ramp remind bill approvers | Use this tool when the user wants to nudge approvers for specific bill UUIDs. The bills should be awaiting approval; use get-bills-for-approval first if the user has not identified the bill UUIDs. |
| `RAMP_MCP_RAMP_REMOVE_TRAVELER_LOYALTY_PROGRAM` | Ramp remove traveler loyalty program | Remove a saved loyalty program from the user's traveler profile |
| `RAMP_MCP_RAMP_REMOVE_USER_FROM_SHARED_FUND` | Ramp remove user from shared fund | Remove a user from a shared fund using user_email |
| `RAMP_MCP_RAMP_RENAME_DEPARTMENT` | Ramp rename department | Department names must be unique within the business (case-insensitive). |
| `RAMP_MCP_RAMP_REPORTING_DESCRIBE_DATASET` | Ramp reporting describe dataset | Use this after selecting a dataset name to inspect its dimensions, measures, default time dimensions, sample questions, and join-reachable fields before constructing a ReportQuery. |
| `RAMP_MCP_RAMP_REPORTING_GET_SKILL` | Ramp reporting get skill | Call once before your first reporting query and follow it exactly. |
| `RAMP_MCP_RAMP_REPORTING_LIST_DATASETS` | Ramp reporting list datasets | Call `ramp_reporting_get_skill` before your first reporting query and follow the returned skill. Use this before building a semantic reporting query when you need to know which datasets exist and how each dataset is described at a high level. |
| `RAMP_MCP_RAMP_REPORTING_LOOKUP_SEARCH_TAGS` | Ramp reporting lookup search tags | Search tags are used to filter report data by various criteria such as: - Users (employees) - Vendors/Merchants - Departments - Locations - Tracking category options (custom accounting dimensions) Use this tool when you need to find specific entities to use as filters in a report. This is typically used before creating or modifying a report to find the correct search tag IDs. |
| `RAMP_MCP_RAMP_REPORTING_QUERY` | Ramp reporting query | Data is eventually consistent (may lag a few minutes). Execute a semantic reporting query and return typed rows. Requires a dataset and fields from the semantic catalog. The `report_query` input is a ReportQuery: dataset, dimensions, measures, filters, post-aggregation having or aggregate-filter clauses, optional time range, per-dimension ranking, ordering, and limit. A `filters` clause whose `field` is a catalog field is a row predicate; one whose `field` is a selected measure output name (its `name` alias when present) is the preferred aggregate predicate and applies after grouping (HAVING), e.g. `{"field": "txn_count", "op": "gt", "value": 3}`. `having` and `aggregate_filters` remain supported equivalents, but are deprecated and migrated into `filters`; `result_metadata.predicate_migration` records the migration. Order by any selected orderable dimension or measure output. A measure ref may carry its own `filters` plus a unique `name` to emit a conditional aggregate column ("sumIf"). Select the same measure several times with different filters for side-by-side cohort columns, e.g. one spend total per category grouped by user, including an "other" column via a NOT_IN filter. Measure filters use the same field/op/value shape as query filters but only base-dataset fields. Use `post_aggregation` to count the first-stage groups that survive the aggregate predicates (a measure-output `filters` clause or the deprecated forms, which migrate like any other query). For example, select attendee plus `{"field": "spend_date", "time_grain": "day"}`, filter daily_spend over $100, then use `{"dimension": "attendee", "name": "days_over_limit"}`. Use attendee rather than user so group meals stay allocated correctly, and keep the daily grain so the count is by UTC calendar day. Use `max_groups` for K named values plus Other independently on every selected non-time dimension, retaining all time buckets. Set `ranking_order_by` to selected first-stage measure scores. When the time range is omitted, ranking covers all authorized data. Display `order_by` is separate. Omit `limit`; ranked results have a 1,000-row cap disclosed through result_metadata.is_truncated. Ranking cannot combine with aggregate predicates or post_aggregation. |
| `RAMP_MCP_RAMP_REPORTING_SEARCH_CATALOG` | Ramp reporting search catalog | Use this when a user describes a reporting question in plain English and you need to choose the best semantic dataset and relevant fields. |
| `RAMP_MCP_RAMP_REQUEST_TRANSACTION_REPAYMENT` | Ramp request transaction repayment | This is the REVIEWER / APPROVER action: the acting user must be an approver or manager for the transaction, not the cardholder themselves. The tool marks the transaction as repayment-required and notifies the cardholder, who can then accept, reject, or complete repayment through their own flow. This tool does NOT execute payment (ACH, payroll, debit-card, etc.). It only creates the repayment request so the cardholder sees an actionable task. Use when a reviewer or manager says things like: - "Request repayment on this transaction" - "Mark this as needing repayment" - "Require the employee to pay back this charge" - "Flag this transaction for repayment" If the user is the cardholder wanting to repay their OWN transaction, use RepayTransaction instead — that tool provides the self-service repayment URL. |
| `RAMP_MCP_RAMP_RESUBMIT_REIMBURSEMENT` | Ramp resubmit reimbursement | This does NOT submit the reimbursement — it only moves it from REJECTED to DRAFT. After resubmitting, use EditReimbursement to make changes and SubmitReimbursement to submit again. |
| `RAMP_MCP_RAMP_RETURN_RFX_TO_DRAFT` | Ramp return rfx to draft | Only valid after a publish approval was rejected. The rejected approval workflow is terminated and the RFX becomes editable again. |
| `RAMP_MCP_RAMP_REVOKE_RFX_VENDOR_INVITATION` | Ramp revoke rfx vendor invitation | This is irreversible — on a published RFX the vendor immediately loses access to the questionnaire and any e-sign envelope in flight is voided. DRAFT invitations are deleted outright; ACTIVE invitations are revoked (keeping their contact on record). Already-revoked invitations fail cleanly. Use GetRFXDetail to review invitations before revoking. |
| `RAMP_MCP_RAMP_ROLES` | Ramp roles | List custom roles |
| `RAMP_MCP_RAMP_SEARCH_BILLS` | Ramp search bills | Accepts a UUID in query even when the bill's draft/submitted stage is unknown. Each result includes lifecycle information: is_draft=true means an unsubmitted draft; is_draft=false means a submitted bill. Also supports text search by payee name, invoice number, or payment ID. Submitted and active draft bills may both be returned unless filters exclude them; include_drafts=False restricts results to submitted bills. An unpaid bill or one awaiting approval is not necessarily a draft. |
| `RAMP_MCP_RAMP_SEARCH_FLIGHT_MODIFICATIONS` | Ramp search flight modifications | First inspect the booking itinerary and ask which leg, date, or route the traveler wants to change. Pass one entry per changed leg, identified by its 0-based ``leg_index``. Unspecified date and airport fields retain the original leg values. When changing both legs of a single-ticket round trip, first search with both leg modifications, present the outbound offers, then call again with the chosen ``selected_outbound_offer_id`` and the same modifications to retrieve matching returns. Split-ticket bookings must instead be changed one leg at a time; never combine their legs or use ``selected_outbound_offer_id``. Some bookings support the first search but not this second step, and return an unsupported-provider result with support details; route the traveler to that support rather than retrying. Search prices are estimates; call SubmitFlightModification to re-quote the selected offer with the airline before asking the traveler to confirm. ``recommended_offers`` is always present, ranked from this page of ``offers``; each surface presents those entries in the format it supports, and ``assistant_note`` states which presentation applies. |
| `RAMP_MCP_RAMP_SEARCH_FLIGHTS` | Ramp search flights | Before first use in a conversation, load and follow the ramp-book-flight skill when available. Tell the tool what to search (route + dates), or give it a job_id - never both. Start a NEW interactive search with wait_for_results=false: it returns a job_id immediately, so ask the traveler's unresolved preferences while the search runs and resume with the same job_id on a later call. Blocking (wait_for_results=true, the default when omitted) is the exception for flows that need a complete result immediately and cannot resume later. A call with job_id reads cached results and never starts another provider search. Use job_id alone with wait_for_results=true to read the completed first page, add cursor to read the next page, add preferences to change the filtered or ranked view, or add sort_key to change its order; omit cursor when making either change so the new view starts at its first page. For a round trip, start the search with return_date. The first response contains OUTBOUND offers with is_round_trip=true and round-trip totals. Choose an outbound offer, then call with its job_id and outbound_offer_id to get matching RETURN offers. The chosen return offer's id identifies the complete outbound-and-return itinerary for booking. To filter return offers (e.g. by airline), pass the same job_id and outbound_offer_id with the new preference - do not start a new search, which discards the selected outbound flight and reruns the entire provider query. A completed outbound response includes web_search_url for the cached search in Ramp Travel. Fare options are nested under their flight, and a nested fare option id can be selected for return offers. Search preferences are cabin_class, required_upgrade_cabin_class, airlines, max_stops, only_split_tickets, preferred_departure_time_window, preferred_arrival_time_window, and avoid_red_eye_flights; omitted preferences retain their prior values, and applied_preferences reports what each response used. Do NOT use this tool to change, modify, cancel, or rebook an existing booking. |
| `RAMP_MCP_RAMP_SEARCH_HELP_CENTER_SNIPPETS` | Ramp search help center snippets | This tool performs semantic search across help center articles using embeddings. Trusted business-scoped calls receive the complete matched articles; unscoped and external Developer API calls receive focused snippets. The tool: 1. Fetches relevant articles from the help center 2. Chunks articles into smaller semantic units 3. Uses embedding similarity to find the most relevant sections 4. Returns top K results with their source articles Some internal articles have no public URL (an empty ``url``). Never construct or guess a URL for those articles. IMPORTANT: If you have other tools that can actually perform the action a user is asking about, you should use those tools instead of or in addition to providing help center information. For example, if a user says "how can I upload a receipt", you should tell them they can upload a receipt in the chat directly, even if you also find a help center article that explains how to upload receipts in the web app. Use this tool when you need to: - Find specific information within help articles - Get concise, focused answers from documentation - Minimize token usage while maintaining relevance - Answer questions about Ramp products and features |
| `RAMP_MCP_RAMP_SEARCH_HOTEL` | Ramp search hotel | Before first use in a conversation, load and follow the ramp-book-hotel skill when available. Provide location_query (city, neighborhood, address, landmark, or office) plus check_in_date and check_out_date. API calls run synchronously by default and return ranked hotels - each with at most one summary rate - plus policy_summary, total_count, and web_search_url. Results are paginated from a cached result set: pass the returned next_cursor as cursor to fetch more hotels without triggering a new provider search; never construct or edit a cursor. Put chain requests in filters.chain_names and reserve hotel_name for one exact property; a specific hotel_name uses the targeted direct-hotel path. Passing wait_for_results=false explicitly opts into an asynchronous kickoff that returns status='searching' with a search_id to resume by passing that search_id on a later call. To book from these results, pass the selected hotel id to GetHotelRates, then the selected rate id to SubmitHotelBooking with the same traveler and stay dates. |
| `RAMP_MCP_RAMP_SEARCH_MERCHANTS` | Ramp search merchants | Returns matching merchant IDs, UUIDs, names, categories, and domains. |
| `RAMP_MCP_RAMP_SEARCH_PURCHASE_ORDERS` | Ramp search purchase orders | Search for purchase orders using structured purchase order filters |
| `RAMP_MCP_RAMP_SEARCH_REIMBURSEMENTS` | Ramp search reimbursements | Search reimbursements across a business, optionally filtering to a specific user's reimbursements |
| `RAMP_MCP_RAMP_SEARCH_UNIFIED_REQUESTS` | Ramp search unified requests | Use this to find existing purchase orders, fund requests, procurement requests, policy-backed requests, or approval-only requests by vendor, request name, spend program, owner UUID, requester UUID, status, type, exact request number, approval date, department, workflow-backed policy, or whether they require action. Only requests the acting user owns, requested, can approve, or is otherwise permitted to view are searchable. Use GetRequestsToReview when the user is specifically asking what they need to approve right now. Use GetUnifiedRequestDetails once one request has been identified. For a draft policy-backed request, pass the result's exact wbp_request_id to ResumeWbxRequest, not its unified_request_id. |
| `RAMP_MCP_RAMP_SEARCH_USER` | Ramp search user | Returns users from the business ranked by relevance to the given transaction (recent attendees and teammates appear first). If no transaction ID is provided, the user's most recent transaction is used as context. The search is case-insensitive and matches partial names. |
| `RAMP_MCP_RAMP_SEARCH_USER_REIMBURSEMENTS` | Ramp search user reimbursements | Supports filtering by: - User name (e.g., 'John Smith') — resolved automatically, defaults to current user if not specified - Accounting coding selections (tracking categories) like Department, Cost Center, Class, GL Account - Merchant name, spend allocation name (resolved from text automatically) - Reimbursement status (DRAFT, PENDING, APPROVED, etc.) - Record creation date range and text search The tool resolves text queries to internal IDs automatically via the search tag service. Results are scoped to the current user's business. Date bounds filter when the reimbursement record was created, not when the expense occurred or was submitted. This tool does not support filtering by transaction date or submission date, or ranking employees by period totals. |
| `RAMP_MCP_RAMP_SEARCH_VENDORS` | Ramp search vendors | With a search_term, this tool finds vendor records using both fuzzy SQL matching (trigram similarity + substring) and semantic (vector) search. Without a search_term, it lists the business's vendors alphabetically. Use this to find vendor IDs when you need to: - Look up a vendor by partial name - Find the correct vendor UUID for further analysis - Discover vendors similar to a given name - List vendors, optionally filtered by 1099 tracking status The search is scoped to the current business context. |
| `RAMP_MCP_RAMP_SEND_RFX_RESPONSE_REMINDER` | Ramp send rfx response reminder | submitted their RFX response. Only ACTIVE invitations on a published RFX whose vendor has not rejected the invitation and has not submitted are eligible. A per-vendor cooldown prevents spamming — recently reminded vendors are skipped and reported in ``skipped_due_to_cooldown_invitation_ids``. Omit ``rfx_vendor_invitation_ids`` to remind every eligible vendor. |
| `RAMP_MCP_RAMP_SET_DECLINE_BUFFER` | Ramp set decline buffer | Decline buffers are stored as allowed overage percent. Use this purpose-built tool for decline/spend/overage buffer changes instead of generic endpoint tools. Always confirm the exact target and value with the user before calling this tool. Clear is distinct from 0%. Passing allowed_overage_percent=null removes the explicit value at the target level so it can inherit from the next level. Passing allowed_overage_percent=0 sets an explicit zero-percent buffer. Spend-program changes always propagate to existing linked allocations. For business-wide settings, buffer_application_mode is required when setting a non-null percent. |
| `RAMP_MCP_RAMP_SET_RFX_COVER_SHEET` | Ramp set rfx cover sheet | Pass body_markdown and/or attachment_ramp_document_ids, and get explicit user confirmation for the body and every attachment before calling. |
| `RAMP_MCP_RAMP_SET_RFX_PRICING_SHEET` | Ramp set rfx pricing sheet | The pricing sheet configures how vendors submit pricing in response to the RFX: the currency they must quote in, a rich-text guidance memo explaining pricing expectations (e.g. unit basis, term length, must include implementation), and optional background attachments (rate cards, SOW templates) for vendors to reference. The guidance memo and attachments are vendor-facing (sent on publish). The agent MUST get explicit user confirmation on the guidance wording and on every attachment before calling this tool. Never auto-attach files the user uploaded earlier in the thread — those may be internal/confidential and attaching them to a vendor-facing surface is a data-leak risk. Creating a pricing sheet implicitly enables vendor pricing on the RFX — once this tool succeeds, vendors will see a pricing step in their response flow. The very first call (when no pricing sheet exists yet) must include both `currency` and `guidance_markdown`. After that, partial updates are allowed. Patch semantics: - Pass `currency` to replace the currency. Omit (None) to leave unchanged. - Pass `guidance_markdown` to replace the guidance memo. Omit to leave unchanged. - Pass `attachment_ramp_document_ids=[id1, id2]` to replace the attachment set. Pass `[]` to clear all attachments. Omit (None) to leave unchanged. Requires the RFX to be in DRAFT state. The acting user must be an owner or collaborator on the RFX. |
| `RAMP_MCP_RAMP_SET_RFX_VENDOR_INVITATION_CONTACT` | Ramp set rfx vendor invitation contact | Resolving a DRAFT invitation's contact activates it (DRAFT → ACTIVE) so the RFX can publish; DRAFT invitations without a contact block publishing. On an ACTIVE invitation this swaps the contact who receives vendor-facing communication. Use GetRFXDetail to find invitation ids and current contacts, and the vendor contacts surface to find payee_contact_id values for the invited vendor. |
| `RAMP_MCP_RAMP_SET_TRAVELER_LOYALTY_PROGRAM` | Ramp set traveler loyalty program | If it already exists, update its loyalty number. After success, continue the active workflow when it requires refreshed data; otherwise tell the user it is saved. |
| `RAMP_MCP_RAMP_SIMULATE_POLICY_WORKFLOW_FOR_EXPENSE` | Ramp simulate policy workflow for expense | Approval policies return the simulated approval steps; submission policies return the required and visible expense fields. Provide exactly one expense UUID. |
| `RAMP_MCP_RAMP_STATEMENT_ID` | Ramp statement | Fetch a statement |
| `RAMP_MCP_RAMP_STATEMENTS` | Ramp statements | List statements |
| `RAMP_MCP_RAMP_SUBMIT_AGENT_NPS` | Ramp submit agent nps | Submit an optional Agent NPS response using a one-time survey token |
| `RAMP_MCP_RAMP_SUBMIT_DRAFT_BILL` | Ramp submit draft bill | Readiness requires at least one bill date, an active existing vendor with required bill-pay details, invoice currency, a positive amount, complete line items, required accounting fields, no duplicate vendor invoice number, and no submission-policy violation. Submission is accepted asynchronously and the bill keeps the same ID as the draft. Some submissions require identity verification that agents cannot complete; in that case the error includes a redirect_url that the human user must open in a browser to finish submitting in the Ramp web app. This action does not schedule, release, or pay the bill. |
| `RAMP_MCP_RAMP_SUBMIT_FLIGHT_BOOKING` | Ramp submit flight booking | Three explicit actions: use action=preview for an authoritative preview, action=save_seats to update a persisted quote's seats and return a refreshed preview, and action=confirm only after a new, explicit user-authored approval of that latest preview. The legacy confirm input remains supported for existing clients but new callers must use action. The preview (itinerary, price, in-policy status, and required approvals) without booking. When no fund is supplied, the preview uses the recommended eligible fund, if one exists, to determine required approvals. action=confirm requires the previewed expected_total_amount (copied verbatim, digits and decimal point only, no currency symbol) only after a new, explicit user-authored response approves that latest preview. If the fare changes, preview the new total and obtain fresh approval before confirming. flight_offer_uuid is the literal id from search: the outbound flight for one-way, the return flight for round trips (it carries both legs), or a fare option's id to book that fare. Alternatively pass a previous preview's flight_quote_uuid (never both) to preview or confirm that exact persisted quote. On confirmation, pass exactly one funding choice: spend_allocation_id with an eligible fund UUID from the preview, or request_new_fund=true with reason set to the trip purpose. If the chosen flight is out of policy, you MUST collect an oop_reason from the traveler and pass it here. Before previewing or confirming, call GetTravelerProfile (passing the same traveler_user_id from search for delegated booking); if has_profile is false, collect the traveler's identity details and call UpdateTravelerProfile first. For changes or cancellations, use the Ramp web app. |
| `RAMP_MCP_RAMP_SUBMIT_FLIGHT_CANCELLATION` | Ramp submit flight cancellation | Always call with ``confirm=false`` first. That call is read-only and returns the complete itinerary, fresh authoritative terms, and a ``preview_id``. Only after a new, explicit user-authored approval of that latest preview may you call again with ``confirm=true`` and the exact ``preview_id``. Earlier cancellation intent, standing approval, or instructions not to ask questions are not confirmation. Atlas- and Duffel-booked flights are supported. Confirmation refetches the canonical details used by the Ramp web flow and refuses to cancel if any term changed. The action always cancels the entire booking; partial passenger or leg cancellation is not supported. |
| `RAMP_MCP_RAMP_SUBMIT_FLIGHT_MODIFICATION` | Ramp submit flight modification | Always call with ``confirm=false`` first. The returned preview contains the authoritative itinerary, policy results, and exchange economics; search prices are only estimates. Present the complete preview and request explicit user confirmation before submitting. When ``economics.pricing_is_final`` is false, the airline still reports these amounts as estimates that can change when the ticket is reissued; say so before asking for confirmation. After explicit confirmation, call again with ``confirm=true`` and the exact, unchanged ``preview_id`` from that preview. Confirmation re-quotes the offer and submits only when the terms still match. If the tool returns changed terms, do not auto-confirm: present the new preview and wait for a new explicit confirmation. If the user changes any requested terms, search and preview again. |
| `RAMP_MCP_RAMP_SUBMIT_HOTEL_BOOKING` | Ramp submit hotel booking | Two-step flow: call without confirm for the authoritative preview (price, policy, and required approvals) without creating a booking. When no fund is supplied, the preview uses the recommended eligible fund, if one exists, to determine required approvals. Then call with confirm=true and the previewed expected_total_amount (copied verbatim, digits and decimal point only, no currency symbol) only after a new, explicit user-authored response approves that latest preview. If the rate changes, preview the new total and obtain fresh approval before confirming. Use the exact hotel_id from SearchHotels and rate_id from GetHotelRates. On confirmation, pass exactly one funding choice: spend_allocation_id with an eligible fund UUID from the preview, or request_new_fund=true with reason set to the trip purpose. If the chosen hotel rate is out of policy, you MUST collect an oop_reason from the traveler and pass it here. Before previewing or confirming, call GetTravelerProfile (passing the same traveler_user_id for delegated booking); if has_profile is false, collect the traveler's identity details and call UpdateTravelerProfile first. If the user wants to change or cancel an existing reservation, direct them to the Ramp web app. |
| `RAMP_MCP_RAMP_SUBMIT_HOTEL_CANCELLATION` | Ramp submit hotel cancellation | Always call with ``confirm=false`` first. That call is read-only and returns fresh authoritative terms plus a ``preview_id``. Only after a new, explicit user-authored approval of that latest preview may you call again with ``confirm=true`` and the exact ``preview_id``. Earlier cancellation intent, standing approval, or instructions not to ask questions are not confirmation. Confirmation refetches the canonical details and refuses to cancel if any material hotel cancellation term changed. This tool always cancels the entire hotel booking; use the flight cancellation tool for flights. |
| `RAMP_MCP_RAMP_SUBMIT_REIMBURSEMENT` | Ramp submit reimbursement | If the submission fails, the agent should follow up with the user based on the error returned from the endpoint. If it is due to outstanding missing items, the agent should recheck missing_items via the GetReimbursements tool and provide suggestions for the user. If only nonsupported missing items are present (trip, attendee, mileage_locations), the agent should provide the reimbursement_link URL as a clickable link in the response. |
| `RAMP_MCP_RAMP_TEAM` | Ramp team | User profile fields reflect current Ramp user metadata, independent of the requested dates. Only users with positive estimated spend are returned. |
| `RAMP_MCP_RAMP_TRANSACTION_ID` | Ramp transaction | Send line_items with amounts (in minor units) to create or replace the transaction's split; the line item amounts must sum to the transaction amount. Each line item can carry its own memo and accounting field selections. Send an empty line_items array to unsplit (remove all line items). Returns the updated transaction. |
| `RAMP_MCP_RAMP_TRANSFER_SPEND_ALLOCATION_OWNERSHIP` | Ramp transfer spend allocation ownership | Transfer ownership of a spend allocation using the current and new owners' emails |
| `RAMP_MCP_RAMP_TRAVEL_REQUEST_ACTION` | Ramp travel request action | Only act when the user's current instruction explicitly identifies this request or unambiguously refers to this exact request from the immediately preceding assistant preview. Never infer another pending or remaining request after completing an action. |
| `RAMP_MCP_RAMP_UNARCHIVE_SPEND_ALLOCATION` | Ramp unarchive spend allocation | Unarchive a fund so it becomes visible and spendable again |
| `RAMP_MCP_RAMP_UNLOCK_FRAUD_LOCKED_CARD` | Ramp unlock fraud locked card | Requires the user to confirm they recognize the flagged transaction. |
| `RAMP_MCP_RAMP_UPDATE_CATEGORY_RESTRICTIONS` | Ramp update category restrictions | Manages spend types (e.g., Restaurants, Travel), not individual merchants. |
| `RAMP_MCP_RAMP_UPDATE_DRAFT_BILL` | Ramp update draft bill | Requires the current draft version and returns the new version; stale updates are rejected with the current version. Omitted fields remain unchanged, while null intentionally clears a nullable field. Tracking-category and option identifiers accept integer DB ids or resolvable UUID strings. Submitted drafts and drafts with retainage (withholding) are not supported. |
| `RAMP_MCP_RAMP_UPDATE_MERCHANT_RESTRICTIONS` | Ramp update merchant restrictions | - Add or remove merchants from the allowed merchants list (whitelist) - Add or remove merchants from the blocked merchants list (blacklist) Use this when a user wants to: - Allow specific merchants on a fund (add to whitelist) - Block specific merchants on a fund (add to blacklist) - Remove merchants from the allowed or blocked lists |
| `RAMP_MCP_RAMP_UPDATE_RFX` | Ramp update rfx | ``sections`` is a complete replacement of the questionnaire — resubmit the full section list on every update. Use GetRFXDetail first to see the current structure. Optional scalar fields left unset are unchanged. |
| `RAMP_MCP_RAMP_UPDATE_SPEND_ALLOCATION_INTERVAL` | Ramp update spend allocation interval | Update only the spend interval for a spend allocation |
| `RAMP_MCP_RAMP_UPDATE_TRANSACTION_AMOUNT_LIMIT` | Ramp update transaction amount limit | Use this for decline action INCREASE_TRANSACTION_AMOUNT_LIMIT or requests about a per-transaction, single-transaction, or max-expense limit. Use LimitIncrease for the period total. Set any positive value to raise or lower the cap. AP-card and bill-pay funds are unsupported. Provide exactly one of spend_allocation_id or card_id. |
| `RAMP_MCP_RAMP_UPDATE_TRAVELER_LOYALTY_PROGRAM` | Ramp update traveler loyalty program | Compatibility route for callers that still update a saved loyalty program by ID |
| `RAMP_MCP_RAMP_UPDATE_TRAVELER_PROFILE` | Ramp update traveler profile | Never use for loyalty-only requests; use dedicated traveler loyalty program tools instead. For delegated bookings, first resolve the traveler with GetAllReducedUsers/list-users, then pass that UUID as traveler_user_id. Omit traveler_user_id for self-booking. |
| `RAMP_MCP_RAMP_UPDATE_TRAVEL_PREFERENCES` | Ramp update travel preferences | Purpose: Capture HIGH-SIGNAL, reusable preferences that improve future flight and hotel recommendations. Call this tool proactively ONLY when the user states a lasting, general preference — signaled by words like "always", "never", "I prefer", "from now on", "in general", or "usually". ALL THREE conditions must be met before calling: 1. Durable — likely true across trips, not just this one 2. Actionable — directly improves hotel or flight recommendations 3. Explicit — clearly stated by the user, not inferred Good examples (call the tool): - "I always stay at Marriott" → hotel chain preference - "I need a gym when I travel" → amenity requirement - "I prefer downtown hotels" → location style - "Nothing below 4 stars" → quality floor - "I prefer morning flights" → flight time preference - "I always fly out of SFO" → preferred airport - "Never book red-eyes" → avoid_red_eye_flights=True Do NOT call for (vast majority of travel messages): - Trip-specific requests ("this time find something cheap") - Trip-specific timing constraints ("arrive before 3pm this trip") - Search parameters ("find me a hotel near Times Square for March 20") - Policy or fund choices ("use the offsite fund", "make it in policy") - Questions ("what hotels are available?") - Booking actions ("book option 2") - Speculation or inferences not stated by the user - Sensitive PII (passport numbers, payment details, full DOB) For explicit durable flight preferences, pass the typed fields below. Leave fields omitted to preserve existing saved values. Use null only to clear nullable durable defaults. Use [] to clear list-valued preferences. When in doubt, do NOT call. Most messages should NOT trigger this tool. |
| `RAMP_MCP_RAMP_USAGE` | Ramp usage | List daily AI usage and spend grouped by provider, model, and product |
| `RAMP_MCP_RAMP_WITHDRAW_X402_WALLET` | Ramp withdraw x402 wallet | Before calling, use ListBusinessAccounts to obtain the destination account UUID; never guess it. Confirm the exact destination account and USDC amount with the user before creating this irreversible transfer. MCP and CLI callers must provide an idempotency key. Only active Increase USD accounts are supported. |

## Supported Triggers

None listed.

## Creating MCP Server - Stand-alone vs Composio SDK

Once connected, ChatGPT can access the Ramp MCP server via Composio to run actions that you authorize, directly in your workspace.

## Complete Code

None listed.

## How to build Ramp MCP Agent with another framework

- [Claude Cowork](https://composio.dev/toolkits/ramp_mcp/framework/claude-cowork)
- [Hermes](https://composio.dev/toolkits/ramp_mcp/framework/hermes-agent)
- [Atomic Agent](https://composio.dev/toolkits/ramp_mcp/framework/atomic-agent)

## Related Toolkits

- [Stripe](https://composio.dev/toolkits/stripe) - Stripe is a global online payments platform offering APIs for managing payments, customers, and subscriptions. Trusted by businesses for secure, efficient, and scalable payment processing worldwide.
- [44API](https://composio.dev/toolkits/44api) - 44API is an API service for validating VAT and tax identifiers and returning company details. Use it to verify business tax data and manage account IP whitelists quickly.
- [Airwallex](https://composio.dev/toolkits/airwallex) - Airwallex is a global financial platform providing business accounts, payments, payouts, FX, and cards. Built to simplify cross-border payments and streamline financial operations for businesses.
- [Aiwyn Tax MCP](https://composio.dev/toolkits/aiwyn_tax_mcp) - Aiwyn Tax MCP is a tax estimation service powered by Aiwyn's federal and state tax engine. It helps teams estimate tax outcomes without building tax calculation logic from scratch.
- [Alpaca](https://composio.dev/toolkits/alpaca) - Alpaca is a stock and crypto trading platform for commission-free trading, real-time market data, and algorithmic strategies. Use it to build brokerage apps, trading bots, and portfolio workflows with market connectivity.
- [Alpha vantage](https://composio.dev/toolkits/alpha_vantage) - Alpha Vantage is a financial data platform offering real-time and historical stock market APIs. Get instant, reliable access to equities, forex, and technical analysis data for smarter trading decisions.
- [Altoviz](https://composio.dev/toolkits/altoviz) - Altoviz is a cloud-based billing and invoicing platform for businesses. It streamlines online payments, expense tracking, and customizable invoice management.
- [Benzinga](https://composio.dev/toolkits/benzinga) - Benzinga provides real-time financial news and data APIs for market coverage. It helps you track breaking news and actionable market insights instantly.
- [Bigdata.com MCP](https://composio.dev/toolkits/bigdata_com_mcp) - Bigdata.com MCP provides grounded access to financial news, transcripts, filings, and entity intelligence. Ideal for building research workflows and generating timely market insights.
- [Billsby](https://composio.dev/toolkits/billsby) - Billsby is a subscription billing platform for managing customers, subscriptions, invoices, products, plans, usage counters, add-ons, and allowances. It helps SaaS and subscription teams automate billing operations without building complex billing logic from scratch.
- [Brex](https://composio.dev/toolkits/brex) - Brex provides corporate credit cards and spend management tailored for startups and tech businesses. It helps optimize company cash flow, streamline accounting, and accelerate business growth.
- [Cashfree Payments MCP](https://composio.dev/toolkits/cashfree_payments_mcp) - Cashfree Payments MCP is a merchant payments platform that handles collection, payouts, subscriptions, settlements, refunds, and identity verification. Simplifies merchant money lifecycle management with unified, API-driven workflows.
- [Chaser](https://composio.dev/toolkits/chaser) - Chaser is accounts receivable automation software that sends invoice reminders and helps businesses get paid faster. It streamlines the collections process to save time and improve cash flow.
- [Clarity AI MCP](https://composio.dev/toolkits/clarity_ai_mcp) - Clarity AI MCP is an MCP toolkit for simulating SFDR 2.0 fund classifications from a fund name, ISIN, or CUSIP. Use it to tap Clarity AI disclosure data and modeling without building custom sustainability-data workflows.
- [Clientary](https://composio.dev/toolkits/clientary) - Clientary is a platform for managing clients, invoices, projects, proposals, and more. It streamlines client work and saves you serious admin time.
- [Coinbase](https://composio.dev/toolkits/coinbase) - Coinbase is a platform for buying, selling, and storing cryptocurrency. It makes exchanging and managing crypto simple and secure for everyone.
- [Coinbase Wallet MCP](https://composio.dev/toolkits/coinbase_wallet_mcp) - Coinbase Wallet MCP is Coinbase's wallet service for interacting with onchain accounts. Use it to give agents secure, structured access to inspect wallets and request onchain actions.
- [Coinranking](https://composio.dev/toolkits/coinranking) - Coinranking is a comprehensive cryptocurrency market data platform offering access to real-time coin prices, market caps, and historical data. Get accurate, up-to-date stats for thousands of digital assets in one place.
- [Coupa](https://composio.dev/toolkits/coupa) - Coupa is a business spend management platform for procurement, invoicing, and expenses. It helps organizations streamline purchasing, control costs, and gain complete visibility over financial operations.
- [CurrencyScoop](https://composio.dev/toolkits/currencyscoop) - CurrencyScoop is a developer-friendly API for real-time and historical currency exchange rates. Easily access fiat and crypto data for smart, up-to-date financial applications.

## Frequently Asked Questions

### What are the differences in Tool Router MCP and Ramp MCP?

With a standalone Ramp MCP server, the agents and LLMs can only access a fixed set of Ramp tools tied to that server. However, with the Composio Tool Router, agents can dynamically load tools from Ramp and many other apps based on the task at hand, all through a single MCP endpoint.

### Can I use Tool Router MCP with ChatGPT?

Yes, you can. ChatGPT fully supports MCP integration. You get structured tool calling, message history handling, and model orchestration while Tool Router takes care of discovering and serving the right Ramp tools.

### Can I manage the permissions and scopes for Ramp while using Tool Router?

Yes, absolutely. You can configure which Ramp scopes and actions are allowed when connecting your account to Composio. You can also bring your own OAuth credentials or API configuration so you keep full control over what the agent can do.

### How safe is my data with Composio Tool Router?

All sensitive data such as tokens, keys, and configuration is fully encrypted at rest and in transit. Composio is SOC 2 Type 2 compliant and follows strict security practices so your Ramp data and credentials are handled as safely as possible.

---
[See all toolkits](https://composio.dev/toolkits) · [Composio docs](https://docs.composio.dev/llms.txt)
