Skip to content

Connect Oracle Fusion Cloud Procurement to Claude: Buying & Orders

Learn how to build a secure MCP server for Oracle Fusion Cloud Procurement. Connect Claude to automate purchase orders, check funds, and manage suppliers.

Uday Gajavalli Uday Gajavalli · · 9 min read
Connect Oracle Fusion Cloud Procurement to Claude: Buying & Orders

If you need to connect Oracle Fusion Cloud Procurement to Claude to automate purchase orders, evaluate supplier negotiations, or triage requisitions, you need a Model Context Protocol (MCP) server. This infrastructure layer acts as a JSON-RPC 2.0 translation protocol between Claude's LLM tool calls and Oracle's complex enterprise APIs. You can either build and maintain this infrastructure yourself, or use a managed integration platform like Truto to dynamically generate a secure, authenticated MCP server URL. If your team uses ChatGPT, check out our guide on connecting Oracle Fusion Cloud Procurement to ChatGPT or explore our broader architectural overview on connecting Oracle Fusion Cloud Procurement to AI Agents.

Giving a Large Language Model (LLM) read and write access to an ERP ecosystem like Oracle Fusion Cloud is an immense engineering challenge. You must handle sprawling data models, esoteric non-CRUD operations, and strict API rate limits. Every time Oracle updates its Application Development Framework (ADF) endpoints or introduces new Descriptive Flexfields (DFFs), you have to update your server code, redeploy, and test the integration.

This guide breaks down exactly how to use Truto to generate a secure, managed MCP server for Oracle Fusion Cloud Procurement, connect it natively to Claude, and execute complex supply chain and buying workflows using natural language.

The Engineering Reality of the Oracle Fusion Cloud API

A custom MCP server is a self-hosted integration layer. While the open MCP standard provides a predictable way for models to discover tools, the reality of implementing it against Oracle Fusion Cloud Procurement's REST APIs is painful.

If you decide to build a custom MCP server for Oracle, you own the entire API lifecycle. Here are the specific challenges you will face:

Composite Hash Keys Oracle Fusion Cloud Procurement relies heavily on server-generated composite hash keys for deeply nested resources. For example, retrieving a specific supplier approved list entry or a UN number requires a hash derived from multiple underlying primary IDs. You cannot expect an LLM to guess or generate these hashes manually. If you expose raw parameters to Claude, the model will hallucinate key structures. Truto abstracts this by mapping the primary keys explicitly, extracting the required hashes from list endpoints, and instructing the LLM to pass those exact cursor values back unchanged.

Application Development Framework (ADF) Actions Standard REST patterns fall apart quickly in Oracle. To submit a purchase order or check fund availability, you do not simply PATCH a status field. Oracle uses custom ADF actions—requiring a POST request to specific /action/{operation} endpoints with highly specific parameter payloads. A custom MCP server requires you to manually define schemas for every single ADF action. A managed MCP server derives these tool definitions automatically from the upstream API documentation, exposing operations like checkFunds or submit as distinct, callable tools.

Descriptive Flexfields (DFFs) Enterprise Oracle setups are customized extensively using DFFs (__FLEX_Context). These dynamic fields mean the API schema varies wildly from instance to instance. An LLM needs to know the exact shape of these flexfields for a specific tenant to populate a requisition correctly. Truto's dynamic tool generation reads the integration's specific configuration at runtime, meaning your Claude agent always sees the accurate, tenant-specific schema.

Strict Rate Limiting and Backoff Oracle Fusion Cloud enforces rate limits that can easily be triggered by an overzealous AI agent summarizing large datasets. Factual note on rate limits: Truto does not retry, throttle, or apply backoff on rate limit errors. When Oracle returns an HTTP 429 Too Many Requests, Truto passes that error directly to the caller. Truto normalizes the upstream limit info into standardized headers (ratelimit-limit, ratelimit-remaining, ratelimit-reset) per the IETF spec. The caller (your AI agent framework) is fully responsible for retry and backoff logic. Do not build an integration expecting the middle tier to absorb these errors.

Instead of building this infrastructure from scratch, you can use Truto to expose Oracle Fusion Cloud Procurement as ready-to-use MCP tools instantly.

How to Generate an Oracle Fusion Cloud MCP Server

Truto dynamically generates MCP tools from the Oracle integration's available resources and endpoints. Each MCP server is scoped to a single integrated account (a specific tenant's Oracle instance) and secured via a cryptographic token.

You can generate an MCP server URL in two ways: via the Truto UI or programmatically via the API.

Method 1: Via the Truto UI

For internal testing or one-off agent deployments, generating the server via the UI takes seconds.

  1. Log into your Truto environment and navigate to the Integrated Accounts page.
  2. Select the connected Oracle Fusion Cloud Procurement account.
  3. Click the MCP Servers tab.
  4. Click Create MCP Server.
  5. Select your desired configuration (e.g., name, method filters like read or write, and expiration time).
  6. Copy the generated MCP server URL (e.g., https://api.truto.one/mcp/a1b2c3d4e5f6...).

Method 2: Via the Truto API

For production applications, you should generate MCP servers programmatically. This allows you to provision AI agent access dynamically when a user initiates a workflow.

Make a POST request to the /integrated-account/:id/mcp endpoint:

curl -X POST https://api.truto.one/integrated-account/{integrated_account_id}/mcp \
  -H "Authorization: Bearer YOUR_TRUTO_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Oracle Procurement AI Agent",
    "config": {
      "methods": ["read", "write", "custom"]
    },
    "expires_at": "2026-12-31T23:59:59Z"
  }'

The API validates that tools are available, stores the hashed token in KV storage, and returns a fully functional MCP server URL.

Connecting the MCP Server to Claude

Once you have the URL, connecting it to Claude requires zero additional coding. The URL contains the token needed to authenticate requests.

Method A: Via the Claude UI

If you are using the Claude Desktop app or Web UI:

  1. Go to Settings → Integrations (or Connectors depending on your tier).
  2. Click Add MCP Server or Add custom connector.
  3. Paste your Truto MCP URL.
  4. Click Add.

Claude will immediately execute the initialize handshake and call tools/list to discover all available Oracle Fusion Cloud Procurement tools.

Method B: Via Manual Configuration File

If you are deploying a custom agent or managing Claude Desktop via configuration files, you can use the Server-Sent Events (SSE) transport approach.

Edit your claude_desktop_config.json file:

{
  "mcpServers": {
    "oracle_procurement": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-sse",
        "https://api.truto.one/mcp/YOUR_SECURE_TOKEN"
      ]
    }
  }
}

Restart Claude Desktop. The application will connect over HTTP POST and JSON-RPC 2.0 messages.

Security and Access Control

Giving an LLM unconstrained access to your enterprise ERP is a massive security risk. Truto provides four distinct mechanisms to lock down your MCP servers:

  • Method Filtering (methods): Restrict the AI to specific operation types. Setting methods: ["read"] allows get and list tools while strictly blocking create, update, delete, and custom (ADF) actions.
  • Tag Filtering (tags): Restrict tools to specific functional areas. For example, passing tags: ["requisitions"] ensures the agent can only touch purchase requisitions, keeping it away from supplier bank account data.
  • Time-to-Live (expires_at): Set an ISO datetime to automatically tear down the MCP server. Useful for temporary contractor access or ephemeral agent task runs.
  • Extra Authentication (require_api_token_auth): By default, the MCP URL token is the only auth needed. Setting this to true requires the client to also send a standard Truto API token in the Authorization header, ensuring only authenticated internal applications can invoke tools.

Hero Tools for Oracle Fusion Cloud Procurement

When Claude connects to the Truto MCP server, it gains access to dozens of curated tools. Here are the highest-leverage tools for automating buying and order workflows.

Create a Draft Purchase Order

Tool: create_a_oracle_fusion_cloud_procurement_draft_purchase_order

Draft Purchase Orders are in-progress orders that have not yet been submitted. This tool allows the LLM to structure line items, specify suppliers, and assign business units before routing for approval.

"Draft a new purchase order for Acme Corp for 50 Lenovo ThinkPads. Assign it to the US-East Procurement Business Unit and leave it in draft status for my review."

Submit Draft Order via ADF Action

Tool: create_a_oracle_fusion_cloud_procurement_action_submit

Once a draft order is verified, it must be submitted for approval processing. This invokes the Oracle ADF submit action. It requires the draft_purchase_orders_uniq_id obtained when the draft was created.

"Submit the draft purchase order for the Lenovo ThinkPads for approval. Do not bypass the standard approval workflow."

List Purchase Requisitions

Tool: list_all_oracle_fusion_cloud_procurement_purchase_requisitions

Retrieves purchase requisition headers. The LLM can use the q parameter to filter by attributes like DocumentStatus or Preparer to find items waiting for buyer action.

"List all active purchase requisitions submitted by the engineering department this week that are currently pending buyer assignment."

Check Fund Availability

Tool: create_a_oracle_fusion_cloud_procurement_action_check_fund

Invokes the checkFunds action on a purchase requisition to verify against control budgets for all requisition line distributions. Crucial for automated pre-approval triage.

"Run a funds check on requisition REQ-88392. Tell me if there are any warnings or failures on the accounting distributions."

Create a New Supplier

Tool: create_a_oracle_fusion_cloud_procurement_supplier

Creates a master record for a person or company you procure from. This is the first step before any POs or negotiations can be assigned.

"Create a new supplier profile for 'TechLogix GmbH'. Set their tax country to Germany and flag them as eligible for spend authorization."

Initiate Supplier Negotiations

Tool: create_a_oracle_fusion_cloud_procurement_supplier_negotiation

Captures sourcing events like RFIs, RFQs, or auctions. The LLM can structure the initial sourcing document and assign it to invited suppliers.

"Create a new Request for Quote (RFQ) negotiation event for the Q4 server hardware refresh and add TechLogix GmbH to the invited supplier list."

Retrieve PO Lifecycle Details

Tool: get_purchase_order_life_cycle_detail_by_id

Provides a read-only roll-up of a purchase order's entire lifecycle, including receipts, invoices, and returns. Excellent for answering status questions without querying five separate endpoints.

"Get the lifecycle details for PO-9912. Has the invoice been generated yet, and what is the current received quantity?"

For a complete list of all available tools, including detailed schemas for configuration components, DFFs, and compliance checklists, visit the Oracle Fusion Cloud Procurement integration page.

Workflows in Action

With the MCP server connected to Claude, you can string together complex Oracle operations simply by explaining what you want to achieve.

Scenario 1: Automated Requisition Triage & Fund Checking

User Prompt:

"Find the latest approved purchase requisition for the marketing software renewal. Run a funds check on it. If funds are available, create a draft purchase order assigning it to 'SoftwareVend Inc'."

Execution Sequence:

  1. Find Requisition: Claude calls list_all_oracle_fusion_cloud_procurement_purchase_requisitions using the q filter to find the specific marketing software requisition.
  2. Check Funds: Claude extracts the purchase_requisitions_uniq_id and passes it to create_a_oracle_fusion_cloud_procurement_action_check_fund to trigger the ADF action.
  3. Evaluate Response: Claude reads the returned array. If the status is SUCCESS, it proceeds.
  4. Draft PO: Claude calls create_a_oracle_fusion_cloud_procurement_draft_purchase_order, mapping the requisition lines to the new order and setting the supplier to SoftwareVend Inc.
sequenceDiagram
    participant Claude as Claude Desktop
    participant MCP as Truto MCP Server
    participant Oracle as Oracle Fusion Cloud
    
    Claude->>MCP: Call list_all...purchase_requisitions
    MCP->>Oracle: GET /purchaseRequisitions
    Oracle-->>MCP: Returns REQ-1042
    MCP-->>Claude: JSON Tool Result
    
    Claude->>MCP: Call create_a...action_check_fund
    MCP->>Oracle: POST /purchaseRequisitions/{id}/action/checkFunds
    Oracle-->>MCP: Returns SUCCESS
    MCP-->>Claude: JSON Tool Result
    
    Claude->>MCP: Call create_a...draft_purchase_order
    MCP->>Oracle: POST /draftPurchaseOrders
    Oracle-->>MCP: 201 Created (PO-9954)
    MCP-->>Claude: JSON Tool Result

Outcome: The agent confirms that funds are cleared and returns the new Draft PO number, saving the purchasing manager from manually navigating the Oracle UI.

Scenario 2: End-to-End Supplier Negotiation Prep

User Prompt:

"We need to source new office chairs. Create a new supplier record for 'ErgoSeats LLC'. Then, create a new draft supplier negotiation (RFQ) for 100 ergonomic chairs and invite ErgoSeats to bid."

Execution Sequence:

  1. Create Supplier: Claude calls create_a_oracle_fusion_cloud_procurement_supplier with the company name, receiving a new SupplierId.
  2. Create Negotiation: Claude calls create_a_oracle_fusion_cloud_procurement_supplier_negotiation specifying the RFQ type.
  3. Add Lines: Claude calls create_a_oracle_fusion_cloud_procurement_child_lines_child (using the negotiation hash key) to add the 100 chairs.
  4. Invite Supplier: Claude associates the newly created SupplierId to the negotiation event.

Outcome: Claude handles four separate API interactions, passing the generated hash keys seamlessly between parent and child resources. The sourcing manager gets a ready-to-publish RFQ event populated with the correct vendor and line items.

Stop Fighting ERP APIs

Building an AI agent that speaks fluent Oracle Fusion Cloud Procurement requires deep domain knowledge of ADF actions, composite hash routing, and enterprise DFF architectures. Building the MCP server infrastructure to maintain that knowledge is a distraction from your core product.

By leveraging a managed MCP server, you offload the entire integration lifecycle. Your AI agents get dynamic, documentation-driven access to the exact schemas of the tenant they are operating in, with standardized pagination and robust authentication handled for you.

Current relatedPosts: ["what-is-mcp-and-mcp-servers-and-how-do-they-work","auto-generated-mcp-tools-for-ai-agents-a-2026-architecture-guide","managed-mcp-for-claude-full-saas-api-access-without-security-headaches"]

FAQ

How does Truto handle Oracle Fusion Cloud rate limits?
Truto does not automatically retry, throttle, or absorb rate limit errors. If Oracle returns an HTTP 429, Truto passes it directly to Claude. Truto normalizes the upstream limit info into standardized IETF headers (ratelimit-limit, ratelimit-remaining, ratelimit-reset). Your AI agent must implement its own exponential backoff.
Does Claude need to understand Oracle's composite hash keys?
No. When using the MCP server, tools are structured so that Claude queries list endpoints first. Truto instructs the LLM to pass the returned server-generated composite hash IDs back into subsequent tool calls unchanged, preventing the model from hallucinating primary keys.
Can I restrict the MCP server to only read purchase requisitions?
Yes. When generating the MCP token via Truto, you can pass a configuration object with a methods array (e.g., ["read"]) and a tags array to strictly limit the available tools to safe, read-only operations.
How do ADF actions work in the Truto MCP server?
Oracle Application Development Framework (ADF) actions (like submitting a PO or checking funds) are non-CRUD operations. Truto surfaces these as distinct, callable MCP tools (e.g., create_a_oracle_fusion_cloud_procurement_action_check_fund), allowing Claude to trigger state changes natively.

More from our Blog