Skip to content

Connect Simpplr to AI Agents: Sync Identity, Search, and Analytics

Nidhi KN Nidhi KN 10 min read AI & Agents
TrutoFor teams building AI agents

Give your AI agent Simpplr tools.

Connect Simpplr to AI agents (LangChain, Vercel AI, CrewAI) using Truto's /tools endpoint. Fetch schema-enforced tools for enterprise search, user updates, and feed posts without building custom integrations.

In this guide

  1. 01Initialize the Tool Manager
  2. 02Fetch Simpplr Tools
  3. 03Bind Tools to the LLM
  4. 04Handle Agent Execution and Rate Limits

The guide

Learn how to connect Simpplr to AI agents using Truto's tools endpoint. A technical guide to binding enterprise search and identity tools to LangChain workflows.

You want to connect Simpplr to an AI agent so your internal systems can autonomously search enterprise knowledge, update employee profiles, distribute company-wide announcements, and sync analytics. Here is exactly how to do it using Truto's /tools endpoint and SDK, bypassing the need to build and maintain a custom integration from scratch.

Giving a Large Language Model (LLM) read and write access to your employee hub and intranet is an engineering challenge. You either spend weeks building, hosting, and maintaining a custom connector, or you use a managed infrastructure layer that handles the boilerplate for you. If your team uses ChatGPT, check out our guide on connecting Simpplr to ChatGPT, or if you are building on Anthropic's models, read our guide on connecting Simpplr to Claude. For developers building custom autonomous workflows, you need a programmatic way to fetch these tools and bind them to your agent framework.

This guide breaks down exactly how to fetch AI-ready tools for Simpplr, bind them natively to an LLM using frameworks like LangChain, LangGraph, CrewAI, or the Vercel AI SDK, and execute complex internal operations workflows. For a deeper look at the architecture behind this approach, refer to our research on architecting AI agents and the SaaS integration bottleneck.

Why a Unified Tool Layer Matters for Agent Safety

Before writing a line of integration code, decide what layer your agent talks to. This choice determines how safe your production system will be.

Direct API tools (one tool per raw Simpplr endpoint) look convenient, but they push vendor-specific quirks into the LLM's context window. The model has to remember exactly how Simpplr expects custom field payloads, or how it separates B2B operations from user-level operations. Every one of those quirks is a hallucination waiting to happen.

Fetching predefined, schema-enforced tools collapses these complexities. Your agent sees deterministic functions like simpplr_identity_users_partial_update and simpplr_enterprise_searches_search with strict JSON schemas. That gives you concrete safety wins:

  1. Smaller attack surface for hallucination. The LLM only ever chooses from stable function names. It never invents query parameter structures.
  2. Deterministic input validation. Every tool has a strict JSON schema. Invalid arguments are rejected before they hit the Simpplr API, so a broken tool call fails fast instead of creating malformed records.
  3. Decoupled execution. The agent reasons about the intent (e.g., update a user's department). The tool manager handles the execution (HTTP requests, pagination, authentication injection).

The Engineering Reality of the Simpplr API

Giving an LLM access to external data sounds simple in a prototype. You write a Node.js function that makes a fetch request and wrap it in an @tool decorator. In production against complex enterprise systems like Simpplr, this approach collapses.

Simpplr's API introduces specific integration challenges that break standard REST assumptions. If you hardcode these interactions into your agent, you will spend your sprints writing defensive integration code instead of improving your model's reasoning.

Dual-Scope Execution (B2B vs. User Context)

Simpplr strictly delineates between B2B APIs (tenant-wide, system-level actions executed via their Extensibility Center) and User APIs (actions executed in the context of a specific employee).

If you instruct an LLM to "post an announcement to the engineering feed," the model must understand whether it is authenticating as a system service account or as an individual manager. Attempting to use a B2B endpoint to post a user-attributed feed item will fail. The tool schemas must enforce which endpoints are called based on the authentication context, removing the burden of context-switching from the LLM.

Custom Field Payload Constraints

When updating a user identity or profile, Simpplr handles custom fields through strict key naming conventions. Standard fields like firstName or department act normally. However, custom attributes must be passed either as raw UUIDs or using a __c suffix appended to the key name.

Standard LLMs are trained to output intuitive JSON like {"custom_timezone": "EST"}. Simpplr will reject this. An agent must be bound to a strict JSON schema that enforces the ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}... or ^.*__c$ regex patterns, forcing the model to structure custom data correctly before the HTTP request is ever fired.

Enterprise Search Correlation

Enterprise search in Simpplr isn't just a simple GET /search?q=query. Features like Autocomplete and Smart Answers require a correlation_id to stitch together conversational searches and contextual sessions. If your agent is operating iteratively (searching, reading an excerpt, and refining the search), it needs to manage these correlation IDs. Exposing raw search endpoints to an LLM without wrapping them in stateful tools often results in broken search sessions and disconnected analytics on the Simpplr side.

Available AI Agent Tools for Simpplr

Instead of building individual API wrappers, you can fetch AI-ready tools directly from Truto's /tools endpoint. These tools are pre-configured with descriptions and schemas optimized for LLM consumption.

Here are the highest-leverage hero tools for automating Simpplr workflows.

The simpplr_enterprise_searches_search tool allows the agent to search Simpplr's enterprise content across all connected sources. It returns matches with relevancy scores, excerpts, URLs, and connector types. This is the foundation of any RAG (Retrieval-Augmented Generation) workflow inside your company intranet.

Usage note: The agent must supply a search term. Pagination is capped at 50 results per page, meaning the agent should be prompted to refine its search if the desired record isn't in the initial payload.

"Search the enterprise knowledge base for '2026 Remote Work Policy' and extract the specific hardware reimbursement limits."

List All Users

The list_all_simpplr_identity_users tool fetches all users of a Simpplr tenant. It returns core records like ID, username, status, and department.

Usage note: By default, this returns minimal login identifiers. Instruct the agent to pass fields=all in the payload if it needs to read full profiles, manager IDs, or extended metadata.

"Pull the list of all active users in the 'Engineering' department who were modified after January 1st."

Partial User Update

The simpplr_identity_users_partial_update tool executes a delta update on a user's profile. Only the fields provided in the body are changed.

Usage note: This is vastly safer for agents to use than the full-object update tool, as it prevents the LLM from accidentally wiping existing profile data by omitting fields. Passing null to a field will clear its value.

"Update John Doe's profile to set his title to 'Senior Backend Engineer' and his department to 'Platform'. Leave all other fields unchanged."

Create User Feed Post

The simpplr_wfeed_feeds_create_user tool allows the agent to create a new feed post or question acting as the authenticated user.

Usage note: This requires textHtml, scope, and type. If the agent is posting to a specific site (e.g., the Engineering Hub), it must also provide the siteId.

"Draft a welcome post introducing our new hire, Jane Smith, and publish it to the 'General Company Announcements' site feed."

Create an Analytics Export

The create_a_simpplr_analytics_export tool registers a recurring data export configuration to push CSV data via SFTP.

Usage note: This replaces the entire export configuration for the specified entity. It is highly useful for autonomous agents managing compliance reporting or syncing intranet analytics to external data warehouses.

"Configure a weekly analytics export for 'User Engagement' data to our external compliance SFTP server."

Create a Task

The create_a_simpplr_task tool generates a new Simpplr task with a title, priority, due date, and one or more assignees.

Usage note: The agent must supply assignedTo (user IDs) and creatorId. This is critical for building autonomous onboarding or compliance reminder workflows.

"Create a high-priority task for user ID 12345 to complete their annual security training, due next Friday."

For the complete tool inventory, schemas, and required parameters, refer to the Simpplr integration page.

Workflows in Action

Individual tools are useful, but chaining them together unlocks autonomous operations. Here are two concrete workflows showing how an agent orchestrates Simpplr tools.

Workflow 1: Autonomous Onboarding and Task Delegation

When a new employee joins, IT and HR admins spend hours updating directories and assigning standard tasks. An agent can completely automate this provisioning loop.

"Find the new employee profile for 'Alex Chen'. Update his department to 'Infrastructure' and his manager to user ID 9876. Then, assign him the standard 'New Hire Security Audit' task due in 7 days."

  1. Search for the User: The agent calls list_all_simpplr_identity_users with a search filter for "Alex Chen" to retrieve his unique UUID.
  2. Update the Profile: The agent calls simpplr_identity_users_partial_update passing Alex's UUID, setting the department to "Infrastructure" and managerId to 9876.
  3. Assign the Task: The agent calculates the due date, then calls create_a_simpplr_task assigning the security audit task directly to Alex's UUID.

Result: The user is fully provisioned in the org chart, and their onboarding task appears instantly in their Simpplr dashboard without manual IT intervention.

Workflow 2: Knowledge Base RAG and Announcement Generation

Agents can act as internal communications assistants, bridging the gap between static enterprise knowledge and active company feeds.

"Search the enterprise documentation for the latest 'Q3 Expense Policy'. Summarize the key changes regarding travel limits, and post that summary as an announcement to the Sales Team site feed."

  1. Enterprise Search: The agent calls simpplr_enterprise_searches_search with the query "Q3 Expense Policy" to extract the relevant text and URLs.
  2. Identify Target Site: The agent calls list_all_simpplr_content_sites searching for "Sales Team" to retrieve the target siteId.
  3. Publish Announcement: Using its own LLM reasoning, the agent formats an HTML summary of the expense policy changes. It then calls simpplr_wfeed_feeds_create_user, passing the formatted HTML, the Sales Team siteId, and the necessary scope parameters.

Result: The Sales team receives a clear, accurate feed post summarizing the new policy, complete with semantic context retrieved directly from the company's source of truth.

Building Multi-Step Workflows

To build these workflows in production, you need an architecture that fetches the tools dynamically, binds them to your LLM, and handles execution loops. This approach works with any modern framework, including LangChain, LangGraph, CrewAI, or the Vercel AI SDK.

Architecture Overview

Here is how the data flows when your agent executes a multi-step task against Simpplr:

sequenceDiagram
    participant App as Your Node.js App
    participant Agent as LLM Agent
    participant Truto as Truto /tools Endpoint
    participant Simpplr as Simpplr API

    App->>Truto: GET /integrated-account/{id}/tools
    Truto-->>App: Return JSON array of Simpplr tools
    App->>Agent: bindTools(simpplrTools)
    Agent->>App: emit tool_call (e.g. enterprise_search)
    App->>Truto: Execute tool proxy request
    Truto->>Simpplr: Forward request with managed auth
    Simpplr-->>Truto: Return search payload
    Truto-->>App: Return normalized JSON
    App->>Agent: Submit tool result
    Agent->>App: emit tool_call (e.g. create_task)

Binding Tools with LangChain.js

Using the truto-langchainjs-toolset, you can fetch the entire Simpplr API surface area as callable tools in a few lines of code. The SDK handles the HTTP requests to Truto's proxy layer.

import { ChatOpenAI } from "@langchain/openai";
import { TrutoToolManager } from "truto-langchainjs-toolset";
import { HumanMessage } from "@langchain/core/messages";
 
async function runSimpplrAgent() {
  // 1. Initialize the Tool Manager for a specific connected Simpplr account
  const toolManager = new TrutoToolManager({
    trutoApiKey: process.env.TRUTO_API_KEY,
    integratedAccountId: "your_simpplr_account_id",
  });
 
  // 2. Fetch the tools dynamically from Truto's /tools endpoint
  const tools = await toolManager.getTools();
 
  // 3. Initialize your LLM and bind the tools natively
  const llm = new ChatOpenAI({
    modelName: "gpt-4o",
    temperature: 0,
  }).bindTools(tools);
 
  // 4. Invoke the model with a complex workflow prompt
  const response = await llm.invoke([
    new HumanMessage("Find the new hire Jane Doe, update her department to Marketing, and assign her the mandatory compliance task.")
  ]);
 
  // 5. The LLM returns a structured array of tool calls 
  console.log("Agent decided to call:", response.tool_calls);
  
  // In a real application, you would loop through response.tool_calls, 
  // execute them via the Truto SDK, and feed the results back to the LLM.
}

Handling API Rate Limits

When your agent begins iterating through large datasets (like paginating through hundreds of enterprise search results or updating user profiles in bulk), it will inevitably hit Simpplr's rate limits.

This is a critical engineering fact: Truto does not automatically retry, throttle, or absorb rate limit errors on your behalf. When the upstream Simpplr API returns an HTTP 429 (Too Many Requests), Truto passes that error directly back to your application.

However, Truto normalizes the upstream rate limit information into standardized IETF headers regardless of how the vendor formats them natively. You will receive:

  • ratelimit-limit: The total requests allowed in the current window.
  • ratelimit-remaining: The number of requests left.
  • ratelimit-reset: The timestamp when the limit resets.

Your application code - specifically the execution loop handling the agent's tool calls - is strictly responsible for catching these 429s, reading the reset header, and applying the backoff.

async function executeToolWithBackoff(toolCall, maxRetries = 3) {
  for (let attempt = 0; attempt < maxRetries; attempt++) {
    try {
      // Attempt to execute the tool call via your SDK/framework
      const result = await executeToolCall(toolCall);
      return result;
    } catch (error) {
      if (error.status === 429) {
        // Extract Truto's normalized rate limit headers
        const resetTime = error.headers['ratelimit-reset'];
        
        if (resetTime) {
          const delayMs = (parseInt(resetTime) * 1000) - Date.now();
          if (delayMs > 0) {
            console.warn(`Rate limited by Simpplr. Sleeping for ${delayMs}ms`);
            await new Promise(resolve => setTimeout(resolve, delayMs));
            continue; // Retry the request
          }
        }
        
        // Fallback exponential backoff if header is unparseable
        const fallbackDelay = Math.pow(2, attempt) * 1000;
        await new Promise(resolve => setTimeout(resolve, fallbackDelay));
        continue;
      }
      
      // If it's not a 429, throw the error back to the agent for self-correction
      throw error;
    }
  }
  throw new Error("Max retries exceeded for tool call");
}

By explicitly handling these 429s in your tool execution layer, you prevent the LLM from hallucinating fixes for network errors, ensuring a stable, deterministic agent loop.

Moving to Production

Connecting AI agents to Simpplr transforms static intranet portals into autonomous, programmable hubs. But giving an LLM the keys to your employee directory and enterprise search requires architectural discipline.

By fetching schema-enforced tools through Truto's /tools endpoint, you isolate the LLM from API idiosyncrasies, enforce strict input validation, and normalize complex tasks like identity updates and feed creation. Your engineering team spends zero time reading API docs, managing OAuth refresh tokens, or figuring out custom field UUIDs - and 100% of their time improving the agent's reasoning.

Two ways to put Simpplr to work

Truto

For product teams

Give your agent Simpplr tools

Your customers connect their own Simpplr accounts. Your product gets one API and MCP tools for Simpplr, through Truto.

FAQ

How do I connect Simpplr to an AI agent framework like LangChain?
You can connect Simpplr to AI agents by dynamically fetching AI-ready tools from Truto's `/tools` endpoint and using standard framework methods like `.bindTools()` to expose them to your LLM.
Does Truto automatically handle Simpplr API rate limits?
No, Truto does not retry or throttle rate limits. It passes HTTP 429 errors directly to the caller while normalizing the rate limit headers (ratelimit-reset). Your agent execution loop must handle the backoff.
How do AI agents handle custom fields in Simpplr?
Truto's dynamically generated tool schemas enforce Simpplr's custom field requirements, forcing the LLM to format custom data correctly using UUIDs or the required `__c` suffix before the API request is made.
Can I restrict the agent to only use the Simpplr B2B API?
Yes, you can filter the tools provided to your agent by method type or scope. Truto explicitly delineates between Simpplr's B2B (tenant-wide) endpoints and user-scoped endpoints.
Simpplr SimpplrAI agent tools Get a sandbox

More from our Blog