This article follows the official documentation. We haven’t tested this tool for a hands-on review.
Ramp’s finance CLI, a command-line interface for Ramp’s finance data, lets a coding agent query Ramp data and, with the right access, handle actions such as approvals or purchases. The ramp command works with Ramp’s Developer API. Ramp’s documentation suggests the CLI for scripted and agent-loop work in a terminal. For assistants like ChatGPT and Claude it offers Ramp MCP. MCP (Model Context Protocol) is a standard interface that lets an agent call tools offered by another service. The CLI’s documented options include --agent, --no-input, pagination, and dry runs for common actions. Start in Ramp’s sandbox, a test environment, before allowing an agent to make changes.
A useful first task is checking whether a procurement request needs approval. The commands below come from the CLI repository and from Ramp’s official procurement skill, a set of written instructions for agents that use the CLI. They follow Ramp’s documented interface; they have not been run for this article.
Install and sign in
The README in the CLI repository gives an install script that detects your platform and downloads a prebuilt ramp binary. It also lists Homebrew (brew install ramp-public/ramp/ramp-cli) and uv as alternatives.
curl -fsSL https://agents.ramp.com/install.sh | sh
ramp env sandbox
ramp auth login --read-only
ramp users me
ramp env sandbox sets the default environment to the sandbox at demo.ramp.com, where demo accounts cannot move real money. You need sandbox access for this, and the sandbox guide explains how to get it. Set the environment explicitly. Ramp’s CLI guide says the CLI connects to the sandbox by default, but the current README lists production as the default for --env. ramp auth login opens a browser-based OAuth sign-in. With --read-only, the login only requests read access. Without it, the agent can read and write anything your Ramp role allows. ramp users me shows which user the CLI acts as.
Every CLI action runs as the user who signed in. Ramp shows that person’s name on an approval, and the CLI only sees what that person’s role can see in the dashboard. For a standalone agent without a browser, the README describes ramp agent login. It exchanges RAMP_CLIENT_ID and RAMP_CLIENT_SECRET from the environment for a production access token. Keep that secret in your CI or agent secret store, not in a prompt.
What the CLI can do
The CLI groups its tools by resource, like bills or requests, and you call them as ramp <resource> <tool>. ramp <resource> <tool> --help lists the flags for each tool. A coding agent can use the CLI to look up procurement records, then report what it found. When an agent approves or rejects a request, it changes a record in Ramp. Give the agent separate authorization for that action, and review it.
--agent prints JSON for scripts and agents, and the CLI also switches to JSON when its output is piped. --no-input turns off interactive prompts. Many tools take --page_size and --next_page_cursor for pagination. The tool commands accept --dry_run (or -n), which prints the request without sending it. Many tools also require a short --rationale that explains why the call is made. The CLI fills it in for interactive use, but in agent mode the agent has to pass it.
Check a procurement request
The procurement skill keeps two IDs apart. A purchase order ID identifies an issued PO. A unified request ID identifies the request that searches and approval actions use. To investigate a request associated with a vendor, first find the vendor’s UUID, a unique identifier Ramp assigns to that vendor. Then search purchase orders with that UUID in the payee_uuids filter:
ramp vendors search --search_term "Figma" --limit 10 \
--rationale "Find the vendor UUID for the purchase order search" --agent
ramp purchase_orders search \
--json '{"rationale":"Searching purchase orders for the resolved vendor","filters":{"payee_uuids":["VENDOR_UUID"]},"limit":10}' \
--agent
Replace Figma and VENDOR_UUID with your own values. A pending spend request needs a separate check. According to the skill, purchase order search does not return a PO whose spend request is still pending. Search unified requests instead, then inspect the request with ramp requests get:
ramp requests get UNIFIED_REQUEST_ID --rationale "Reviewing request before action" --agent
The field approval_workflow.needs_user_action indicates whether the request needs action from the signed-in user. The request search field filters.search matches PO numbers, request names, and owner names. It does not match vendor names. These distinctions help an agent avoid saying a request is missing when it searched the wrong type of record or the wrong field.
A realistic read-only prompt for an agent is: “Find the procurement request associated with this vendor, check whether it needs user action, and summarize the request details. Do not approve or reject it.” The agent should report the record it inspected and the value of approval_workflow.needs_user_action. No example output is shown here because the documentation does not provide a verified response sample.
Set up access carefully
Use the read-only login for lookup tasks, and do not put a Ramp secret in an agent prompt. Give the agent only the access it needs. Dry runs show the request before it goes out, but you still need to review the request and confirm that the agent has permission to make the change.
The procurement skill says to show request details and confirm with the user before approving or rejecting. Keep approval or rejection separate from lookup. First inspect the request and ask the user to confirm. Then run ramp requests approve with the request’s unified request ID. The procurement skill also excludes draft request creation and sourcing events. It excludes cross-product approval queues, bills, reimbursements, and card transactions.
Check the official Ramp CLI guide for current syntax, setup, and access requirements before using it. Developers looking for other shell tools for coding agents can browse Awesome CLI.