Connect MRPeasy to AI Agents: Streamline Procurement & Ops
Give your AI agent MRPeasy tools.
Connect MRPeasy to AI Agents securely via Truto's /tools endpoint. Bypass custom API integration, standardize manufacturing schemas, and orchestrate complex ERP workflows in LangChain.
In this guide
- 01Initialize Truto Tool Manager
- 02Fetch MRPeasy Tools
- 03Initialize the LLM
- 04Bind Tools to the Model
- 05Execute the Agent Loop with Rate Limit Handling
The guide
Learn how to connect MRPeasy to AI Agents using Truto's unified tools API. Build autonomous workflows for manufacturing, procurement, and inventory ops.
You want to connect MRPeasy to an AI agent so your system can autonomously query bills of materials (BOMs), execute manufacturing orders, manage stock inventories, and orchestrate complex procurement tasks based on real-time shop floor data. Here is exactly how to do it using Truto's /tools endpoint and SDK, bypassing the need to build and maintain a custom ERP integration from scratch.
If your team uses ChatGPT, check out our guide on connecting MRPeasy to ChatGPT, or if you are building on Anthropic's models, read our guide on connecting MRPeasy to Claude. For developers building custom autonomous workflows, you need a programmatic way to fetch these tools and bind them to your agent framework.
Giving a Large Language Model (LLM) read and write access to a manufacturing resource planning (MRP) system is a high-stakes engineering challenge. You cannot afford an LLM hallucinating inventory counts, misinterpreting bill of material routings, or accidentally canceling customer orders. Direct API integrations require you to write defensive JSON schemas, handle authentication lifecycles, and normalize raw HTTP errors before they poison the LLM's context window.
This guide breaks down exactly how to fetch AI-ready tools for MRPeasy, bind them natively to an LLM using frameworks like LangChain, LangGraph, CrewAI, or the Vercel AI SDK, and execute reliable manufacturing workflows. For a broader look at this design pattern across multiple SaaS platforms, refer to our research on architecting AI agents and the SaaS integration bottleneck.
The Engineering Reality of the MRPeasy API
Giving an AI agent access to external data seems straightforward in a local prototype. You write a fetch request in Node.js and wrap it in a tool decorator. Against complex, stateful systems like MRPeasy, this naive approach collapses in production.
If you hardcode these interactions into your agent, you will spend your sprints writing defensive integration wrappers instead of improving your model's reasoning capabilities. The MRPeasy API introduces several domain-specific quirks that will reliably break generic agent loops.
Bare Integer Returns on Creation
Standard REST APIs typically return the newly created object (or at least a detailed JSON response) when you issue a POST request. MRPeasy operates differently. When you hit a creation endpoint - such as creating a new Bill of Materials or a Customer Order - the API responds with the new record's database ID as a bare integer. It does not return the full record.
LLMs expect immediate feedback. If your agent executes a create_a_mr_peasy_bom tool, it needs to see the resulting BOM to proceed to the next step (like creating a manufacturing order). If it only receives 49201, it loses state and hallucinates the rest of the object. Your integration layer must handle this by intercepting the integer and automatically executing a subsequent get_single_mr_peasy_bom_by_id request to pass the complete state back to the agent.
Dangerous Status Code Side-Effects
MRPeasy relies heavily on status-driven state machines. Updating a record is not just a data mutation; it triggers cascading business logic.
For example, if you update a customer order to Status 30 (Confirmed) or higher, MRPeasy automatically books available stock from your inventory. If you update it to Status 70 (Shipped) or 80 (Delivered), the system creates a shipment record in the background. If you expose raw PUT endpoints to an LLM without strict schema constraints, the model might attempt to "correct" a status string and accidentally commit physical inventory or dispatch non-existent shipments.
Strict Period Boundaries on Reporting
Agents frequently execute analytical queries like "show me the production orders for the last quarter." In MRPeasy, reporting endpoints (such as list_all_mr_peasy_production_orders or list_all_mr_peasy_production_coproducts) require explicit period filters.
Crucially, these periods default to the current month and cannot exceed one month in a single query. A naive agent will pass startDate=2024-01-01 and endDate=2024-12-31, receive an API error, and fail the entire workflow. The integration layer must define strict JSON schemas that enforce the one-month constraint, forcing the agent to break down large historical requests into sequential monthly queries.
Why a Unified Tool Layer Matters for Manufacturing AI
A unified tool layer collapses these API quirks behind strict, deterministic schemas. Instead of wrestling with bare integers and period limits, your agent interacts with a standardized set of tools powered by Truto.
Truto maps the underlying MRPeasy API into Resources and Methods. These map to the standard endpoints but are abstracted as Proxy APIs where pagination, authentication, and query parameter processing are handled upstream. We then expose a /tools endpoint that outputs these Methods as highly structured JSON schemas perfectly formatted for LLM function calling.
graph TD
A["Agent Framework<br>(LangChain / Vercel)"] -->|"GET /integrated-account/:id/tools"| B["Truto Proxy Layer"]
B -->|"Translates & Normalizes"| C["MRPeasy API"]
C -->|"Raw Data"| B
B -->|"Normalized Schema"| AWhen you use Truto to connect MRPeasy to AI Agents, you gain immediate architectural advantages:
- Strict Input Validation: Every tool has a defined JSON schema. If the LLM tries to send an invalid period range or a malformed product payload, the tool layer rejects it before it hits the MRPeasy API, preventing downstream errors.
- Stable Interfaces: The LLM only chooses from clearly named functions like
list_all_mr_peasy_bomsorcreate_a_mr_peasy_customer_order. It does not invent URL parameters or guess at object structures. - Real-Time Schema Updates: As you modify or add custom fields to your MRPeasy integration within the Truto interface, the
/toolsendpoint automatically updates the schemas passed to the LLM. No code redeployments are required.
Fetching and Binding MRPeasy Tools via Truto
To connect MRPeasy to your agent, you need an integrated account ID from Truto. Once a user authenticates their MRPeasy environment through the Truto Link UI, you use that ID to fetch their specific toolset.
Using the TrutoToolManager from the truto-langchainjs-toolset package, this process requires minimal boilerplate.
import { ChatOpenAI } from "@langchain/openai";
import { TrutoToolManager } from "@truto/langchainjs-toolset";
async function initializeMRPeasyAgent() {
// 1. Initialize the tool manager with your Truto API key
const toolManager = new TrutoToolManager({
apiKey: process.env.TRUTO_API_KEY
});
// 2. Fetch all available MRPeasy tools for a specific integrated account
const mrpeasyTools = await toolManager.getTools("your-mrpeasy-integrated-account-id");
// 3. Initialize your LLM (OpenAI, Anthropic, etc.)
const llm = new ChatOpenAI({
modelName: "gpt-4o",
temperature: 0
});
// 4. Bind the normalized tools directly to the model
const modelWithTools = llm.bindTools(mrpeasyTools);
return modelWithTools;
}This single abstraction replaces thousands of lines of integration code, schema definitions, and OAuth lifecycle management.
Hero Tools for MRPeasy
Truto automatically generates tools for the entire MRPeasy API surface. For autonomous manufacturing operations, you should focus your agent's context window on the highest-leverage resources.
Here are the core hero tools that enable complex supply chain and production workflows.
list_all_mr_peasy_boms
Retrieves Bills of Materials (BOMs). This is essential for agents calculating manufacturing requirements or answering questions about product composition. It returns critical data including bom_id, product_id, routings, and nested components.
"Check the current Bill of Materials for the 'Aluminum Enclosure V2'. I need to know the exact routing steps and if we are using the updated 3mm rivets."
list_all_mr_peasy_stock_inventories
Fetches current on-hand quantities and costs for stock items. Agents use this tool to determine if sufficient materials exist to fulfill a customer order or if a purchase order must be triggered.
"Run a check on our stock inventory for all components required to build 50 units of the Solar Generator. Identify any parts that are currently below their minimum threshold."
create_a_mr_peasy_customer_order
Generates a new customer order. The agent must provide a customer_id and the required products array. Because creating an order at Status 30 books available stock, the agent should verify inventory before execution.
"Create a confirmed customer order for TechCorp Inc. They need 100 units of the Standard Server Rack. Ensure the status is set to Confirmed to allocate the stock immediately."
list_all_mr_peasy_manufacturing_orders
Retrieves ongoing or completed manufacturing orders (MOs). This tool allows agents to report on production bottlenecks, track work-in-progress (WIP), and forecast completion dates.
"List all active manufacturing orders assigned to the Assembly Line 1 work center. Are any of them currently blocked by missing components?"
create_a_mr_peasy_manufacturing_order
Instructs the shop floor to begin production. The agent must supply the article_id, quantity, and assigned_id. This tool is typically chained after a stock inventory check and customer order creation.
"We received a rush order for 500 circuit boards. Generate a new manufacturing order for this batch and assign it to the SMT production group."
list_all_mr_peasy_purchase_orders
Retrieves procurement data, showing orders placed with vendors. Returns details like vendor_title, status, and total_price. Essential for agents reconciling delayed shipments or auditing supply chain costs.
"Review our pending purchase orders for raw aluminum. Which vendor is handling the largest pending delivery, and what is the expected arrival date?"
For a complete list of all supported endpoints and the full JSON schema specifications, review the MRPeasy integration page.
Workflows in Action
Exposing individual tools to an LLM is only the first step. The real value of AI agents lies in their ability to chain these tools together to execute complex, multi-step operations.
Workflow 1: The Automated Order-to-Manufacturing Pipeline
Persona: Production Planner
When a sales team lands a massive order, planners must manually verify stock, allocate resources, and schedule production. An AI agent can compress this hour-long process into seconds.
"Acme Corp just approved the quote for 250 heavy-duty brackets. Process the customer order, check if we have enough raw steel in stock, and if we do, generate the manufacturing order immediately."
Agent Execution Steps:
- Tool Call:
create_a_mr_peasy_customer_order(Payload includes Acme Corp's ID and the 250 brackets). MRPeasy returns the new order ID. - Tool Call:
list_all_mr_peasy_boms(Agent queries the BOM for the heavy-duty bracket to determine the required raw steel multiplier). - Tool Call:
list_all_mr_peasy_stock_inventories(Agent calculates total steel needed and checks current on-hand quantity). - Tool Call:
create_a_mr_peasy_manufacturing_order(Since stock is sufficient, the agent generates the MO and assigns the quantity).
Result: The agent replies, "Customer Order #1042 created for Acme Corp. Verified 1,000 lbs of raw steel in stock (750 lbs required). Manufacturing Order #899 has been generated and queued for production."
Workflow 2: Autonomous Procurement and Shortage Resolution
Persona: Supply Chain Manager
Supply chain teams spend hours cross-referencing inventory levels against pending manufacturing orders to prevent production line stoppages. Agents can monitor this autonomously.
"Review the production plan for next week. Are we short on any components for the planned manufacturing orders? If so, draft a summary of what needs to be ordered."
Agent Execution Steps:
- Tool Call:
list_all_mr_peasy_production_orders(Agent fetches the planned orders for the upcoming period). - Tool Call:
list_all_mr_peasy_boms(Agent retrieves the BOMs for all products scheduled in the production plan). - Tool Call:
list_all_mr_peasy_stock_inventories(Agent compares the aggregate component requirements against current on-hand stock). - Tool Call:
list_all_mr_peasy_purchase_orders(Agent checks if the missing components are already in transit via an existing PO).
Result: The agent replies, "We are short 400 M6 bolts for next week's production of standard chassis. There are no pending purchase orders for this component. I recommend placing an order with Fastenal immediately to prevent a production halt."
Building Multi-Step Workflows
When building a production-grade agent loop, you must account for the reality of network operations, specifically rate limits.
A critical architectural note: Truto does not retry, throttle, or apply backoff on rate limit errors. When the upstream MRPeasy API returns an HTTP 429 (Too Many Requests), Truto passes that exact error back to your application. However, Truto normalizes the upstream rate limit information into standardized IETF headers (ratelimit-limit, ratelimit-remaining, ratelimit-reset). Your agent framework is entirely responsible for detecting these 429s, reading the reset header, and applying a retry/backoff mechanism.
Here is how you structure a resilient agent loop in LangChain that executes MRPeasy tools, maintains conversational memory, and handles rate limits gracefully.
import { ChatOpenAI } from "@langchain/openai";
import { TrutoToolManager } from "@truto/langchainjs-toolset";
import { HumanMessage, AIMessage, SystemMessage } from "@langchain/core/messages";
const toolManager = new TrutoToolManager({ apiKey: process.env.TRUTO_API_KEY });
const llm = new ChatOpenAI({ modelName: "gpt-4o", temperature: 0 });
// Helper to sleep during rate limit backoff
const sleep = (ms: number) => new Promise(resolve => setTimeout(resolve, ms));
async function executeManufacturingWorkflow(accountId: string, prompt: string) {
const tools = await toolManager.getTools(accountId);
const modelWithTools = llm.bindTools(tools);
const messages = [
new SystemMessage("You are an expert manufacturing operations AI. You manage MRPeasy ERP data."),
new HumanMessage(prompt)
];
console.log("Initiating MRPeasy agent loop...");
while (true) {
let response;
try {
// Invoke the model with the current conversation history
response = await modelWithTools.invoke(messages);
} catch (error: any) {
// Explicitly handle HTTP 429 Rate Limits passed through by Truto
if (error.status === 429 || error.message.includes("429")) {
console.warn("Rate limit hit. Checking Truto normalized headers...");
// Extract the standardized IETF ratelimit-reset header (defaults to 30s if missing)
const resetSeconds = error.headers?.['ratelimit-reset'] ?
parseInt(error.headers['ratelimit-reset'], 10) : 30;
console.log(`Backing off for ${resetSeconds} seconds...`);
await sleep(resetSeconds * 1000);
continue; // Retry the invocation
}
throw error; // Bubble up non-429 errors
}
messages.push(response);
// If the model does not request a tool call, the workflow is complete
if (!response.tool_calls || response.tool_calls.length === 0) {
console.log("Workflow complete.");
return response.content;
}
// Execute all requested MRPeasy tools in parallel
for (const toolCall of response.tool_calls) {
console.log(`Executing MRPeasy Tool: ${toolCall.name}`);
const tool = tools.find((t) => t.name === toolCall.name);
if (!tool) continue;
try {
const toolResult = await tool.invoke(toolCall.args);
messages.push({
role: "tool",
tool_call_id: toolCall.id,
name: toolCall.name,
content: JSON.stringify(toolResult)
});
} catch (toolError: any) {
console.error(`Tool execution failed for ${toolCall.name}:`, toolError.message);
messages.push({
role: "tool",
tool_call_id: toolCall.id,
name: toolCall.name,
content: `Error executing tool: ${toolError.message}`
});
}
}
}
}
// Execute the autonomous order pipeline
const userPrompt = "Create a customer order for Customer ID 502 requiring 100 units of Product ID 12. Check our stock inventory. If we have enough stock, generate the manufacturing order.";
executeManufacturingWorkflow("acct_mrpeasy_123", userPrompt)
.then(finalOutput => console.log("Agent Output:", finalOutput));This architecture isolates your business logic from the underlying API mechanics. You don't write custom JSONata transformations or manage OAuth flows. You define the prompt, handle the application-level state (like rate limit backoffs), and let Truto and the LLM handle the ERP orchestration.
Moving from Manual Ops to Autonomous Manufacturing
Connecting MRPeasy to AI Agents transforms an ERP from a static database into an active participant in your supply chain. By utilizing Truto's /tools endpoint, you bypass the massive technical debt of building and maintaining custom manufacturing integrations.
Your engineering team stops reading API documentation and writing boilerplate HTTP clients. Instead, they focus on defining guardrails, optimizing agent prompts, and deploying workflows that actively accelerate production timelines and reduce inventory waste.
FAQ
- How does Truto handle MRPeasy API rate limits for AI agents?
- Truto does not retry, throttle, or apply backoff on rate limit errors. When MRPeasy returns an HTTP 429, Truto passes that error directly to your application while adding standardized IETF headers (`ratelimit-limit`, `ratelimit-remaining`, `ratelimit-reset`). Your agent framework is responsible for handling the retry and backoff logic.
- What agent frameworks are supported by Truto's /tools endpoint?
- Truto's unified tools are framework-agnostic and work with any modern LLM agent framework, including LangChain, LangGraph, CrewAI, and the Vercel AI SDK. Truto provides official SDKs (like `truto-langchainjs-toolset`) to simplify the binding process.
- Can an AI agent write data back to MRPeasy using Truto?
- Yes. Truto exposes write methods (POST, PUT, DELETE) as strictly schema-validated tools. Your agent can create customer orders, update manufacturing statuses, and manage inventory, provided the agent is prompted correctly and supplied with valid arguments.
- Do I need to manage authentication to MRPeasy when using Truto tools?
- No. Truto handles the entire authentication lifecycle. You authenticate your user's MRPeasy account once via the Truto Link UI, and Truto manages the tokens and credentials automatically behind the proxy layer.