<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Athulya R</title>
    <description>The latest articles on DEV Community by Athulya R (@athulya_r).</description>
    <link>https://dev.to/athulya_r</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3626462%2F2c59f927-606d-4f2d-be54-c6620aa83ed7.jpg</url>
      <title>DEV Community: Athulya R</title>
      <link>https://dev.to/athulya_r</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/athulya_r"/>
    <language>en</language>
    <item>
      <title>Build a Dispatch Command Centre with ToolJet MCP</title>
      <dc:creator>Athulya R</dc:creator>
      <pubDate>Fri, 18 Sep 2026 13:59:37 +0000</pubDate>
      <link>https://dev.to/tooljet/build-a-dispatch-command-centre-with-tooljet-mcp-233c</link>
      <guid>https://dev.to/tooljet/build-a-dispatch-command-centre-with-tooljet-mcp-233c</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;You build a dispatch command centre with ToolJet MCP for a regional broadband operator when technician locations, open jobs, and outage zones all change at once. The result is a structured ToolJet application, with data, queries, and interface working together, so dispatchers keep operating from the same place instead of juggling separate views. This article shows the app that came out of the build, then gives you the prompt below so you can reproduce the same structure in your own environment. You get a two-page workflow that keeps live routing and end-of-day review inside one app.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Fdispatch-command-centre-live-map.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Fdispatch-command-centre-live-map.png" title="Dispatch Command Centre built with ToolJet MCP: Dispatch Command Centre — live map, breach-risk job queue, and active outages" alt="Build a dispatch command centre with ToolJet MCP, the finished application: Dispatch Command Centre — live map, breach-risk job queue, and active outages" width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Dispatch Command Centre — live map, breach-risk job queue, and active outages&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Fdispatch-command-centre-live-map-2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Fdispatch-command-centre-live-map-2.png" title="Dispatch Command Centre built with ToolJet MCP: End of Day Summary — completed vs. missed jobs and the by-region hot-areas table" alt="Build a dispatch command centre with ToolJet MCP, the finished application: End of Day Summary — completed vs. missed jobs and the by-region hot-areas table" width="800" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;End of Day Summary — completed vs. missed jobs and the by-region hot-areas table&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What We're Building
&lt;/h2&gt;

&lt;p&gt;The map does the real work on page one, with technician pins, job pins, and outage shading sharing one view. A queue on the left sorts unassigned jobs by urgency, and each suggestion shows why a technician rises to the top before you act. Clicking a job or technician opens the relevant detail panel, then the reassignment flow shows the overbooked minutes, skill match, and detour impact before anything is saved. Page two switches to a read-only summary, and the branded header keeps the title, subtitle, live counter, and page link visible across both views.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Live map with technician positions, open jobs, and outage shading&lt;/li&gt;
&lt;li&gt;Urgency queue that ranks unassigned work and explains technician suggestions&lt;/li&gt;
&lt;li&gt;Reassignment preview that checks skill match, capacity impact, and route detour before save&lt;/li&gt;
&lt;li&gt;End of Day Summary page with regional performance and hot-area readouts&lt;/li&gt;
&lt;li&gt;Role-scoped views for dispatchers, technicians, and regional managers&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Build a Dispatch Command Centre with ToolJet MCP for Live Routing
&lt;/h2&gt;

&lt;p&gt;Want to build it yourself? Start with the &lt;a href="https://github.com/ToolJet/mcp-v2" rel="noopener noreferrer"&gt;ToolJet MCP repository&lt;/a&gt; for setup instructions, supported agents, and everything you need to follow along.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Consolidated Build Prompt
&lt;/h2&gt;

&lt;p&gt;The real build took several passes, and the requirements are now consolidated into one prompt you can use from the start. That gives you a single-shot reference for reproducing the same app instead of reconstructing the work from the iteration history.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Build a polished internal app called Dispatch Command Centre for a regional broadband provider in Ontario, using Supabase Postgres.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Keep it to two pages: Dispatch Command Centre, showing technician positions, open jobs, outage overlays, urgency-ranked unassigned work, technician suggestions, and the reassignment flow. End of Day Summary, showing completed, missed, total, and on-time results, plus regional breakdowns and hot areas.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Design it as a muted warm enterprise operations app with soft shadows, rounded corners, warm orange accents, cozy spacing, and a friendly hierarchy. Support light and dark mode with distinct color tokens for each, and replace the default page chrome with a custom branded header band that includes an eyebrow label, title, subtitle, live open-jobs counter, and a link to the summary page.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Use five related tables: technicians, jobs, outage_areas, staff, and reassignment_log. Resolve the signed-in user's role and region from staff on page load, then scope every query and list to that role. Dispatchers can reassign work, technicians see only their own day as read-only, and regional managers see everything read-only.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;A reassignment confirmation must show the overbooked minutes, skill match, and detour minutes before save. On confirm, update the assigned technician and write the audit row. The prompt also seeds about 80 technicians, 150 jobs, and a handful of active outage areas across five Ontario regions.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  How ToolJet MCP Builds the App
&lt;/h2&gt;

&lt;p&gt;ToolJet MCP works through the whole application, not just the screen, so the data model, pages, components, queries, and the wiring between them land together as one structured ToolJet app. That matters here because dispatch software does not stop at the interface, it also needs data connectivity, workflows, permissions, deployment, and ongoing change, and the generated app sits on a runtime that carries those where supported instead of leaving you with a codebase to operate yourself. The path stays open after generation, because you can keep editing visually and drop into code when a specific detail calls for it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The One Thing That Broke
&lt;/h2&gt;

&lt;p&gt;The map looked finished, but the technician and job markers never appeared, which made the live view feel empty even though the data was present. A marker ID mismatch in the Map component caused the problem, and fixing that wiring restored every pin.&lt;/p&gt;

&lt;h2&gt;
  
  
  Data Created
&lt;/h2&gt;

&lt;p&gt;The app ended up with five tables. &lt;code&gt;staff&lt;/code&gt; maps login email to role, region, and technician assignment, &lt;code&gt;technicians&lt;/code&gt; stores each field technician and their shift capacity, &lt;code&gt;jobs&lt;/code&gt; tracks service work and assignment, &lt;code&gt;outage_areas&lt;/code&gt; marks active regional outage zones, and &lt;code&gt;reassignment_log&lt;/code&gt; keeps the audit trail for every change. The live map, the urgency queue, and the summary page all read from those tables, while the reassignment flow writes back to &lt;code&gt;jobs&lt;/code&gt; and records the decision in &lt;code&gt;reassignment_log&lt;/code&gt;.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Page&lt;/th&gt;
&lt;th&gt;Components&lt;/th&gt;
&lt;th&gt;What they cover&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Dispatch Command Centre&lt;/td&gt;
&lt;td&gt;39&lt;/td&gt;
&lt;td&gt;Live map, breach-risk job queue, active outages, and the reassignment flow with consequence preview&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;End of Day Summary&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;Completed/missed/on-time stats and a by-region hot-areas table&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  What Got Generated
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Result&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Pages&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ToolJet DB tables&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Queries&lt;/td&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Components&lt;/td&gt;
&lt;td&gt;53&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Code files to maintain&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Repair cycles&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Final validation&lt;/td&gt;
&lt;td&gt;2 errors&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Industries That Run This
&lt;/h2&gt;

&lt;p&gt;Regional broadband and telecom providers, utilities, field-service and home-repair networks, HVAC and plumbing dispatch operations, and any business that has to coordinate a distributed field workforce against time-boxed customer commitments.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who Gets Access To The Built App
&lt;/h2&gt;

&lt;p&gt;Dispatchers can reassign jobs and see their own region (or every region, if unscoped). Technicians have read-only access to their own day's jobs. Regional managers have read-only access across every region. Access is enforced at the application/query level against a staff table keyed by login email, not as a hard database-level security boundary.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enterprise Features for Your Dispatch Command Centre
&lt;/h2&gt;

&lt;p&gt;A dispatch command centre handles technician locations, customer job details, and outage zones. ToolJet covers that governance at the platform layer, so you configure it once instead of rebuilding it in every app.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SSO and SCIM:&lt;/strong&gt; sign in with &lt;a href="https://docs.tooljet.com/docs/user-management/sso/saml/setup/" rel="noopener noreferrer"&gt;SAML&lt;/a&gt;, OIDC or LDAP, and provision users automatically&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Role-based access control:&lt;/strong&gt; scope &lt;a href="https://docs.tooljet.com/docs/user-management/role-based-access/access-control/" rel="noopener noreferrer"&gt;permissions&lt;/a&gt; to the app, the data source, and each query&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audit logs:&lt;/strong&gt; track every login, edit, and approval decision for &lt;a href="https://docs.tooljet.com/docs/security/audit-logs/" rel="noopener noreferrer"&gt;compliance&lt;/a&gt; review&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Air-gapped deployment:&lt;/strong&gt; self-host on &lt;a href="https://docs.tooljet.com/docs/setup/docker/" rel="noopener noreferrer"&gt;Docker&lt;/a&gt; or Kubernetes so your data stays in your network&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multiplayer editing:&lt;/strong&gt; several builders work on the same app, with versioning and &lt;a href="https://docs.tooljet.com/docs/development-lifecycle/gitsync/overview/" rel="noopener noreferrer"&gt;Git sync&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ToolJet AI inside your own deployment:&lt;/strong&gt; run the AI features in your tenancy rather than a shared service&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ToolJet Workflows adds the notification layer. One workflow fires when a reassignment is confirmed, sends a Slack message to dispatch, sends a Gmail message to the technician, and writes the decision back to &lt;code&gt;reassignment_log&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Takeaways
&lt;/h2&gt;

&lt;p&gt;This build shows a dispatcher can move from a single prompt to a live map, urgency sorting, pre-save consequence checks, and a read-only summary page tied to real regional data. The important part is not the screen alone, it is the structured ToolJet application behind it, because the result stays editable inside the same runtime instead of becoming a code handoff you must reassemble later. That is where visual editing, code where needed, and the runtime's data and workflow pieces fit together with role scoping and audit history, so the app can keep changing as dispatch rules change.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Three to four builds per model across four-page apps. 1 credit = 1 cent. Credits and time are estimates only and will vary with the complexity of what you ask for. This measures cost and speed only, not how complete or polished the result is.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Even averaging across model tiers, ToolJet MCP can turn $10 into a dozen or more working 4-page apps.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try ToolJet MCP
&lt;/h2&gt;

&lt;p&gt;Build a dispatch command centre with ToolJet MCP for your own field data, then request a &lt;a href="https://tooljet.com/schedule-demo" rel="noopener noreferrer"&gt;ToolJet demo&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQs
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What does Dispatch Command Centre show on first load?
&lt;/h3&gt;

&lt;p&gt;It opens on the map, the urgent job queue, and the outage overlay, with the header showing the current open-work count and a link to the summary page. Clicking a technician or job opens the details needed to route work without leaving the page.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do I reproduce this app with ToolJet MCP?
&lt;/h3&gt;

&lt;p&gt;Use the prompt in this article as the full spec and let ToolJet MCP build the structure in one pass. The goal is the same two-page dispatch app, with the tables, role scoping, map, preview modal, and summary page already defined.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do I need to write custom code for the core dispatch flow?
&lt;/h3&gt;

&lt;p&gt;Not for the core flow. The prompt drives the data model, page layout, role scoping, map behavior, preview modal, and summary page, and you only drop into code when a specific edge case needs it.&lt;/p&gt;

&lt;h3&gt;
  
  
  What happens to the app after the agent finishes?
&lt;/h3&gt;

&lt;p&gt;You keep a ToolJet application, not a disposable draft. The runtime carries the data connections, workflows, permissions, and maintenance path where supported, so changes stay inside the same app as dispatch rules change.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I point the app at my own Postgres data?
&lt;/h3&gt;

&lt;p&gt;Yes, the build is centered on a Postgres datasource. Your technicians, jobs, outage areas, and staff tables can supply the live data while the prompt in this article defines the app shape.&lt;/p&gt;

&lt;h3&gt;
  
  
  How are reassignment warnings calculated?
&lt;/h3&gt;

&lt;p&gt;The preview compares the target technician's remaining capacity, required skills, and added route time before the reassignment is saved. The dispatcher sees the consequence values first, then decides whether to proceed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can dispatchers, technicians, and managers use the same app?
&lt;/h3&gt;

&lt;p&gt;Yes. The app reads the signed-in user's role and region from &lt;code&gt;staff&lt;/code&gt;, then scopes each page so dispatchers can reassign, technicians stay read-only, and regional managers see the full picture.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>Build a Device Register with ToolJet MCP</title>
      <dc:creator>Athulya R</dc:creator>
      <pubDate>Thu, 17 Sep 2026 14:46:48 +0000</pubDate>
      <link>https://dev.to/tooljet/build-a-device-register-with-tooljet-mcp-3344</link>
      <guid>https://dev.to/tooljet/build-a-device-register-with-tooljet-mcp-3344</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;You build a device register with ToolJet MCP when a multi-academy trust needs one place to issue, return, move, and write off laptops and tablets across 11 schools instead of chasing per-school spreadsheets. The app in this article turns that brief into a structured ToolJet application, with data, queries, and interface kept together so the team keeps running the register rather than juggling a screen and a separate code export. The result gives device coordinators and finance staff one live place to manage stock, history, and the handovers that happen every term.&lt;br&gt;
You can easily build a 4-page app with ToolJet MCP for as little as $0.17 with a lean model (Luna medium), or pay more for the latest flagship reasoning (Sol) if that's what you're after. The cost is your call, not a floor we set for you.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Fscan-and-record.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Fscan-and-record.png" title="Device Register built with ToolJet MCP: Scan &amp;amp; Record: look up a device by asset tag and issue, return, move or write it off" alt="Build a device register with ToolJet MCP, the finished application: Scan &amp;amp; Record: look up a device by asset tag and issue, return, move or write it off" width="800" height="753"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Scan &amp;amp; Record: look up a device by asset tag and issue, return, move or write it off&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Fscan-and-record-2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Fscan-and-record-2.png" title="Device Register built with ToolJet MCP: Register: every device across all 11 schools, searchable by school and status" alt="Build a device register with ToolJet MCP, the finished application: Register: every device across all 11 schools, searchable by school and status" width="800" height="523"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Register: every device across all 11 schools, searchable by school and status&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Fscan-and-record-3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Fscan-and-record-3.png" title="Device Register built with ToolJet MCP: Summary: per-school breakdown chart and the damage-charge approval queue" alt="Build a device register with ToolJet MCP, the finished application: Summary: per-school breakdown chart and the damage-charge approval queue" width="800" height="832"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Summary: per-school breakdown chart and the damage-charge approval queue&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What We're Building
&lt;/h2&gt;

&lt;p&gt;The home page centres on a scan panel and a device detail card, so the user starts from one asset tag and moves straight into action. A camera scan or manual entry fills the card with school, holder, status, and condition, while a recent-activity feed keeps the last scans and actions visible during the session. Bulk issue mode changes the flow for a class rollout: pick the class, scan devices one by one against a running count, and use Undo to roll back the last scan when the wrong device is entered. Opening a device in the Register page brings up the full movement history in a modal, and the Summary page pulls the counts and damage-charge queue into one view for finance.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Camera scan with manual asset-tag fallback&lt;/li&gt;
&lt;li&gt;Centered device detail panel with school, holder, status, and condition&lt;/li&gt;
&lt;li&gt;Recent activity feed for the latest scans and actions&lt;/li&gt;
&lt;li&gt;Bulk issue mode with class selection, running count, and undo&lt;/li&gt;
&lt;li&gt;Damage found on return becomes a finance review queue, not an automatic charge&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Build a Device Register with ToolJet MCP for Trust Teams
&lt;/h2&gt;

&lt;p&gt;Want to build it yourself? Start with the &lt;a href="https://github.com/ToolJet/mcp-v2" rel="noopener noreferrer"&gt;ToolJet MCP repository&lt;/a&gt; for setup instructions, supported agents, and everything you need to follow along.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Consolidated Build Prompt
&lt;/h2&gt;

&lt;p&gt;The build took several passes, and the requirements now live in one prompt you could have used from the start. Read it as a single-shot specification, then use it to recreate the same app without reconstructing the earlier iterations.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Build a 3-page device register app in ToolJet for Northline Learning Trust, a multi-academy trust with 11 schools, to replace per-school spreadsheets for laptops and tablets. No permissions system for now, every signed-in user can act as any staff member.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Page 1, Scan &amp;amp; Record, is the home page. Staff scan a device's asset tag with the camera or type it manually, then see the device's school, current holder, status, and condition in a centered panel that starts greyed out before a scan. From there they can issue to a pupil or staff member, return, move, or write off a device, with a recent-activity feed and a bulk issue mode for the September rollout, including class selection, repeated scanning, and undo. Issuing to a pupil captures the accepted-by name. Returning a device can record damage from a fixed damage-type list with an optional photo, and any damage creates a proposed charge for later finance approval.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Page 2, Register, is a searchable table of every device with school and status filters, plus a modal that shows current details and the full movement history. Page 3, Summary, shows owned, on loan, overdue, and written off this year as a KPI strip, a grouped chart across all 11 schools, and a queue of proposed damage charges with Approve and Reject actions.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Use schools, staff, classes, pupils, a fixed damage-type list, devices, device movements, loan agreements, and damage charges. Device movements are the audit trail, loan agreements capture the accepted-by record, and damage charges stay proposed until finance acts. Design it as enterprise-grade but warm and approachable, with warm oranges, soft shadows, rounded corners, muted colours, a trust-naming header band, the signed-in-as identity and logout control inside it, and one consistent panel type size.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  How ToolJet MCP Builds the App
&lt;/h2&gt;

&lt;p&gt;ToolJet MCP works through the whole application, not just the screen, so the data model, pages, components, queries, and the wiring between them land as one structured ToolJet application. Enterprise app building does not end at the interface, because data connectivity, workflows, permissions, deployment, and ongoing change still sit behind the register, and the generated app lives on a runtime that carries those where supported instead of handing you a codebase to operate alone. The path stays open after generation, with visual editing for normal changes and code where a device rule or data transform needs it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Data Created
&lt;/h2&gt;

&lt;p&gt;The app ended up with 9 tables, split across the trust roster, the device ledger, and the finance trail. &lt;code&gt;schools&lt;/code&gt;, &lt;code&gt;staff&lt;/code&gt;, &lt;code&gt;classes&lt;/code&gt;, and &lt;code&gt;pupils&lt;/code&gt; anchor who can hold a device, &lt;code&gt;damage_types&lt;/code&gt; and &lt;code&gt;devices&lt;/code&gt; define what the register knows, and &lt;code&gt;device_movements&lt;/code&gt;, &lt;code&gt;loan_agreements&lt;/code&gt;, and &lt;code&gt;damage_charges&lt;/code&gt; keep the history and review queue tied to each asset.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Page&lt;/th&gt;
&lt;th&gt;Components&lt;/th&gt;
&lt;th&gt;What they cover&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Scan &amp;amp; Record&lt;/td&gt;
&lt;td&gt;57&lt;/td&gt;
&lt;td&gt;Scan or type an asset tag, see the device panel, and issue, return, move or write off a device, plus bulk issue mode&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Register&lt;/td&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;Searchable register of every device with school/status filters and a full history modal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Summary&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Per-school breakdown chart, KPI strip, and the damage-charge approval queue&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  What Got Generated
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Result&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Pages&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ToolJet DB tables&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Queries&lt;/td&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Components&lt;/td&gt;
&lt;td&gt;80&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Code files to maintain&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Repair cycles&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Final validation&lt;/td&gt;
&lt;td&gt;0 error&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Industries That Run This
&lt;/h2&gt;

&lt;p&gt;Multi-academy trusts and school IT teams are the direct fit here. The same pattern, a scannable asset register with an issue, return, move or write-off lifecycle, loan agreements, and damage charges routed for approval rather than auto-applied, suits any organisation that hands out shared hardware to people it doesn't directly employ or fully control: universities issuing laptops to students, healthcare trusts tracking mobile devices and equipment across wards, and corporate IT teams managing a loaned-device fleet across offices.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who Gets Access To The Built App
&lt;/h2&gt;

&lt;p&gt;Permissions were explicitly left out of this build. Anyone signed in can pick any staff identity from the header and act as them: issue, return, move or write off any device at any school, and approve or reject any damage charge. It's built as a shared operational tool for school IT staff, not a role-restricted system; adding real per-school or per-role access control would be a natural next phase.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enterprise Features for Your Device Register App
&lt;/h2&gt;

&lt;p&gt;A device register holds asset tags, pupil names, and loan agreements. ToolJet covers that governance at the platform layer, so you configure it once instead of rebuilding it in every app.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SSO and SCIM:&lt;/strong&gt; sign in with &lt;a href="https://docs.tooljet.com/docs/user-management/sso/saml/setup/" rel="noopener noreferrer"&gt;SAML&lt;/a&gt;, OIDC or LDAP, and provision users automatically&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Role-based access control:&lt;/strong&gt; scope &lt;a href="https://docs.tooljet.com/docs/user-management/role-based-access/access-control/" rel="noopener noreferrer"&gt;permissions&lt;/a&gt; to the app, the data source, and each query&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audit logs:&lt;/strong&gt; track every login, edit, and approval decision for &lt;a href="https://docs.tooljet.com/docs/security/audit-logs/" rel="noopener noreferrer"&gt;compliance&lt;/a&gt; review&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Air-gapped deployment:&lt;/strong&gt; self-host on &lt;a href="https://docs.tooljet.com/docs/setup/docker/" rel="noopener noreferrer"&gt;Docker&lt;/a&gt; or Kubernetes so your data stays in your network&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multiplayer editing:&lt;/strong&gt; several builders work on the same app, with versioning and &lt;a href="https://docs.tooljet.com/docs/development-lifecycle/gitsync/overview/" rel="noopener noreferrer"&gt;Git sync&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ToolJet AI inside your own deployment:&lt;/strong&gt; run the AI features in your tenancy rather than a shared service&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ToolJet Workflows adds the notification layer. One workflow fires when a damage charge is approved, posts the finance decision in Slack, emails the school through Gmail, and writes the result back to &lt;code&gt;damage_charges&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Takeaways
&lt;/h2&gt;

&lt;p&gt;This build shows a trust-wide device register can move from one prompt to a working app that handles scan, register, summary, and finance review flows around the same shared data. The result matters because the agent produces a structured application on ToolJet's runtime, so the team keeps editing the app instead of inheriting a code export and its upkeep. That model leaves room for visual changes, targeted code when a rule is special, and the data, workflow, and governance layer that keeps device history, damage review, and future changes in one place.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Three to four builds per model across four-page apps. 1 credit = 1 cent. Credits and time are estimates only and will vary with the complexity of what you ask for. This measures cost and speed only, not how complete or polished the result is.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Even averaging across model tiers, ToolJet MCP can turn $10 into a dozen or more working 4-page apps.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try ToolJet MCP
&lt;/h2&gt;

&lt;p&gt;Build your own device register for a multi-academy trust, then request a &lt;a href="https://tooljet.com/schedule-demo" rel="noopener noreferrer"&gt;ToolJet demo&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQs
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What does ToolJet MCP do for a device register?
&lt;/h3&gt;

&lt;p&gt;ToolJet MCP turns a written brief into a working ToolJet app by shaping the register's pages, data, and interactions together. For this build, that means a scanner-led device register rather than a static mockup or a pile of scripts.&lt;/p&gt;

&lt;h3&gt;
  
  
  What does the Device Register app actually do?
&lt;/h3&gt;

&lt;p&gt;The app tracks laptops and tablets across 11 schools, then lets staff issue, return, move, and write off each device. It also keeps movement history, loan agreements, and damage charges attached to the same record.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do you reproduce the build from the prompt in this article?
&lt;/h3&gt;

&lt;p&gt;Use the prompt in this article as the full specification and run it as one build request. The same pages, tables, and rules can be recreated without turning the brief back into a manual checklist.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do you need to write code for the scanner and history views?
&lt;/h3&gt;

&lt;p&gt;Not for the core flow. The app shows the scan panel, device details, recent activity, register filters, and history modal as part of the generated application, and you only drop into code when a special rule needs it.&lt;/p&gt;

&lt;h3&gt;
  
  
  What happens after the agent finishes, is this just a UI generator?
&lt;/h3&gt;

&lt;p&gt;No, the output is a structured ToolJet application that keeps the data, queries, and interface together on the runtime. You keep editing the app visually, add code where needed, and let the same project carry the device rules forward.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can the app use your own device data?
&lt;/h3&gt;

&lt;p&gt;Yes, the same register shape can point at your own trust data instead of the seeded demo content. The device list, movement log, loan records, and damage queue are all built around that shared model.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can several people keep building on the same Device Register app?
&lt;/h3&gt;

&lt;p&gt;Yes, the same ToolJet app stays as one shared project, so different builders can keep extending the register without splitting the logic across separate copies. That helps when the trust updates device rules or adds a new school process.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Build an Asset Handover App with ToolJet MCP</title>
      <dc:creator>Athulya R</dc:creator>
      <pubDate>Wed, 16 Sep 2026 16:15:05 +0000</pubDate>
      <link>https://dev.to/tooljet/build-an-asset-handover-app-with-tooljet-mcp-4fm4</link>
      <guid>https://dev.to/tooljet/build-an-asset-handover-app-with-tooljet-mcp-4fm4</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Build an asset handover app with ToolJet MCP for the counter team that checks out power tools, survey gear, and site laptops from a tablet. The app shows who has each asset, what condition it was last recorded in, and what needs to happen next at handover. You get the screen flow, the data model, and the prompt in this article, and an agent generated the result as a structured ToolJet application with data, queries, and interface together, not a screen or a code drop.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Fasset-handover-station-tooljet-mcp-app-8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Fasset-handover-station-tooljet-mcp-app-8.png" title="Asset Handover Station built with ToolJet MCP: Equipment List — KPI tiles, category breakdown, recent activity, and a searchable, filterable table with an overdue view" alt="Build an asset handover app with ToolJet MCP, the finished application: Equipment List — KPI tiles, category breakdown, recent activity, and a searchable, filterable table with an overdue view" width="800" height="966"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Equipment List — KPI tiles, category breakdown, recent activity, and a searchable, filterable table with an overdue view&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Fasset-handover-station-tooljet-mcp-app-2-6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Fasset-handover-station-tooljet-mcp-app-2-6.png" title="Asset Handover Station built with ToolJet MCP: Item Detail — full movement history with condition photos, and an Asset-Manager-only correction flow" alt="Build an asset handover app with ToolJet MCP, the finished application: Item Detail — full movement history with condition photos, and an Asset-Manager-only correction flow" width="800" height="493"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Item Detail — full movement history with condition photos, and an Asset-Manager-only correction flow&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Fasset-handover-station-tooljet-mcp-app-3-6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Fasset-handover-station-tooljet-mcp-app-3-6.png" title="Asset Handover Station built with ToolJet MCP: Scan &amp;amp; Record — QR scan with a manual-code fallback, big Issue/Return/Transfer buttons" alt="Build an asset handover app with ToolJet MCP, the finished application: Scan &amp;amp; Record — QR scan with a manual-code fallback, big Issue/Return/Transfer buttons" width="800" height="509"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Scan &amp;amp; Record — QR scan with a manual-code fallback, big Issue/Return/Transfer buttons&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What We're Building
&lt;/h2&gt;

&lt;p&gt;This app uses a wide scan-and-record page and a separate equipment list page, both tuned for tablet use. On the scan page, a big QR scanner sits with manual code entry, a match reveals the asset's name, category, holder, and condition, and a miss opens a centered register form for a new item. The same screen then drives the handover action with Issue, Return, and Transfer controls, recipient and condition fields, an issue date picker, photo capture for returns, and a single confirm step, while the layout keeps the manual code entry and camera view from overlapping. The confirm step returns the tablet to scan-ready state, and the equipment list shows summary tiles, a category chart, recent activity, search, filters, and an overdue view that sorts from most overdue first, while row clicks open the hidden item detail history with notes beside each photo.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Scan a QR code or type a manual code to land on the right asset record&lt;/li&gt;
&lt;li&gt;Register a new asset inline when the code does not match an existing item&lt;/li&gt;
&lt;li&gt;Record issue, return, and transfer movements from one compact screen&lt;/li&gt;
&lt;li&gt;Attach return photos to the movement record and keep the history append-only&lt;/li&gt;
&lt;li&gt;Review equipment with summary tiles, a category chart, recent activity, and an overdue list&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Build an Asset Handover App with ToolJet MCP for Scan, Record, and Review
&lt;/h2&gt;

&lt;p&gt;Want to build it yourself? Start with the &lt;a href="https://github.com/ToolJet/mcp-v2" rel="noopener noreferrer"&gt;ToolJet MCP repository&lt;/a&gt; for setup instructions, supported agents, and everything you need to follow along.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Consolidated Build Prompt
&lt;/h2&gt;

&lt;p&gt;The build took several passes, and the requirements are consolidated here into one prompt that could have driven the app from the start. You can use the prompt in this article to reproduce the same structure in a single run.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Build a 2-page tablet app for a commercial construction equipment store to replace a paper asset-handover ledger. Use ToolJetDB for two tables: items (code, barcode_value, name, category, status, current_holder, current_condition, expected_return_at) and movements (an append-only log of every issue/return/transfer, with from/to holder, condition before/after, notes, photo_urls, and a corrected/corrected_by/corrected_at trail) — an item's current state is always derived from its latest movement, never overwritten in place.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Page 1, Scan &amp;amp; Record: a big QR scanner with a manual-code fallback above it. On a match, show the item's name, category, current holder, and condition immediately. On no match, show an inline register-item form (name, category, condition) that generates a new code and continues straight into the movement step. One screen with three big Issue/Return/Transfer buttons, a recipient field, a condition-now field, an expected-return date picker for Issue, and a 1-2 photo capture step for Return that uploads to S3 and attaches the URLs to the movement record. A single Confirm button submits the movement and returns to scan-ready. Center the register-item form; keep the manual code entry and camera view from overlapping.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Page 2, Equipment List: KPI tiles for total/available/issued-or-transferred/overdue counts, a category breakdown chart, a recent-activity feed, and a searchable/filterable table of all equipment showing current holder and last-moved time, with an Overdue tab sorted most-overdue-first. Row click opens a hidden Item Detail page with the item's current state and full movement history, each entry showing its condition note next to its photos.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Two ToolJet groups, Operators and Asset Managers. Both can scan/record movements and view full history read-only. Only Asset Managers can correct a mistaken movement record (enforced on the correction query itself, not just hidden in the UI) — correcting the latest movement recomputes the item's current state. Apply a custom muted theme and seed realistic sample data across all equipment categories and statuses so the app doesn't demo empty. Keep the app to exactly 2 top-level pages.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  How ToolJet MCP Builds the App
&lt;/h2&gt;

&lt;p&gt;ToolJet MCP works through the whole application, so the data model, pages, components, queries, and the wiring between them land as one structured ToolJet application. That matters here because the handover flow depends on current state, movement history, photo storage, and role-gated correction, and the generated app sits on a runtime that carries data connections, workflows, and permissions where supported instead of handing you a codebase to operate yourself. The same structure lets the scan page, the equipment list, and the hidden item detail view stay in sync, and you can keep editing visually and drop into code where the case calls for it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The One Thing That Broke
&lt;/h2&gt;

&lt;p&gt;A printed QR scan sometimes opened the wrong item because the decoded value carried trailing whitespace, so exact matching failed. Trimming the scanned code fixed the lookup and the handover flow picked up the correct asset again on every scan.&lt;/p&gt;

&lt;h2&gt;
  
  
  Data Created
&lt;/h2&gt;

&lt;p&gt;The app ended up with two tables. &lt;code&gt;items&lt;/code&gt; stores every tracked asset, including its code, category, current holder, current condition, and expected return date, while &lt;code&gt;movements&lt;/code&gt; keeps the append-only log of issue, return, transfer, correction, notes, and photo URLs that drives the current state. The current holder and condition come from the latest movement instead of being overwritten in place, so the log stays authoritative.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Page&lt;/th&gt;
&lt;th&gt;Components&lt;/th&gt;
&lt;th&gt;What they cover&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Scan &amp;amp; Record&lt;/td&gt;
&lt;td&gt;26&lt;/td&gt;
&lt;td&gt;Scan/lookup, register-unmatched-item, and the issue/return/transfer flow with photo capture&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Equipment List&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;KPI dashboard, category chart, recent activity feed, searchable table, and overdue view&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Item Detail (hidden)&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;Full movement history with condition photos and an Asset-Manager-only correction flow&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  What Got Generated
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Result&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Pages&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ToolJet DB tables&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Queries&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Components&lt;/td&gt;
&lt;td&gt;63&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Code files to maintain&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Repair cycles&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Final validation&lt;/td&gt;
&lt;td&gt;0 errors&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Industries That Run This
&lt;/h2&gt;

&lt;p&gt;Commercial construction and equipment rental — any company that hands physical power tools, survey equipment, or site laptops between crews and needs an auditable record of who has what and in what condition, without relying on a paper sign-out sheet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who Gets Access To The Built App
&lt;/h2&gt;

&lt;p&gt;Operators can scan items, record issues/returns/transfers, and view full item history read-only. Asset Managers get everything Operators have, plus the ability to correct a mistaken movement record after the fact — enforced server-side on the correction query itself, not just hidden in the UI.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enterprise Features for Your Asset Handover App
&lt;/h2&gt;

&lt;p&gt;An asset handover app holds asset codes, holder names, and photo evidence. ToolJet covers that governance at the platform layer, so you configure it once instead of rebuilding it in every app.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SSO and SCIM:&lt;/strong&gt; sign in with &lt;a href="https://docs.tooljet.com/docs/user-management/sso/saml/setup/" rel="noopener noreferrer"&gt;SAML&lt;/a&gt;, OIDC or LDAP, and provision users automatically&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Role-based access control:&lt;/strong&gt; scope &lt;a href="https://docs.tooljet.com/docs/user-management/role-based-access/access-control/" rel="noopener noreferrer"&gt;permissions&lt;/a&gt; to the app, the data source, and each query&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audit logs:&lt;/strong&gt; track every login, edit, and approval decision for &lt;a href="https://docs.tooljet.com/docs/security/audit-logs/" rel="noopener noreferrer"&gt;compliance&lt;/a&gt; review&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Air-gapped deployment:&lt;/strong&gt; self-host on &lt;a href="https://docs.tooljet.com/docs/setup/docker/" rel="noopener noreferrer"&gt;Docker&lt;/a&gt; or Kubernetes so your data stays in your network&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multiplayer editing:&lt;/strong&gt; several builders work on the same app, with versioning and &lt;a href="https://docs.tooljet.com/docs/development-lifecycle/gitsync/overview/" rel="noopener noreferrer"&gt;Git sync&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ToolJet AI inside your own deployment:&lt;/strong&gt; run the AI features in your tenancy rather than a shared service&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Final Takeaways
&lt;/h2&gt;

&lt;p&gt;This build shows a tablet handover app that scans a code, exposes the current holder and condition, and records issue, return, transfer, and correction events against a log that stays authoritative. The point of the structured application model is that the agent hands back a real ToolJet app on a mature runtime, so you keep editing the same project instead of inheriting loose generated code. Visual editing, selective code, data connections, and permission rules stay in one place as requirements change, which is the part that matters after the first version ships.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cost and Speed by Model
&lt;/h2&gt;

&lt;p&gt;You can easily build a 4-page app with ToolJet MCP for as little as $0.17 with a lean model (Luna medium), or pay more for the latest flagship reasoning (Sol) if that's what you're after. The cost is your call, not a floor we set for you.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Credits&lt;/th&gt;
&lt;th&gt;Minutes&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Astra&lt;/td&gt;
&lt;td&gt;290 to 550&lt;/td&gt;
&lt;td&gt;13 to 16&lt;/td&gt;
&lt;td&gt;The most polished pages, when cost matters less&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sol (Recommended)&lt;/td&gt;
&lt;td&gt;300 to 650&lt;/td&gt;
&lt;td&gt;14 to 22&lt;/td&gt;
&lt;td&gt;The best balance of quality and cost for most apps&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Terra&lt;/td&gt;
&lt;td&gt;85 to 210&lt;/td&gt;
&lt;td&gt;5 to 12&lt;/td&gt;
&lt;td&gt;The fastest, and best kept to smaller apps&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Luna max&lt;/td&gt;
&lt;td&gt;35 to 55&lt;/td&gt;
&lt;td&gt;33 to 62&lt;/td&gt;
&lt;td&gt;The most complete Luna, and by far the slowest&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Luna high&lt;/td&gt;
&lt;td&gt;25 to 50&lt;/td&gt;
&lt;td&gt;22 to 41&lt;/td&gt;
&lt;td&gt;Mid-effort Luna, between medium and max&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Luna medium&lt;/td&gt;
&lt;td&gt;10 to 30&lt;/td&gt;
&lt;td&gt;14 to 20&lt;/td&gt;
&lt;td&gt;A quick first draft or a small tool&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Three to four builds per model across four-page apps. 1 credit = 1 cent. Credits and time are estimates only and will vary with the complexity of what you ask for. This measures cost and speed only, not how complete or polished the result is.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Even averaging across model tiers, ToolJet MCP can turn $10 into a dozen or more working 4-page apps.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try ToolJet MCP
&lt;/h2&gt;

&lt;p&gt;Build your own asset handover app, then request a &lt;a href="https://tooljet.com/schedule-demo" rel="noopener noreferrer"&gt;ToolJet demo&lt;/a&gt; for your equipment data.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQs
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What does build an asset handover app with ToolJet MCP create?
&lt;/h3&gt;

&lt;p&gt;It creates a structured ToolJet application for asset handovers, not a loose export. In this build, the scan flow, equipment list, and hidden item history page land with their data and query wiring intact so the app keeps working as one unit across review and correction.&lt;/p&gt;

&lt;h3&gt;
  
  
  How does the app handle an unknown QR code?
&lt;/h3&gt;

&lt;p&gt;A miss opens the register-item form on the same screen. You enter the asset name, category, and first condition, then continue straight into the handover step with a new code, without leaving the scan flow or losing the context of the match.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do you need to write code to reproduce the flow?
&lt;/h3&gt;

&lt;p&gt;No code is needed for the base flow. The prompt sets up the pages, tables, and actions, and the generated app still leaves room for code when a specific case needs it, such as a custom check or a specialized lookup rule.&lt;/p&gt;

&lt;h3&gt;
  
  
  How does this app use ToolJetDB and S3?
&lt;/h3&gt;

&lt;p&gt;ToolJetDB stores the tracked assets and the append-only movement log. S3 holds the return photos, and those URLs stay attached to the movement record so the history keeps the evidence with it while the scan flow reads the current state from the latest movement.&lt;/p&gt;

&lt;h3&gt;
  
  
  What happens to the app after the agent finishes?
&lt;/h3&gt;

&lt;p&gt;The finished app stays as a ToolJet project on the runtime, so you keep editing the same data model, pages, and permission rules instead of taking over a one-off generated artifact. That keeps the asset process in one place as the process changes.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do Operator and Asset Manager roles differ?
&lt;/h3&gt;

&lt;p&gt;Both groups can scan, record, and read history. Only Asset Managers can correct a mistaken movement record, and that restriction is enforced on the correction path itself, not just hidden in the interface, so the server-side rule matches the visible control.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can several teammates keep working on the same app?
&lt;/h3&gt;

&lt;p&gt;Yes. Different people can keep iterating on the same project, and the shared tables and screens keep the asset catalog, scan screen, and permission logic aligned as requirements change without splitting the handover process across separate copies.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>Build a Supply Chain Control Tower with ToolJet MCP</title>
      <dc:creator>Athulya R</dc:creator>
      <pubDate>Tue, 15 Sep 2026 15:10:31 +0000</pubDate>
      <link>https://dev.to/athulya_r/build-a-supply-chain-control-tower-with-tooljet-mcp-4olp</link>
      <guid>https://dev.to/athulya_r/build-a-supply-chain-control-tower-with-tooljet-mcp-4olp</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Build a supply chain control tower with ToolJet MCP when planners need one place to track exceptions, supplier drift, and stockout risk for a kitchen-appliance manufacturer. The app keeps open issues, supplier history, and inventory projections in one workflow so the team can decide what to escalate, what to close, and what to watch next. An agent generated a structured ToolJet application here, so the data, queries, and interface stay together as the team keeps running the control tower. The reader gets the page layout, the tables behind each view, and the prompt in this article to reproduce the build.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Fsupply-chain-control-tower-tooljet-mcp-app-5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Fsupply-chain-control-tower-tooljet-mcp-app-5.png" title="Supply Chain Control Tower built with ToolJet MCP: Exception Queue — severity-ranked queue with escalation flow, procurement approvals, and a live supplier scorecard" alt="Build a supply chain control tower with ToolJet MCP, the finished application: Exception Queue — severity-ranked queue with escalation flow, procurement approvals, and a live supplier scorecard" width="800" height="738"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Exception Queue — severity-ranked queue with escalation flow, procurement approvals, and a live supplier scorecard&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Fsupply-chain-control-tower-tooljet-mcp-app-2-3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Fsupply-chain-control-tower-tooljet-mcp-app-2-3.png" title="Supply Chain Control Tower built with ToolJet MCP: Supplier Scorecard — 6-month trend, sorted by suppliers declining fastest" alt="Build a supply chain control tower with ToolJet MCP, the finished application: Supplier Scorecard — 6-month trend, sorted by suppliers declining fastest" width="800" height="524"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Supplier Scorecard — 6-month trend, sorted by suppliers declining fastest&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Fsupply-chain-control-tower-tooljet-mcp-app-3-3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Fsupply-chain-control-tower-tooljet-mcp-app-3-3.png" title="Supply Chain Control Tower built with ToolJet MCP: Inventory vs Forecast — components flagged at risk of stockout before their next inbound shipment" alt="Build a supply chain control tower with ToolJet MCP, the finished application: Inventory vs Forecast — components flagged at risk of stockout before their next inbound shipment" width="800" height="389"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Inventory vs Forecast — components flagged at risk of stockout before their next inbound shipment&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What We're Building
&lt;/h2&gt;

&lt;p&gt;The first page is a triage desk, the second turns supplier drift into a rank order, and the third checks whether stock covers demand until the next shipment lands. A planner starts by reading the reason in each exception row, then edits owner and due date inline before closing the item or sending it to procurement through the modal. Selecting an escalation brings the supplier's scorecard into view, so the planner can compare the current case with trailing performance before approving or rejecting the handoff. The inventory page ends the loop by flagging any component whose coverage runs out before inbound supply arrives.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The queue is severity ranked, so the highest-risk exceptions stay at the top without depending on date order&lt;/li&gt;
&lt;li&gt;Owner and due date stay editable in place, which makes the queue work like live planner triage&lt;/li&gt;
&lt;li&gt;Escalations carry a note from planning into procurement, then write the outcome back to the source exception&lt;/li&gt;
&lt;li&gt;The selected supplier's scorecard appears next to the escalation, which gives procurement the recent history behind the case&lt;/li&gt;
&lt;li&gt;The inventory view compares stock with forecast demand and flags components that will run out before the next inbound shipment&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Build a Supply Chain Control Tower with ToolJet MCP for Exception Triage and Forecasts
&lt;/h2&gt;

&lt;p&gt;Want to build it yourself? Start with the &lt;a href="https://github.com/ToolJet/mcp-v2" rel="noopener noreferrer"&gt;ToolJet MCP repository&lt;/a&gt; for setup instructions, supported agents, and everything you need to follow along.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Consolidated Build Prompt
&lt;/h2&gt;

&lt;p&gt;The build took several passes, and the requirements are consolidated here into one prompt that could have been used from the start. You can feed the prompt in this article to the same workflow and recreate the application in a single shot.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Build a three-page supply chain control tower in ToolJet for a kitchen appliance manufacturer's planning team.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Keep the app dense and corporate, with muted blues and greys, clear hierarchy, and restrained spacing. The first page shows open exceptions sorted by severity, with the reason visible in each row, inline owner and due date edits, a close action, and a modal path to escalate a case to procurement. That same page also shows open escalations, and selecting one reveals the linked supplier's scorecard.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The second page aggregates trailing six-month supplier performance and ranks suppliers by who is deteriorating fastest, with a trend view for the selected supplier. The third page compares current stock with forecast demand for each component, calculates days of cover, and flags anything that will stock out before the next inbound shipment arrives.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Use the existing PostgreSQL datasource and read and write the current supply_chain_exceptions, exception_escalations, suppliers, supplier_performance_monthly, inventory_snapshot, component_forecast, inbound_shipments, and purchase_order_items tables. Keep the business rules intact: planners can edit and close exceptions and escalate to procurement, procurement managers can approve or reject escalations, plant managers can view everything without edit access, and approvals must write back to the source records.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  How ToolJet MCP Builds the App
&lt;/h2&gt;

&lt;p&gt;ToolJet MCP works through the whole application, so the data model, pages, components, queries, and the wiring between them land as one structured ToolJet application. That matters because enterprise app building is still data connectivity, workflows, permissions, deployment, and ongoing change, not just the visible screen, and the generated app sits on a runtime that carries those pieces where supported instead of handing you a codebase to operate yourself. You can still move from generation to visual editing and then into code when a page needs a special case.&lt;/p&gt;

&lt;h2&gt;
  
  
  Data Created
&lt;/h2&gt;

&lt;p&gt;The app ended up with seven tables in three groups. &lt;code&gt;supply_chain_exceptions&lt;/code&gt; holds the queue rows, &lt;code&gt;exception_escalations&lt;/code&gt; records planner-to-procurement handoffs, and &lt;code&gt;suppliers&lt;/code&gt; labels each record. &lt;code&gt;supplier_performance_monthly&lt;/code&gt; stores the trailing six-month history for the scorecard, while &lt;code&gt;inventory_snapshot&lt;/code&gt;, &lt;code&gt;component_forecast&lt;/code&gt;, and &lt;code&gt;inbound_shipments&lt;/code&gt; drive the coverage check and the next-arrival flag.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Page&lt;/th&gt;
&lt;th&gt;Components&lt;/th&gt;
&lt;th&gt;What they cover&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Exception Queue&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;Severity-ranked exceptions with escalation flow and procurement approvals&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Supplier Scorecard&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;6-month supplier performance sorted by worsening trend, with slippage chart&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Inventory vs Forecast&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Days of cover and stockout risk per component&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  What Got Generated
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Result&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Pages&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ToolJet DB tables&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Queries&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Components&lt;/td&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Code files to maintain&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Repair cycles&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Industries That Run This
&lt;/h2&gt;

&lt;p&gt;Manufacturers running multi-tier supplier networks — electronics, automotive, appliances, industrial equipment — where a single late or short delivery can stall a production line. Also relevant to procurement and supply-chain teams at retailers and distributors coordinating inbound logistics across many vendors.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who Gets Access To The Built App
&lt;/h2&gt;

&lt;p&gt;Supply planners own and close exceptions, edit the owner and due date, and escalate to procurement. Procurement managers see a separate escalation queue with the supplier's live scorecard and can approve or reject, writing the outcome back onto the original exception. Plant managers can view all three pages but have no edit or action controls — enforced today through an in-app role selector, since the workspace had no dedicated ToolJet groups yet to bind native page and component permissions to.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enterprise Features for Your Supply Chain Control Tower
&lt;/h2&gt;

&lt;p&gt;This app handles supplier contact details, escalation notes, and inventory positions. ToolJet covers that governance at the platform layer, so you configure it once instead of rebuilding it in every app.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SSO and SCIM:&lt;/strong&gt; sign in with &lt;a href="https://docs.tooljet.com/docs/user-management/sso/saml/setup/" rel="noopener noreferrer"&gt;SAML&lt;/a&gt;, OIDC or LDAP, and provision users automatically&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Role-based access control:&lt;/strong&gt; scope &lt;a href="https://docs.tooljet.com/docs/user-management/role-based-access/access-control/" rel="noopener noreferrer"&gt;permissions&lt;/a&gt; to the app, the data source, and each query&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audit logs:&lt;/strong&gt; track every login, edit, and approval decision for &lt;a href="https://docs.tooljet.com/docs/security/audit-logs/" rel="noopener noreferrer"&gt;compliance&lt;/a&gt; review&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Air-gapped deployment:&lt;/strong&gt; self-host on &lt;a href="https://docs.tooljet.com/docs/setup/docker/" rel="noopener noreferrer"&gt;Docker&lt;/a&gt; or Kubernetes so your data stays in your network&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multiplayer editing:&lt;/strong&gt; several builders work on the same app, with versioning and &lt;a href="https://docs.tooljet.com/docs/development-lifecycle/gitsync/overview/" rel="noopener noreferrer"&gt;Git sync&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ToolJet AI inside your own deployment:&lt;/strong&gt; run the AI features in your tenancy rather than a shared service&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Final Takeaways
&lt;/h2&gt;

&lt;p&gt;This build shows a control tower that keeps exception triage, escalation, supplier drift, and inventory risk in one set of pages. Once the agent finishes, you keep a structured ToolJet application rather than a screen and a cleanup job, so the team continues working in the same data model and action flow. That is where the platform matters: visual editing handles the common changes, code is there for special cases, and the runtime keeps the data and workflow pieces together where supported as the process changes. The result is an app you keep shaping, not a throwaway artifact.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cost and Speed by Model
&lt;/h2&gt;

&lt;p&gt;You can easily build a 4-page app with ToolJet MCP for as little as $0.17 with a lean model (Luna medium), or pay more for the latest flagship reasoning (Sol) if that's what you're after. The cost is your call, not a floor we set for you.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Credits&lt;/th&gt;
&lt;th&gt;Minutes&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Astra&lt;/td&gt;
&lt;td&gt;290 to 550&lt;/td&gt;
&lt;td&gt;13 to 16&lt;/td&gt;
&lt;td&gt;The most polished pages, when cost matters less&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sol (Recommended)&lt;/td&gt;
&lt;td&gt;300 to 650&lt;/td&gt;
&lt;td&gt;14 to 22&lt;/td&gt;
&lt;td&gt;The best balance of quality and cost for most apps&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Terra&lt;/td&gt;
&lt;td&gt;85 to 210&lt;/td&gt;
&lt;td&gt;5 to 12&lt;/td&gt;
&lt;td&gt;The fastest, and best kept to smaller apps&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Luna max&lt;/td&gt;
&lt;td&gt;35 to 55&lt;/td&gt;
&lt;td&gt;33 to 62&lt;/td&gt;
&lt;td&gt;The most complete Luna, and by far the slowest&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Luna high&lt;/td&gt;
&lt;td&gt;25 to 50&lt;/td&gt;
&lt;td&gt;22 to 41&lt;/td&gt;
&lt;td&gt;Mid-effort Luna, between medium and max&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Luna medium&lt;/td&gt;
&lt;td&gt;10 to 30&lt;/td&gt;
&lt;td&gt;14 to 20&lt;/td&gt;
&lt;td&gt;A quick first draft or a small tool&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Three to four builds per model across four-page apps. 1 credit = 1 cent. Credits and time are estimates only and will vary with the complexity of what you ask for. This measures cost and speed only, not how complete or polished the result is.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Even averaging across model tiers, ToolJet MCP can turn $10 into a dozen or more working 4-page apps.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try ToolJet MCP
&lt;/h2&gt;

&lt;p&gt;Build your own supply chain control tower for planner triage, then request a &lt;a href="https://tooljet.com/schedule-demo" rel="noopener noreferrer"&gt;ToolJet demo&lt;/a&gt; to map it onto your data.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQs
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What does ToolJet MCP do for a supply chain control tower?
&lt;/h3&gt;

&lt;p&gt;In this tutorial, build a supply chain control tower with ToolJet MCP means the written spec drives the pages, queries, and actions together. The result stays inside ToolJet as a structured app instead of a loose screen.&lt;/p&gt;

&lt;h3&gt;
  
  
  What do planners do in the exception queue?
&lt;/h3&gt;

&lt;p&gt;Planners sort by severity, read the reason in each row, adjust owner and due date inline, and either close the case or escalate it to procurement. The queue behaves like a live worklist, not a static report.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do I reproduce this app?
&lt;/h3&gt;

&lt;p&gt;Use the prompt in this article with the existing PostgreSQL tables and let the build assemble the three pages from there. The prompt covers the exception queue, the supplier scorecard, the inventory check, and the role rules.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do I need to write code?
&lt;/h3&gt;

&lt;p&gt;No. The agent creates the first version, and ToolJet lets you finish the details visually when the layout or interaction needs a tweak. Code stays available for edge cases that need it.&lt;/p&gt;

&lt;h3&gt;
  
  
  What happens after the agent finishes?
&lt;/h3&gt;

&lt;p&gt;The app stays as a structured ToolJet application, so the data model, queries, and actions remain connected on the runtime. You keep editing visually, and you can drop into code when a case needs a special rule.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I use my existing PostgreSQL data?
&lt;/h3&gt;

&lt;p&gt;Yes. This build reads from the live supply chain tables and writes back to the same records, so the control tower reflects current operational data. That keeps the app tied to the source system instead of a sample dataset.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can different roles use the same app?
&lt;/h3&gt;

&lt;p&gt;Yes, planners, procurement managers, and plant managers can share the same control tower while seeing different actions. The role selector keeps the pages visible and hides the buttons each role should not use.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>Build a Geofence Compliance Register with ToolJet MCP</title>
      <dc:creator>Athulya R</dc:creator>
      <pubDate>Fri, 11 Sep 2026 12:22:23 +0000</pubDate>
      <link>https://dev.to/athulya_r/build-a-geofence-compliance-register-with-tooljet-mcp-1l46</link>
      <guid>https://dev.to/athulya_r/build-a-geofence-compliance-register-with-tooljet-mcp-1l46</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;You build a geofence compliance register with ToolJet MCP when a bulk-haulage compliance team needs to prove tankers stayed inside insurer-agreed corridors. The app gives officers a permanent record of corridor checks, breach decisions, and the evidence they need to keep the fleet moving. This article shows the finished app, gives you the prompt, and shows how an agent generated a structured ToolJet application, data, queries and interface together, not a screen or a code drop. You also see how depot-scoped views and the data model keep the evidence tied to the fleet.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Fgeofence-compliance-register-screenshot-6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Fgeofence-compliance-register-screenshot-6.png" title="Geofence Compliance Register built with ToolJet MCP: Breach register with map, tolerance filtering, and grouped repeat departures" alt="Build a geofence compliance register with ToolJet MCP, the finished application: Breach register with map, tolerance filtering, and grouped repeat departures" width="800" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Breach register with map, tolerance filtering, and grouped repeat departures&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You can easily build a 4-page app with ToolJet MCP for as little as $0.17 with a lean model (Luna medium), or pay more for the latest flagship reasoning (Sol) if that's what you're after. The cost is your call, not a floor we set for you.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Ftooljet-mcp-model-cost-comparison-7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Ftooljet-mcp-model-cost-comparison-7.png" title="ToolJet MCP: cost and speed by model tier" alt="Cost and build time for a four-page internal app across model tiers" width="800" height="653"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What We're Building
&lt;/h2&gt;

&lt;p&gt;The header starts with a small-caps file label, a serif title, a short subtitle, and a viewing-as control that changes the scope for demo work. The left side shows the relevant corridor outline and tanker markers, while the right side shows the breach register with status filters and collapsed same-day repeats. Opening a row reveals the vehicle, driver, zone, exit time, cleared thresholds, and the decision state for the current role. Below the split, you adjust the tolerance that hides GPS noise, then export a month of evidence as CSV. A footer note keeps the retention rule in view.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Live corridor map with visible tanker markers&lt;/li&gt;
&lt;li&gt;Status-filterable breach register with grouped same-day entries&lt;/li&gt;
&lt;li&gt;Decision modal with officer sign-off and read-only review states&lt;/li&gt;
&lt;li&gt;Editable tolerance rule that hides GPS noise&lt;/li&gt;
&lt;li&gt;Month-scoped CSV evidence-pack export&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Build a Geofence Compliance Register with ToolJet MCP on one page
&lt;/h2&gt;

&lt;p&gt;Want to build it yourself? Start with the &lt;a href="https://github.com/ToolJet/mcp-v2" rel="noopener noreferrer"&gt;ToolJet MCP repository&lt;/a&gt; for setup instructions, supported agents, and everything you need to follow along.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Consolidated Build Prompt
&lt;/h2&gt;

&lt;p&gt;The build took several passes, and the requirements are now consolidated into one prompt that could have been used from the start. Use the prompt in this article to recreate the app in one shot, then refine the result in ToolJet as the compliance team changes its rules.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Build a polished internal app called Geofence Compliance Register in ToolJet.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Keep it as a single-page compliance record with a header, a live corridor map on the left, a breach register on the right, a tolerance settings row, and a CSV export row. The header should include a small-caps file-id label, the serif page title, a short subtitle, and a viewing-as control that switches between compliance officer and depot manager views.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Use an off-white audit-file layout with a serif title, a monospace file-id label, compact cards, clear hierarchy, and one restrained accent colour. Show authorised zones and live fleet position on the map, with visible vehicles marked when they have an open breach.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The breach register should support status filtering and should collapse repeated breaches for the same vehicle, same zone, and same day into one row with a departure picker that defaults to the latest entry. Opening a row should show vehicle, driver, zone, exit time, the thresholds it cleared, and the current review state.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Use the six tables in the prompt: depots, zones, vehicles, breaches, app_users, and settings. Model breach tolerance as editable noise filtering, and only show open breaches when both distance and time outside the corridor exceed the saved thresholds. Officers can make the final decision, depot managers see only their own depot, and every decision is retained. Add a CSV evidence-pack export for a chosen month, and keep the footer note that entries are retained and cannot be deleted.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  How ToolJet MCP Builds the App
&lt;/h2&gt;

&lt;p&gt;ToolJet MCP works through the whole application, not just the screen, so the data model, pages, components, queries, and the wiring between them land as one structured ToolJet application. Enterprise app building does not stop at the interface, because data connectivity, access control, deployment choices, and ongoing change are part of the job, and the generated app sits on a runtime that carries those where supported instead of handing you a codebase to operate yourself. The path stays open, so you can keep the app in visual editing and drop into code where a specific rule or interaction needs it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The One Thing That Broke
&lt;/h2&gt;

&lt;p&gt;The breach decision save button looked broken because clicks did nothing and the modal stayed open. The cause was a leftover setting that disabled the save action, and once you removed it the decision persisted in the database and the round trip worked.&lt;/p&gt;

&lt;h2&gt;
  
  
  Data Created
&lt;/h2&gt;

&lt;p&gt;The app ended up with six tables. The operational core is &lt;code&gt;depots&lt;/code&gt;, &lt;code&gt;zones&lt;/code&gt;, and &lt;code&gt;vehicles&lt;/code&gt;, which define where the fleet belongs and what the map can show. &lt;code&gt;breaches&lt;/code&gt;, &lt;code&gt;app_users&lt;/code&gt;, and &lt;code&gt;settings&lt;/code&gt; keep the compliance register, the role-scoped access map, and the tolerance rule that hides GPS noise.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Page&lt;/th&gt;
&lt;th&gt;Components&lt;/th&gt;
&lt;th&gt;What they cover&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Home&lt;/td&gt;
&lt;td&gt;47&lt;/td&gt;
&lt;td&gt;Map + corridor overlay, filterable/grouped breach register, breach detail &amp;amp; decision modal, tolerance settings, CSV export&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  What Got Generated
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Result&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Pages&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ToolJet DB tables&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Queries&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Components&lt;/td&gt;
&lt;td&gt;47&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Code files to maintain&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Repair cycles&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Final validation&lt;/td&gt;
&lt;td&gt;0 errors&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Industries That Run This
&lt;/h2&gt;

&lt;p&gt;Bulk trucking and hazmat haulage fleets, oil &amp;amp; gas logistics operators, chemical and fuel distribution carriers, and any insured trucking or delivery fleet operating under a geofence or corridor-compliance clause - anywhere an insurer requires documented proof that vehicles stayed within pre-agreed routes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who Gets Access To The Built App
&lt;/h2&gt;

&lt;p&gt;Compliance officers get full access: they see every depot's vehicles and breach history, can adjust the breach-tolerance thresholds, export the CSV evidence pack, and open and decide any breach. Depot managers get read-only access scoped to their own depot only - the underlying data query itself returns just their depot's vehicles and breaches, and the decision controls are not present in their view at all.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enterprise Features for Your Geofence Compliance Register
&lt;/h2&gt;

&lt;p&gt;Tanker positions, breach notes, and officer sign-offs are sensitive here. ToolJet covers that governance at the platform layer, so you configure it once instead of rebuilding it in every app.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SSO and SCIM:&lt;/strong&gt; sign in with &lt;a href="https://docs.tooljet.com/docs/user-management/sso/saml/setup/" rel="noopener noreferrer"&gt;SAML&lt;/a&gt;, OIDC or LDAP, and provision users automatically&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Role-based access control:&lt;/strong&gt; scope &lt;a href="https://docs.tooljet.com/docs/user-management/role-based-access/access-control/" rel="noopener noreferrer"&gt;permissions&lt;/a&gt; to the app, the data source, and each query&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audit logs:&lt;/strong&gt; track every login, edit, and approval decision for &lt;a href="https://docs.tooljet.com/docs/security/audit-logs/" rel="noopener noreferrer"&gt;compliance&lt;/a&gt; review&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Air-gapped deployment:&lt;/strong&gt; self-host on &lt;a href="https://docs.tooljet.com/docs/setup/docker/" rel="noopener noreferrer"&gt;Docker&lt;/a&gt; or Kubernetes so your data stays in your network&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multiplayer editing:&lt;/strong&gt; several builders work on the same app, with versioning and &lt;a href="https://docs.tooljet.com/docs/development-lifecycle/gitsync/overview/" rel="noopener noreferrer"&gt;Git sync&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ToolJet AI inside your own deployment:&lt;/strong&gt; run the AI features in your tenancy rather than a shared service&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Final Takeaways
&lt;/h2&gt;

&lt;p&gt;This build shows a geofence compliance register that combines a live corridor map, a breach register, role-scoped views, tolerance settings, and a CSV evidence pack. After generation, the app is a structured ToolJet application on a runtime you keep editing, so the team is not left with a pile of code to reconcile by hand. That matters because you can move between visual edits and code when a rule gets sharper, while the data model and access scoping stay part of the same app. The result is a business record that keeps changing with the operation instead of freezing at the moment it was generated.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Three to four builds per model across four-page apps. 1 credit = 1 cent. Credits and time are estimates only and will vary with the complexity of what you ask for. This measures cost and speed only, not how complete or polished the result is.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Even averaging across model tiers, ToolJet MCP can turn $10 into a dozen or more working 4-page apps.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try ToolJet MCP
&lt;/h2&gt;

&lt;p&gt;Build a geofence compliance register with ToolJet MCP for your depot data, then request a &lt;a href="https://tooljet.com/schedule-demo" rel="noopener noreferrer"&gt;ToolJet demo&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQs
&lt;/h2&gt;

&lt;h3&gt;
  
  
  How do you build a geofence compliance register with ToolJet MCP from the prompt?
&lt;/h3&gt;

&lt;p&gt;You use the prompt in this article as the single spec, then let ToolJet MCP create the app structure, data model, and page wiring in ToolJet. The result is a compliance register you can keep refining instead of a throwaway draft.&lt;/p&gt;

&lt;h3&gt;
  
  
  What does the register show on screen?
&lt;/h3&gt;

&lt;p&gt;It shows authorised corridors, visible tanker markers, breach rows, and the current role's review state for each record. The detail view also carries the exit time, the thresholds cleared, and the note that explains the decision.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can you edit the register after the first build?
&lt;/h3&gt;

&lt;p&gt;Yes, the app stays editable in ToolJet, so you can adjust the layout, the tolerance rule, or the scoping logic without starting over. The point is to keep the business record under active maintenance, not freeze it after generation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do you need custom code for the sign-off flow?
&lt;/h3&gt;

&lt;p&gt;The sign-off flow is built as part of the application, with a record view, a decision state, and a save action that writes back to the breach row. You only drop into code when a specific rule or interaction needs it.&lt;/p&gt;

&lt;h3&gt;
  
  
  What happens to the app after the agent finishes?
&lt;/h3&gt;

&lt;p&gt;The app stays inside ToolJet as a real application, so the runtime keeps the data connections, role rules, and ongoing edits together. You are not left with a codebase to deploy and maintain separately.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can the register use live fleet data?
&lt;/h3&gt;

&lt;p&gt;Yes, the same model can sit on live fleet records while depot managers see only their own scope and officers see the full register. That keeps the map, the breach list, and the export aligned with one source of data.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can several people work on the same app?
&lt;/h3&gt;

&lt;p&gt;Yes, the same app can serve compliance officers and depot managers through role-scoped views, while the saved rules and records remain in one place. That makes shared review possible without duplicating the application.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Build a Shipment Control Tower with ToolJet MCP</title>
      <dc:creator>Athulya R</dc:creator>
      <pubDate>Thu, 10 Sep 2026 14:33:59 +0000</pubDate>
      <link>https://dev.to/athulya_r/build-a-shipment-control-tower-with-tooljet-mcp-1a8j</link>
      <guid>https://dev.to/athulya_r/build-a-shipment-control-tower-with-tooljet-mcp-1a8j</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;When you build a shipment control tower with ToolJet MCP, freight operations teams get one place to watch shipments, spot delays, and log recovery actions as conditions change, and the result is a structured ToolJet application with data, queries, and interface together, which the team keeps running instead of a screen or a code drop. The app in this article sits at the center of ocean and air freight moving across several lanes, carriers, and customers. You get the live map, the exceptions queue, and the weekly summary, plus the data model and recovery flow that connect them. The article shows how the same app holds the live view, the exception log, and the weekly performance readout in one place.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Fbuild-shipment-control-tower-tooljet-mcp-app-10.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Fbuild-shipment-control-tower-tooljet-mcp-app-10.png" title="Shipment Control Tower built with ToolJet MCP: Live Map — every shipment plotted and colour-coded by delay" alt="Build a shipment control tower with ToolJet MCP, the finished application: Live Map — every shipment plotted and colour-coded by delay" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Live Map — every shipment plotted and colour-coded by delay&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Fbuild-shipment-control-tower-tooljet-mcp-app-2-6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Fbuild-shipment-control-tower-tooljet-mcp-app-2-6.png" title="Shipment Control Tower built with ToolJet MCP: Exceptions — at-risk shipments sorted by delay severity" alt="Build a shipment control tower with ToolJet MCP, the finished application: Exceptions — at-risk shipments sorted by delay severity" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Exceptions — at-risk shipments sorted by delay severity&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Fbuild-shipment-control-tower-tooljet-mcp-app-3-6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Fbuild-shipment-control-tower-tooljet-mcp-app-3-6.png" title="Shipment Control Tower built with ToolJet MCP: Weekly Summary — on-time performance by lane and carrier" alt="Build a shipment control tower with ToolJet MCP, the finished application: Weekly Summary — on-time performance by lane and carrier" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Weekly Summary — on-time performance by lane and carrier&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You can easily build a 4-page app with ToolJet MCP for as little as $0.17 with a lean model (Luna medium), or pay more for the latest flagship reasoning (Sol) if that's what you're after. The cost is your call, not a floor we set for you.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Ftooljet-mcp-model-cost-comparison-1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Ftooljet-mcp-model-cost-comparison-1.png" title="ToolJet MCP: cost and speed by model tier" alt="Cost and build time for a four-page internal app across model tiers" width="800" height="653"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What We're Building
&lt;/h2&gt;

&lt;p&gt;The first page centers a live map, with lane, carrier, and customer filters pinned above it. Each shipment marker changes color with delay severity, and clicking a marker opens a detail panel with lane, carrier, ETA, milestone, and delay. The exceptions page shows only shipments that need attention, so planners work from a queue instead of scanning the whole network. From that page, a planner opens one record, writes a recovery action, and sees the note appear in the history list for that shipment with name and timestamp. The weekly summary pairs KPI tiles with lane and carrier charts, while the dark canvas, tight spacing, and large numbers keep the page readable from a distance. The map stays the focus, but the layout leaves enough room for the operational context around it, including the markers, the summary, and the current exception state.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Live map filters narrow shipments by lane, carrier, and customer&lt;/li&gt;
&lt;li&gt;Marker colour shows delay severity and the detail panel shows the shipment context&lt;/li&gt;
&lt;li&gt;Exceptions are a working queue for at-risk shipments, not a separate report&lt;/li&gt;
&lt;li&gt;Recovery actions are logged with author and timestamp for each shipment&lt;/li&gt;
&lt;li&gt;Weekly summary charts compare on-time performance by lane and carrier&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Build a Shipment Control Tower with ToolJet MCP and Tune the Pages
&lt;/h2&gt;

&lt;p&gt;Want to build it yourself? Start with the &lt;a href="https://github.com/ToolJet/mcp-v2" rel="noopener noreferrer"&gt;ToolJet MCP repository&lt;/a&gt; for setup instructions, supported agents, and everything you need to follow along.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Consolidated Build Prompt
&lt;/h2&gt;

&lt;p&gt;The build took several passes, and the requirements have been consolidated into one prompt that you could have used from the start. Use the prompt in this article to reproduce the same application in one shot.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Build a 3-page dark command-centre ToolJet app called "Shipment Control Tower" for a freight forwarding company's operations team, moving ocean and air cargo between North America, Europe, and Southeast Asia.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Data model (ToolJet DB): - shipments: shipment_ref (unique), mode, lane, carrier, customer, origin, destination, latitude/longitude (current position), scheduled_arrival, estimated_arrival, delay_hours, risk_status, milestone, updated_at, week_label, on_time. - recovery_actions: shipment_ref, action_text, owner_email, owner_name, created_at. Seed shipments with a realistic spread across all combinations of lane (NA→Europe, Europe→NA, SEA→NA, NA→SEA, Europe→SEA, SEA→Europe), carrier (Maersk, MSC, CMA CGM, Lufthansa Cargo, Singapore Airlines Cargo, Kuehne+Nagel Air), and customer (Apex Retail, Nordic Machines, BrightHome, Vela Pharma, Orion Auto, Vertex Electronics), with most shipments on time and a meaningful minority at risk across Watch/At risk/Critical severity.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Page 1 — Live Map: a live map of every shipment, color-coded by how late it is, with filters for lane, carrier, and customer above it. The map must stay smooth with tens of thousands of points (cluster rather than render one DOM element per point). Clicking a shipment shows its full detail (lane, carrier, ETA, milestone, delay).&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Page 2 — Exceptions: a list of only the shipments currently at risk (delay_hours &amp;gt; 0). A planner can open a shipment and write down what they're doing about it (a free-text recovery action), which is logged with their name and timestamp and shown in a history list for that shipment. Only regional planners and the operations manager may log recovery actions; the customer success team can see everything but change nothing.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Page 3 — Weekly Summary: a simple weekly summary of on-time performance by lane and by carrier, plus headline KPIs (network on-time %, shipment count, late count, average delay).&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Design: dark command-centre pattern — near-black background (#070B10), one orange accent colour (#F97316) used for alerts and the active/critical states, generous spacing, and KPI numbers large enough to read from across a room.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  How ToolJet MCP Builds the App
&lt;/h2&gt;

&lt;p&gt;MCP works through the whole application, not the screen: the shipment data model, the pages, the components, the queries, and the wiring between them land as one structured ToolJet application. Enterprise app building does not end at the interface, because data connectivity, workflows, permissions, deployment, and ongoing change are the rest of the job, and the generated app sits on a runtime that carries those where supported instead of handing the team a codebase to operate themselves. The path stays open, so you can move from AI generation to visual editing, then drop into code when a rule or a data shape needs it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The One Thing That Broke
&lt;/h2&gt;

&lt;p&gt;A reseed attempt made the shipments table look stuck, but the cause was the protected write path, which refused mutation during test runs, and the browser fallback hit sandbox permissions. The fix was to keep the seeded data and continue through the editor flow the runtime accepted.&lt;/p&gt;

&lt;h2&gt;
  
  
  Data Created
&lt;/h2&gt;

&lt;p&gt;The app ended up with three tables. &lt;code&gt;shipments&lt;/code&gt; stores the core shipment record and its live position, &lt;code&gt;recovery_actions&lt;/code&gt; logs each planner follow-up with author and time, and &lt;code&gt;milestone_events&lt;/code&gt; keeps the per-shipment timeline used by the detail panel.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Page&lt;/th&gt;
&lt;th&gt;Components&lt;/th&gt;
&lt;th&gt;What they cover&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Live Map&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Live route map, KPI tiles, and lane/carrier/customer filters&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Exceptions&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;At-risk shipments table, recovery-action modal and history&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Weekly Summary&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;KPI tiles and four on-time performance charts&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  What Got Generated
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Result&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Pages&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ToolJet DB tables&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Queries&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Components&lt;/td&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Code files to maintain&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Repair cycles&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Fshipment-control-tower-components-inspector-12.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Fshipment-control-tower-components-inspector-12.png" title="Shipment Control Tower built with ToolJet MCP: components" alt="Shipment Control Tower component tree generated by ToolJet MCP" width="800" height="500"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;The components ToolJet MCP created, in the ToolJet inspector&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Industries That Run This
&lt;/h2&gt;

&lt;p&gt;Freight forwarding, 3PL and 4PL logistics, ocean and air carriers, port operators, retail and CPG supply chain, automotive inbound logistics.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who Gets Access To The Built App
&lt;/h2&gt;

&lt;p&gt;Regional planners and the operations manager can log recovery actions on at-risk shipments; the customer success team gets read-only access to the same live map, exceptions queue, and weekly summary.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enterprise Features for Your Shipment Control Tower
&lt;/h2&gt;

&lt;p&gt;Shipment references, customer details, and recovery actions sit in the app. ToolJet covers that governance at the platform layer, so you configure it once instead of rebuilding it in every app.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SSO and SCIM:&lt;/strong&gt; sign in with &lt;a href="https://docs.tooljet.com/docs/user-management/sso/saml/setup/" rel="noopener noreferrer"&gt;SAML&lt;/a&gt;, OIDC or LDAP, and provision users automatically&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Role-based access control:&lt;/strong&gt; scope &lt;a href="https://docs.tooljet.com/docs/user-management/role-based-access/access-control/" rel="noopener noreferrer"&gt;permissions&lt;/a&gt; to the app, the data source, and each query&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audit logs:&lt;/strong&gt; track every login, edit, and approval decision for &lt;a href="https://docs.tooljet.com/docs/security/audit-logs/" rel="noopener noreferrer"&gt;compliance&lt;/a&gt; review&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Air-gapped deployment:&lt;/strong&gt; self-host on &lt;a href="https://docs.tooljet.com/docs/setup/docker/" rel="noopener noreferrer"&gt;Docker&lt;/a&gt; or Kubernetes so your data stays in your network&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multiplayer editing:&lt;/strong&gt; several builders work on the same app, with versioning and &lt;a href="https://docs.tooljet.com/docs/development-lifecycle/gitsync/overview/" rel="noopener noreferrer"&gt;Git sync&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ToolJet AI inside your own deployment:&lt;/strong&gt; run the AI features in your tenancy rather than a shared service&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Final Takeaways
&lt;/h2&gt;

&lt;p&gt;This build shows that a single prompt can produce a dark operations console with a live map, an exceptions queue, and a weekly summary that all stay tied to the same shipment records. The useful part is the structured application underneath, because the team keeps editing the app after generation instead of inheriting generated code and owning every downstream change alone. Visual editing covers routine layout changes, code gives you escape hatches for custom rules, and the runtime carries the data model, workflows, access control, and auditing where supported, which is how the app stays part of the platform over time. That is the trade-off this article demonstrates, and it is the reason the generated app stays useful after the prompt is done.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Three to four builds per model across four-page apps. 1 credit = 1 cent. Credits and time are estimates only and will vary with the complexity of what you ask for cost and speed only, not a measure of how complete or polished the result is.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Even averaging across model tiers, ToolJet MCP can turn $10 into a dozen or more working 4-page apps.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try ToolJet MCP
&lt;/h2&gt;

&lt;p&gt;Build your own shipment control tower with your freight data, then request a &lt;a href="https://tooljet.com/schedule-demo" rel="noopener noreferrer"&gt;ToolJet demo&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQs
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What does ToolJet MCP build for this shipment control tower?
&lt;/h3&gt;

&lt;p&gt;If you build a shipment control tower with ToolJet MCP, the result is the application structure, not a mockup. In this app, the map, the exceptions queue, and the weekly summary all read from the same shipment records and recovery history, so the planner sees one operating picture instead of separate screens.&lt;/p&gt;

&lt;h3&gt;
  
  
  What problem does this shipment control tower solve?
&lt;/h3&gt;

&lt;p&gt;It gives planners one working surface for delays, exceptions, and weekly performance checks. The same app shows what is moving, what is late, and what action has already been logged for a shipment that needs attention, so the team does not have to cross-check separate reports.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do I rebuild this app with my own freight data?
&lt;/h3&gt;

&lt;p&gt;Start with the prompt in this article and map your own freight fields onto the same three tables. Keep the lane, carrier, customer, delay, and recovery-action concepts aligned so the pages stay in sync when the data changes, and use the same prompt as the starting point for your own network.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do I need to write code to build this app?
&lt;/h3&gt;

&lt;p&gt;You can generate the first version without writing code, then use code only when a rule or data shape needs a custom touch. The visual editor still handles routine changes after generation, which keeps day-to-day updates in one place and avoids scattering small edits across the build.&lt;/p&gt;

&lt;h3&gt;
  
  
  What happens to the app after the agent finishes?
&lt;/h3&gt;

&lt;p&gt;The app stays in ToolJet as a structured application on the runtime, so your team keeps editing pages, data connections, and workflows in place. That matters when requirements shift, because the app evolves instead of being thrown over the wall as a codebase.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I connect existing shipment data sources?
&lt;/h3&gt;

&lt;p&gt;Yes, if the source can supply the route, delay, and recovery fields the app needs. This tutorial uses ToolJet DB, but the same shape can map to another connected source with the same structure and update flow.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can several people work on the same app at once?
&lt;/h3&gt;

&lt;p&gt;Yes, different people can hold different roles while working on the same application. One person can tune the map while another reviews exceptions without changing the same part of the app, which keeps the build moving without overlap.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>Build a Fleet Operations Dashboard with ToolJet MCP</title>
      <dc:creator>Athulya R</dc:creator>
      <pubDate>Wed, 09 Sep 2026 14:18:12 +0000</pubDate>
      <link>https://dev.to/tooljet/build-a-fleet-operations-dashboard-with-tooljet-mcp-4f6c</link>
      <guid>https://dev.to/tooljet/build-a-fleet-operations-dashboard-with-tooljet-mcp-4f6c</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;You build a fleet operations dashboard with ToolJet MCP for depot supervisors and fleet managers who need live answers on electric van performance without waiting for an analyst. An agent generated the app, and the result is a structured ToolJet application, with data, queries and interface working together, not a screen or a code drop. The app gives the team one place to answer operational questions that would otherwise need manual slicing of telemetry and master data. The rest of this tutorial shows the finished dashboard and the prompt in this article so you can reproduce the same internal app on your own fleet data.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgjk5crc5gmrw7avc9ibd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgjk5crc5gmrw7avc9ibd.png" title="Fleet Operations Dashboard built with ToolJet MCP: fleet metrics 1 home" alt="Build a fleet operations dashboard with ToolJet MCP, the finished application: fleet metrics 1 home" width="800" height="745"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;fleet metrics 1 home&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7mbn1buurzhtu29hux2a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7mbn1buurzhtu29hux2a.png" title="Fleet Operations Dashboard built with ToolJet MCP: fleet metrics 2 vehicle detail" alt="Build a fleet operations dashboard with ToolJet MCP, the finished application: fleet metrics 2 vehicle detail" width="800" height="688"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;fleet metrics 2 vehicle detail&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What We're Building
&lt;/h2&gt;

&lt;p&gt;The first page is an exploration surface, with metric, breakdown, depot and period controls driving KPI tiles, charts and a sortable table. A saved-view panel sits underneath, so the fleet director can store one combination for the rest of the team. The second page narrows to one van, with a search picker, a plain-English summary, an identity card, a trend chart, a peer comparison gauge, maintenance context and a table of daily readings. Each block answers a different operational question, and the layout keeps the comparison view and the vehicle view close enough to move between them without leaving the app.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Two pages, fleet comparison and single-vehicle detail&lt;/li&gt;
&lt;li&gt;Metric, breakdown, depot and period controls&lt;/li&gt;
&lt;li&gt;Shared saved views for the fleet director and team&lt;/li&gt;
&lt;li&gt;Comparison against fleet and depot averages&lt;/li&gt;
&lt;li&gt;Derived exceptions, maintenance context and CSV exports&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Build a Fleet Operations Dashboard with ToolJet MCP for Telemetry Review
&lt;/h2&gt;

&lt;p&gt;Want to build it yourself? Start with the &lt;a href="https://github.com/ToolJet/mcp-v2" rel="noopener noreferrer"&gt;ToolJet MCP repository&lt;/a&gt; for setup instructions, supported agents, and everything you need to follow along.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Consolidated Build Prompt
&lt;/h2&gt;

&lt;p&gt;The real build took several passes, and the requirements are consolidated into one prompt that could have been used from the start. You can use the prompt in this article to reproduce the same app in one shot.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Build a two-page self-serve ToolJet app called Fleet Operations Dashboard for a fleet operations team running electric delivery vans across multiple depots.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Page 1, Fleet metrics, lets supervisors explore telemetry by metric, depot, model, driver or week, compare against fleet and depot averages, save shared views, and review charts, KPI tiles and a breakdown table. Page 2, Vehicle detail, lets a user pick one van, read a plain-English summary, inspect its identity card, trend chart, peer comparison gauge, maintenance context, exception flags and daily readings table.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Use a clean, light, spreadsheet-adjacent visual style, with white surfaces, a light page background, one accent blue, hairline borders and compact hierarchy.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Use InfluxDB for telemetry and Supabase Postgres for vehicle, depot, model and driver data. Do not use ToolJet DB. Derive fleet size, depot count and date range from live data so the app keeps working as the fleet changes.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Model the app with &lt;code&gt;fleet_saved_view&lt;/code&gt;, &lt;code&gt;vehicle&lt;/code&gt;, &lt;code&gt;depot&lt;/code&gt;, &lt;code&gt;model&lt;/code&gt; and &lt;code&gt;driver&lt;/code&gt;. Keep saved views visible to the team, but gate the save control so only the fleet director can create them in the UI.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Aggregate everything in InfluxDB with parameterized Flux. Distance and hours sum, energy per km is a mileage-weighted mean, battery health uses the latest reading per vehicle before averaging, and utilisation is a simple mean.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Bind every Plotly chart to a query that returns an already-stringified JSON figure, and export every chart and table to CSV.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  How ToolJet MCP Builds the App
&lt;/h2&gt;

&lt;p&gt;ToolJet MCP works through the whole application, not just the screen, because the data model, queries, component tree and the wiring between them land as one structured ToolJet application. Enterprise app building does not end at the interface, because data connectivity, workflows, permissions, deployment and ongoing change are the rest of the job, and the generated app sits on a runtime that carries those where supported instead of handing you a codebase to operate yourself. The path stays open, so you can use AI generation, then visual editing, then code where a case needs it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The One Thing That Broke
&lt;/h2&gt;

&lt;p&gt;A read-only saved views panel went blank even though the row still existed in Postgres. The cause was a shared label-shaping query, where an edit for a new heading had been made against an older cached version and silently dropped the HTML that rendered the panel. Fixed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Data Created
&lt;/h2&gt;

&lt;p&gt;The app ended up with five tables. &lt;code&gt;fleet_saved_view&lt;/code&gt; was created by the build to store the shared view name, metric, breakdown, depot and saver details, while &lt;code&gt;vehicle&lt;/code&gt;, &lt;code&gt;depot&lt;/code&gt;, &lt;code&gt;model&lt;/code&gt; and &lt;code&gt;driver&lt;/code&gt; provide the master records that fill the selectors, labels and comparisons.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enterprise Features for Your Fleet Operations Dashboard
&lt;/h2&gt;

&lt;p&gt;A fleet dashboard handles driver names, depot assignments, and vehicle maintenance status. ToolJet covers that governance at the platform layer, so you configure it once instead of rebuilding it in every app.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SSO and SCIM:&lt;/strong&gt; sign in with SAML, OIDC, or LDAP, and provision users automatically&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Role-based access control:&lt;/strong&gt; scope permissions to the app, the data source, and each query&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audit logs:&lt;/strong&gt; track every login, edit, and approval decision for compliance review&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Air-gapped deployment:&lt;/strong&gt; self-host on Docker or Kubernetes so your data stays in your network&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multiplayer editing:&lt;/strong&gt; several builders work on the same app, with versioning and Git sync&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Final Takeaways
&lt;/h2&gt;

&lt;p&gt;This build shows that a fleet supervisor can start from live telemetry and master data, then land on a dashboard that compares depots, explains one vehicle and keeps a shared saved-view list for the team. The important part is that the output is a structured ToolJet application, so the pages, queries and bindings stay in the same place after generation. You can keep refining the interface visually, drop into code when a metric rule or interaction needs it, and rely on the runtime for the data and workflow pieces where supported instead of scattering the app across separate files. That keeps later change inside the app model, not in a rewrite.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try ToolJet MCP
&lt;/h2&gt;

&lt;p&gt;Build your own fleet operations dashboard with ToolJet MCP, then request a &lt;a href="https://tooljet.com/schedule-demo" rel="noopener noreferrer"&gt;ToolJet demo&lt;/a&gt; to map it onto live telemetry.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQs
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Is this just a UI generator?
&lt;/h3&gt;

&lt;p&gt;No, the result is a structured ToolJet application, so the data model, queries, pages and component wiring stay together after generation. You keep editing the same app in the runtime instead of taking over a separate codebase when the agent finishes.&lt;/p&gt;

&lt;h3&gt;
  
  
  What does ToolJet MCP do for this fleet dashboard?
&lt;/h3&gt;

&lt;p&gt;It turns the prompt in this article into a two-page ToolJet build with live telemetry queries and the page structure already connected. The same prompt also covers the saved-view flow, the single-vehicle drilldown and the comparison logic.&lt;/p&gt;

&lt;h3&gt;
  
  
  What does the Fleet Operations Dashboard show?
&lt;/h3&gt;

&lt;p&gt;The first page compares depot, model, driver and week views across distance, energy efficiency, battery health, hours in service and utilisation, with fleet averages folded into the same view. The second page drills into one van with recent readings, maintenance status and rule-derived exceptions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I reproduce it from the prompt in this article?
&lt;/h3&gt;

&lt;p&gt;Yes, the condensed prompt is written so you can start from one specification and rebuild the same app in a single shot. It already includes the pages, the visual direction, the data sources, the metric rules and the shared-view behaviour.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do I need to write code for the charts and metrics?
&lt;/h3&gt;

&lt;p&gt;No, the metric work belongs in Flux, not in JavaScript. The chart components bind to the query output, and code only comes in when a particular interaction or visual shape needs an exception.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I connect existing telemetry and master data?
&lt;/h3&gt;

&lt;p&gt;Yes, the dashboard is built around existing InfluxDB telemetry and Supabase Postgres master records. The app derives comparisons from live data, so the vehicle count and depot structure come from the sources instead of hardcoded values or fixed assumptions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can several people work on the same dashboard?
&lt;/h3&gt;

&lt;p&gt;Yes, the app lives as one shared project, so teammates review and refine the same structure rather than cloning separate copies. The saved-view list gives the team a common set of named configurations to work from.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>python</category>
    </item>
    <item>
      <title>Build an RFP Response Manager with ToolJet MCP</title>
      <dc:creator>Athulya R</dc:creator>
      <pubDate>Tue, 08 Sep 2026 13:02:05 +0000</pubDate>
      <link>https://dev.to/tooljet/build-an-rfp-response-manager-with-tooljet-mcp-2m8e</link>
      <guid>https://dev.to/tooljet/build-an-rfp-response-manager-with-tooljet-mcp-2m8e</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;An RFP response team uses this app to track active requests, assign SMEs, and keep approved answers easy to reuse. Build an RFP response manager with ToolJet MCP, and the result is a structured ToolJet application, with data, queries and interface kept together for day-to-day work. It gives the team one place to manage assignments, responses, and reuse without bouncing between separate tools. The walkthrough that follows shows how the prompt below becomes a business app the team can keep changing as the process changes. That keeps the screen as one layer of the system, not the whole job. The app stays readable at a glance, but it also carries the data and review work behind the surface.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F745hmtin75udigznetpt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F745hmtin75udigznetpt.png" title="RFP Hub built with ToolJet MCP: RFP Hub ToolJet" alt="Build an rfp response manager with ToolJet MCP, the finished application: RFP Hub ToolJet" width="800" height="577"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;RFP Hub ToolJet&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What We're Building
&lt;/h2&gt;

&lt;p&gt;The Dashboard is a triage board. A stage filter changes the visible cards, while the metric row stays global so you can read open work, overdue items, and win rate without losing the wider picture. Each card carries the client, a due-state cue, and a progress ring, and dragging a card changes stage instead of creating a duplicate. Clicking a card opens the record in the detail view. The detail page splits the workflow into question review and team context, with the reviewer modal built around a short summary, reassignment, answer editing, and the approve or reject actions. The library page is the reuse path, where search, snippet previews, and the open modal help the team move approved text back into a new response. Each surface reads status through colour and shape before the text.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A dashboard that keeps the RFP pipeline readable at a glance&lt;/li&gt;
&lt;li&gt;Question review with SME reassignment and quick approve or reject actions&lt;/li&gt;
&lt;li&gt;A searchable content library for approved answers and reuse&lt;/li&gt;
&lt;li&gt;Global metrics that stay stable while the board is filtered&lt;/li&gt;
&lt;li&gt;State carried through colour, shape, and compact hierarchy&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Build an RFP Response Manager with ToolJet MCP for the Dashboard, Detail View, and Content Library
&lt;/h2&gt;

&lt;p&gt;Want to build it yourself? Start with the &lt;a href="https://github.com/ToolJet/mcp-v2" rel="noopener noreferrer"&gt;ToolJet MCP repository&lt;/a&gt; for setup instructions, supported agents, and everything you need to follow along.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the Full Run Cost
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Result&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Tool calls, build and testing&lt;/td&gt;
&lt;td&gt;75&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  The Consolidated Build Prompt
&lt;/h2&gt;

&lt;p&gt;The real build took several passes. The prompt below consolidates those requirements into one specification you can use from the start, so you can reproduce the app in a single run and compare the output with the same page structure. It keeps the model, the pages, and the interaction rules in one place.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Build a polished internal app called RFP Hub in ToolJet.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Make it an internal RFP response manager for Evotix with three pages only: Dashboard for pipeline tracking, RFP Detail for question review, and Content Library for reusable answers. The Dashboard should show a stage filter, global health tiles, a board with due-state cues and progress, and a chart of SME workload. RFP Detail should open from a board card, show the selected record, split into Questions and Team tabs, and include a reviewer modal with summary, reassignment, answer editing, and approve or reject actions. Content Library should support search, opening a saved answer in a modal, copying that answer, and adding new entries.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Use a dense but clean enterprise layout. Keep the palette in the cream, charcoal, tomato, amber, and olive family, with strong hierarchy, compact rows, and colour used only where it carries state.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Use four related tables: rfps, smes, questions, and library_entries. The app should lean on queries for aggregation, derive stage and review state from the data model, and keep expensive logic out of component bindings.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Every query-backed surface needs loading, empty, and error states. Every write should toast, refresh only the affected data, and avoid duplicate firing. No component should repeat a filter or column that already appears elsewhere.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  How ToolJet MCP Builds the App
&lt;/h2&gt;

&lt;p&gt;ToolJet MCP works through the whole application, not just the screen, so the data model, pages, components, queries, and the wiring between them land as one structured ToolJet application. That matters because enterprise app building does not stop at interface design, it also includes data connectivity, workflows, permissions, deployment, and ongoing change, and the generated app sits on a runtime that carries those where supported rather than handing you a codebase to operate yourself. In this build, the board, detail page, and library stay aligned around the same records and review state, and the path stays open from AI generation to visual editing and then to code where a special case needs it. That is the difference you feel after generation, because the app is ready for edits instead of being a pile of output to package up first.&lt;/p&gt;

&lt;h2&gt;
  
  
  The One Thing That Broke
&lt;/h2&gt;

&lt;p&gt;The question modal opened blank on the first click because the row click event fired before the selected question was ready, so the modal mounted without data. The fix was to bind the modal to the row data that was available at open time, which made the summary, answer, and reviewer actions appear immediately.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enterprise Features for Your RFP Response Manager
&lt;/h2&gt;

&lt;p&gt;An RFP app holds client names, deal values, and assigned SMEs. ToolJet covers that governance at the platform layer, so you configure it once instead of rebuilding it in every app.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SSO and SCIM:&lt;/strong&gt; sign in with SAML, OIDC, or LDAP, and provision users automatically&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Role-based access control:&lt;/strong&gt; scope permissions to the app, the data source, and each query&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audit logs:&lt;/strong&gt; track every login, edit, and approval decision for compliance review&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Air-gapped deployment:&lt;/strong&gt; self-host on Docker or Kubernetes so your data stays in your network&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multiplayer editing:&lt;/strong&gt; several builders work on the same app, with versioning and Git sync&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Final Takeaways
&lt;/h2&gt;

&lt;p&gt;This build shows a complete RFP workflow in one place, from pipeline review to question assignment to reusable approved answers. The important part is not that the interface was generated, but that the output is a structured ToolJet application that you keep editing after the first build. That matters when the review process changes, because visual editing handles most updates, code is there when a special case needs it, and the runtime keeps the data and workflow layer together where supported. You end up with a maintained app model, and ToolJet gives you room for later changes without rebuilding the app shape.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try ToolJet MCP
&lt;/h2&gt;

&lt;p&gt;Build an RFP response manager with ToolJet MCP for your team, then request a &lt;a href="https://tooljet.com/schedule-demo" rel="noopener noreferrer"&gt;ToolJet demo&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQs
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What is ToolJet MCP in this RFP tutorial?
&lt;/h3&gt;

&lt;p&gt;ToolJet MCP is the bridge from the prompt in this article to a working RFP Hub app in ToolJet. It builds the dashboard, detail view, and content library as one connected application instead of leaving you with disconnected pieces.&lt;/p&gt;

&lt;h3&gt;
  
  
  What does RFP Hub help a proposal team do?
&lt;/h3&gt;

&lt;p&gt;RFP Hub keeps active requests, assigned SMEs, and approved answers in one place. The dashboard shows stage and urgency, the detail page turns each question into a review task, and the library keeps reusable responses searchable.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do you reproduce an RFP response manager with ToolJet MCP?
&lt;/h3&gt;

&lt;p&gt;Use the prompt in this article, then review the page structure, data model, and interaction rules against your own process. The same pattern works when you swap in your own RFP records and answer library.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do you need to write code for the whole app?
&lt;/h3&gt;

&lt;p&gt;You do not need code for the whole app, because ToolJet assembles the pages, tables, queries, and interactions in the builder. You can still drop into code for a specific edge case while keeping the rest visual.&lt;/p&gt;

&lt;h3&gt;
  
  
  What happens to the app after the agent finishes?
&lt;/h3&gt;

&lt;p&gt;The agent leaves you with a structured ToolJet application, not just a screen or a code dump. The runtime keeps the data, queries, and workflow layer in place where supported, so you continue editing the app instead of taking over generated code.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can you connect existing RFP data and answer sources?
&lt;/h3&gt;

&lt;p&gt;Yes, you map your current RFP records and approved answers into the same app shape and keep the review flow intact. The tutorial shows the pattern, so you can adapt the dashboard, detail page, and library to your own source of truth.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can multiple people work on the same app?
&lt;/h3&gt;

&lt;p&gt;Yes, multiple people can keep shaping the same app in ToolJet while proposal managers, SMEs, and reviewers use different screens on the same records. That keeps the workflow aligned when questions, answers, and review rules change together.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>Build Expense Reimbursement App With ToolJet MCP</title>
      <dc:creator>Athulya R</dc:creator>
      <pubDate>Mon, 07 Sep 2026 13:09:14 +0000</pubDate>
      <link>https://dev.to/tooljet/build-expense-reimbursement-app-with-tooljet-mcp-1k5m</link>
      <guid>https://dev.to/tooljet/build-expense-reimbursement-app-with-tooljet-mcp-1k5m</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Build expense reimbursement app with ToolJet MCP when employees need to submit claims, attach receipts, group them into weekly reports, and track payment status through approval and finance. An agent can generate the build, and the result is a structured ToolJet application, data, queries and interface together, that the team keeps running rather than a screen or a code drop. In this article, you get the app shape, the model behind it, and the prompt that reproduces it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Fbuild-expense-management-app-tooljet-mcp-dashboard-8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Fbuild-expense-management-app-tooljet-mcp-dashboard-8.png" title="Expense &amp;amp; Reimbursement Management built with ToolJet MCP — ExpenseSheet" alt="Build expense reimbursement app with ToolJet MCP, the finished application — ExpenseSheet" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;ExpenseSheet&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What We're Building
&lt;/h2&gt;

&lt;p&gt;The first page keeps employee work in one view: KPI tiles at the top, a spend chart, a status breakdown, a needs-attention panel, and a tab switch that leaves only one table visible at a time. The expense modal changes its fields with the selected type, so mileage, accommodation, training, and client entertainment each expose the data that matters for that item. The second page shifts to submitted reports, line-level review in a modal, the approval history, the reimbursement queue, and the policy reference table. Dense layout, short labels, and status cues make the page read like an operations console instead of a brochure.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generates a structured ToolJet application from the prompt, with tables, pages, queries and wiring created together&lt;/li&gt;
&lt;li&gt;Keeps the app editable in the builder after generation, with visual edits for layout and code for edge cases&lt;/li&gt;
&lt;li&gt;Runs the expense workflow on a live runtime so data, approvals and payment state stay connected where supported&lt;/li&gt;
&lt;li&gt;Fits internal operations work that needs review steps, history and later changes without rebuilding the app&lt;/li&gt;
&lt;li&gt;Can run on infrastructure you control where supported, which suits internal finance systems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/OicJe9cDzj8" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Build Expense Reimbursement App With ToolJet MCP From One Prompt
&lt;/h2&gt;

&lt;p&gt;Want to build it yourself? Start with the &lt;a href="https://github.com/ToolJet/mcp-v2" rel="noopener noreferrer"&gt;ToolJet MCP repository&lt;/a&gt; for setup instructions, supported agents, and everything you need to follow along.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Consolidated Build Prompt
&lt;/h2&gt;

&lt;p&gt;The build took several passes to settle the page split, the data model, and the interaction rules. The requirements here are consolidated into one prompt so you can reproduce the app in a single run.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Build a polished internal app for expense and reimbursement management in ToolJet.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Keep it to 2 pages. The employee page shows a title and short purpose line, a 2x2 KPI tile area, a spend chart, a status breakdown chart, a needs-attention panel, and a tabbed area so only one table is visible at a time. The second page is for approvals and finance, with an approval inbox, a review modal that shows line-level decisions and history, a reimbursement queue, and a policy reference table.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Use 7 tables: employees, policies, expenses, weekly_reports, report_expenses, approvals, and reimbursements. Model approvals and payments as linked records, not loose status fields, so report state and payment state stay consistent.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Make the form rules do the work. Every expense must point to a policy, over-limit items become policy exceptions with a reason, receipt-required policies disable submit until a bill is attached, and only expenses not already attached to a report can be added. Managers can approve a whole report or send back individual lines, employees can reopen sent-back reports, and reimbursement status must flow through raised, processing, paid, and failed while writing every decision to history.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Use a dense, light-mode enterprise style with restrained colour, compact spacing, and clear hierarchy.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  How ToolJet MCP Builds the App
&lt;/h2&gt;

&lt;p&gt;ToolJet MCP works through the full application structure, so the data model, pages, components, queries and the wiring between them land as one structured ToolJet application. That matters because expense work does not stop at the interface, it keeps moving through data connectivity, workflows, permissions, deployment and later change, and the generated app sits on a runtime that carries those where supported instead of handing you a codebase to operate yourself. From there, you can keep shaping the app visually and drop into code only where a case needs it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Data Created
&lt;/h2&gt;

&lt;p&gt;The app ended up with seven tables in three groups: &lt;code&gt;exp_employees&lt;/code&gt; and &lt;code&gt;exp_policies&lt;/code&gt; hold the people and reimbursement rules, &lt;code&gt;exp_expenses&lt;/code&gt;, &lt;code&gt;exp_weekly_reports&lt;/code&gt; and &lt;code&gt;exp_report_expenses&lt;/code&gt; hold the claim flow, and &lt;code&gt;exp_approvals&lt;/code&gt; plus &lt;code&gt;exp_reimbursements&lt;/code&gt; record decisions and payment progress. The approval table is the audit trail, and the reimbursement table pushes the payment state back onto the claim view.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Page&lt;/th&gt;
&lt;th&gt;Components&lt;/th&gt;
&lt;th&gt;What they cover&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Expense Workspace&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;33&lt;/td&gt;
&lt;td&gt;Four KPI tiles, spend and status charts, a needs-attention panel, segmented expense and report tables, and three modals for submission, detail, and report creation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Approvals &amp;amp; Finance&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;26&lt;/td&gt;
&lt;td&gt;An approval inbox with five filters, a KPI strip, a reimbursement queue, a policy reference table, and three modals for review, reimbursement, and policy detail&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Build Results
&lt;/h2&gt;

&lt;p&gt;The agent produced two pages, seven ToolJet DB tables, 23 queries, and 59 components. The tables below show what landed in the app.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Pages&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ToolJet DB tables&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Queries&lt;/td&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Components&lt;/td&gt;
&lt;td&gt;59&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Prompt iterations&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Code files to maintain&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyu0jiu2f4qjdhioxjeov.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyu0jiu2f4qjdhioxjeov.png" alt=" " width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Enterprise Features for Your Expense Management App
&lt;/h2&gt;

&lt;p&gt;An expense app handles payroll data, receipts, and approval chains. ToolJet covers that governance at the platform layer, so you configure it once instead of rebuilding it in every app.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SSO and SCIM:&lt;/strong&gt; Sign in with SAML, OIDC, or LDAP, and provision users automatically.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Role-based access control:&lt;/strong&gt; Scope permissions to the app, the data source, and each query.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audit logs:&lt;/strong&gt; Track every login, edit, and approval decision for compliance review.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Air-gapped deployment:&lt;/strong&gt; Self-host on Docker or Kubernetes so finance data stays in your network.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multiplayer editing:&lt;/strong&gt; Several builders work on the same app, with versioning and Git sync.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ToolJet Workflows adds the notification layer. One workflow fires when a weekly report is submitted, posts to the manager in Slack, emails the employee through Gmail, and writes the decision back to &lt;code&gt;exp_approvals&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Takeaways
&lt;/h2&gt;

&lt;p&gt;This build shows that a single specification can produce a working expense workflow where employees submit claims, managers review line items, and finance tracks reimbursement status on the same record. The value is that you keep a real ToolJet application, not generated code, so the next change lands in the app rather than in a file tree you now own. Visual edits handle the common changes, code covers the edge cases, and the runtime keeps the data and workflow pieces tied together as the process changes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try ToolJet MCP
&lt;/h2&gt;

&lt;p&gt;Build an expense reimbursement app with ToolJet MCP using your claims and policy data, then request a &lt;a href="https://tooljet.com/schedule-demo" rel="noopener noreferrer"&gt;ToolJet demo&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQs
&lt;/h2&gt;

&lt;h3&gt;
  
  
  How do I build expense reimbursement app with ToolJet MCP?
&lt;/h3&gt;

&lt;p&gt;Use the prompt in this article to generate the two-page app, then tune the tables, statuses and form rules to match your own policies. The page split keeps employee work separate from approvals and finance without turning the build into a screen-only demo.&lt;/p&gt;

&lt;h3&gt;
  
  
  What does ToolJet MCP produce after the prompt runs?
&lt;/h3&gt;

&lt;p&gt;It produces a structured ToolJet application, not a loose bundle of files. For this build, the employee workspace, approvals page, queries and table wiring all land inside the same app.&lt;/p&gt;

&lt;h3&gt;
  
  
  What happens to the app after the agent finishes?
&lt;/h3&gt;

&lt;p&gt;The result stays inside the ToolJet runtime, so you keep editing the same app instead of taking ownership of generated code. Data, queries and workflow changes stay connected, and you can move between visual editing and code when a case needs it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does this app support weekly reports and partial approvals?
&lt;/h3&gt;

&lt;p&gt;Yes. The employee groups expenses into weekly reports, managers can approve a whole report or send back individual lines, and the reimbursement state follows the same claim through review and payment.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I use the same structure with my own expense data?
&lt;/h3&gt;

&lt;p&gt;Yes. The model is built around employees, policies, expenses, reports, approvals and reimbursements, so you can map the same shape onto your own source of truth. The key is keeping the claim, report and payment records linked.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do I need to write code to finish the build?
&lt;/h3&gt;

&lt;p&gt;No. You can generate the structure first, use the visual editor for most changes, and only drop into code when a field or rule needs custom logic. That keeps the app readable when policy rules or approval steps change.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Build a Hospital Analytics Dashboard with ToolJet MCP</title>
      <dc:creator>Athulya R</dc:creator>
      <pubDate>Fri, 04 Sep 2026 06:15:57 +0000</pubDate>
      <link>https://dev.to/tooljet/build-a-hospital-analytics-dashboard-with-tooljet-mcp-1ifm</link>
      <guid>https://dev.to/tooljet/build-a-hospital-analytics-dashboard-with-tooljet-mcp-1ifm</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Hospital administrators need one place to watch admissions and departmental activity, and this tutorial shows how to build a hospital analytics dashboard with ToolJet MCP. The agent generates a structured ToolJet application, so the data, queries and interface travel together as one app, not as a screen or a code drop. You get a trilingual operations dashboard you can read as a single workspace, with admissions data feeding the charts, the label set changing with the selected language, and the heatmap showing where activity concentrates. The walkthrough points you at the finished result first, then the pieces underneath it, so the prompt in this article can be reused without guessing the shape of the app.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Fbuild-hospital-analytics-dashboard-tooljet-mcp-dashboard-16.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Fbuild-hospital-analytics-dashboard-tooljet-mcp-dashboard-16.png" title="Hospital Analytics Dashboard built with ToolJet MCP — English" alt="Build a hospital analytics dashboard with ToolJet MCP, the finished application — English" width="800" height="691"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;English&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Fbuild-hospital-analytics-dashboard-tooljet-mcp-dashboard-2-9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Fbuild-hospital-analytics-dashboard-tooljet-mcp-dashboard-2-9.png" title="Hospital Analytics Dashboard built with ToolJet MCP — French" alt="Build a hospital analytics dashboard with ToolJet MCP, the finished application — French" width="800" height="691"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;French&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Fbuild-hospital-analytics-dashboard-tooljet-mcp-dashboard-3-9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Fbuild-hospital-analytics-dashboard-tooljet-mcp-dashboard-3-9.png" title="Hospital Analytics Dashboard built with ToolJet MCP — Spanish" alt="Build a hospital analytics dashboard with ToolJet MCP, the finished application — Spanish" width="800" height="670"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Spanish&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What We're Building
&lt;/h2&gt;

&lt;p&gt;The page uses a compact operations layout, with a KPI row at the top and a chart grid beneath it. The header keeps a language selector visible while the titles and captions update in place, so the same layout speaks English, Spanish or French without cloning the page. One chart is a heatmap, and the admissions matrix only works once the series is shaped to match the component. The rest of the grid gives the admissions view enough context to read trends without leaving the screen, which keeps the layout dense and easy to scan. That means the user can switch languages, inspect the KPI tiles, and compare departmental activity in one pass instead of moving between separate views.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Admissions data reads from ToolJet DB&lt;/li&gt;
&lt;li&gt;Translated labels switch between English, Spanish and French&lt;/li&gt;
&lt;li&gt;Four KPI tiles sit above the chart grid&lt;/li&gt;
&lt;li&gt;A heatmap shows admissions by department and day&lt;/li&gt;
&lt;li&gt;Validation and seeded rows confirm the dashboard works on load&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Build a Hospital Analytics Dashboard with ToolJet MCP and Adapt the Charts
&lt;/h2&gt;

&lt;p&gt;Want to build it yourself? Start with the &lt;a href="https://github.com/ToolJet/mcp-v2" rel="noopener noreferrer"&gt;ToolJet MCP repository&lt;/a&gt; for setup instructions, supported agents, and everything you need to follow along.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Consolidated Build Prompt
&lt;/h2&gt;

&lt;p&gt;The real build took several passes, and the requirements are consolidated here into one prompt that could have been used from the start. You can use the prompt in this article to reproduce the same hospital operations dashboard in a single shot.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Build a hospital operations analytics dashboard in ToolJet, on ToolJet DB, for hospital administrators who need one screen for admissions and departmental activity.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Store admissions records with a department, an admission date and a patient count, and seed them with realistic demo data across several departments and weeks so every chart has something to show on load. Keep a separate table holding the interface labels for each supported language.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Use three queries: one that reads the admissions rows, one RunJS query that reshapes them into the series each chart needs including a department-by-day matrix for the heatmap, and one RunJS query that returns the label set for the currently selected language.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Lay out a single page: a KPI row of four statistic tiles, then a grid of four charts inside two containers, one of which is a heatmap of admissions by department and day. Put a language selector in the header offering English, Spanish and French.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Selecting a language must re-render every heading, axis title and tile caption from the label query, without reloading the page and without duplicating the layout per language. The heatmap must render actual cells rather than only axes, so shape the series to whatever the chart component expects before binding it.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Aim for a dense enterprise operations screen: restrained colour, tight spacing, clear type hierarchy, readable at a glance. Run the app validation and confirm the queries return seeded rows before finishing.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  How ToolJet MCP Builds the App
&lt;/h2&gt;

&lt;p&gt;ToolJet MCP works through the whole application, not the visible layer, so the data model, queries, pages, components and wiring land together as one structured ToolJet application. That matters because the job does not end at the interface, the dashboard still depends on data connectivity, workflow logic and later change, and the generated app stays on the runtime that carries those where supported instead of handing you a codebase to run yourself. From there, you can keep moving between AI generation, visual editing and code when the shape of the data needs it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The One Thing That Broke
&lt;/h2&gt;

&lt;p&gt;The heatmap showed its axes but no cells, so the admissions view looked empty even though the chart frame was present. The series shape did not match the chart's expectation, and reshaping the computed dataset made the department by day grid render correctly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Data Created
&lt;/h2&gt;

&lt;p&gt;The app ended up with two tables. &lt;code&gt;hospital_admissions&lt;/code&gt; stores admissions records by department and date, and &lt;code&gt;translations&lt;/code&gt; holds the label set for each supported language. The first table feeds the charts and the second drives the live text swap in the header and KPI captions.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Got Generated
&lt;/h2&gt;

&lt;p&gt;The results table shows the validation state and the query checks that confirmed the seeded admissions rows and the working language logic.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Result&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Components&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Queries&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Repair cycles&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Final validation&lt;/td&gt;
&lt;td&gt;0 errors&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Fbuild-hospital-analytics-dashboard-tooljet-mcp-components-inspector.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.tooljet.com%2Fwp-content%2Fuploads%2F2026%2F09%2Fbuild-hospital-analytics-dashboard-tooljet-mcp-components-inspector.png" title="Hospital Analytics Dashboard built with ToolJet MCP — components" alt="Hospital Analytics Dashboard component tree generated by ToolJet MCP" width="800" height="453"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;The components ToolJet MCP created, in the ToolJet inspector&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Takeaways
&lt;/h2&gt;

&lt;p&gt;This build shows that a hospital operations dashboard can come out of one prompt as a structured app, with live label switching, reshaped chart data and a heatmap that renders real cells. Once generation ends, the useful artifact is the application itself, because you keep working in ToolJet instead of taking ownership of a code bundle. Visual editing covers routine layout changes, code handles the edge cases, and the data layer stays attached to the interface as the requirements change. That is the part that matters, since the dashboard keeps its data and its presentation aligned while the team keeps iterating.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try ToolJet MCP
&lt;/h2&gt;

&lt;p&gt;Build your own hospital operations dashboard from admissions data, then request a &lt;a href="https://tooljet.com/schedule-demo" rel="noopener noreferrer"&gt;ToolJet demo&lt;/a&gt; today.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQs
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What does ToolJet MCP build in this tutorial?
&lt;/h3&gt;

&lt;p&gt;ToolJet MCP turns the prompt in this article into a structured ToolJet application with admissions data, translated labels, charts and a heatmap. The output is an application shape, not a loose screen sketch, so the dashboard has data and behavior together.&lt;/p&gt;

&lt;h3&gt;
  
  
  What happens after the agent finishes?
&lt;/h3&gt;

&lt;p&gt;The agent leaves you with a structured ToolJet application, not a screen mockup or a code bundle. The runtime keeps the app, data connections and workflow logic together where supported, so later changes happen in the same place and the dashboard keeps working as one unit.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do you build a hospital analytics dashboard with ToolJet MCP?
&lt;/h3&gt;

&lt;p&gt;Use the prompt in this article as the build spec and connect admissions rows plus the translation table. The same layout gives you the KPI row, chart grid and language switching without rebuilding the page by hand, and the heatmap keeps the department view in place.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can you keep editing after generation?
&lt;/h3&gt;

&lt;p&gt;Yes, the visual editor handles layout changes and code handles edge cases when the chart data changes shape. The same app stays open for both, so you can adjust the dashboard without starting over or losing the bindings that already work.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do you need to write code to make the charts work?
&lt;/h3&gt;

&lt;p&gt;No, the charts run from queries, reshaped data and visual bindings. Code only comes in when a component needs a different data shape, a custom label set, or a chart-specific adjustment that the editor cannot express cleanly.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can you point the dashboard at your own admissions data?
&lt;/h3&gt;

&lt;p&gt;Yes, swap the seeded rows for your own source and keep the same admissions and translations tables. The dashboard logic stays the same, only the inputs change, so the same layout can read a different hospital feed.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
    <item>
      <title>How to Integrate ToolJet with ServiceNow for Enhanced Operations 🚀</title>
      <dc:creator>Athulya R</dc:creator>
      <pubDate>Tue, 11 Aug 2026 06:50:28 +0000</pubDate>
      <link>https://dev.to/tooljet/how-to-integrate-tooljet-with-servicenow-for-enhanced-operations-1h1j</link>
      <guid>https://dev.to/tooljet/how-to-integrate-tooljet-with-servicenow-for-enhanced-operations-1h1j</guid>
      <description>&lt;p&gt;Most enterprises already run their operations on &lt;a href="https://www.servicenow.com/in/" rel="noopener noreferrer"&gt;ServiceNow&lt;/a&gt;. The question isn't "should we use ServiceNow." That's already decided. The real question is simpler: can teams build the tools they need, faster, without replacing what's already working?&lt;/p&gt;

&lt;p&gt;This piece isn't a feature list. It's what a platform team actually wants when they bring ToolJet in next to ServiceNow, and what's realistically possible today.&lt;/p&gt;

&lt;h2&gt;
  
  
  What enterprises are usually asking for
&lt;/h2&gt;

&lt;p&gt;When a platform team already on &lt;a href="https://tooljet.com/servicenow" rel="noopener noreferrer"&gt;ServiceNow&lt;/a&gt; looks at ToolJet, the ask is almost never "replace ServiceNow." It's usually some version of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Our employees need a simpler way to submit and track requests than the ServiceNow portal gives them."&lt;/li&gt;
&lt;li&gt;"We want dashboards that show what's happening across our tickets, without building a whole reporting stack."&lt;/li&gt;
&lt;li&gt;"Can we let people update or close things without training them on ServiceNow itself?"&lt;/li&gt;
&lt;li&gt;"Can our automations kick off from somewhere friendlier than ServiceNow's own forms?"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In other words: ServiceNow stays the system of record. ToolJet becomes a faster front door for the specific things people do every day.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why teams look for a front door at all
&lt;/h2&gt;

&lt;p&gt;ServiceNow already has its own builders: Creator Studio for forms, UI Builder for pages, Flow Designer for automation. They're capable tools, built for ServiceNow admins who live in the platform daily. That's exactly who they're designed for.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figure 1. ServiceNow Studio's landing screen, one of several separate builder products.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fml10731pmc88fwwmmteu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fml10731pmc88fwwmmteu.png" alt="ServiceNow Studio's landing screen, one of several separate builder products" width="800" height="403"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figure 2. Creator Studio's form builder, used to design a record form field by field.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb5izyjx3384j2utwat4y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb5izyjx3384j2utwat4y.png" alt="Creator Studio's form builder, used to design a record form field by field" width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figure 3. ServiceNow UI Builder, used to assemble custom pages from components.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Furaibh2cw2rnigf1ptme.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Furaibh2cw2rnigf1ptme.png" alt="ServiceNow UI Builder, used to assemble custom pages from components" width="800" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figure 4. Inspecting a component's data and config inside UI Builder.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn9d80wmvfozhwnckuxvu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn9d80wmvfozhwnckuxvu.png" alt="Inspecting a component's data and config inside UI Builder" width="800" height="402"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For a smaller, faster internal tool, though, this can feel like a lot of setup. Each one is a separate product with its own learning curve, and a simple request form can mean hopping between two or three of them just to ship one thing.&lt;/p&gt;

&lt;p&gt;ToolJet's role here isn't "better than ServiceNow's tools." It's a different tradeoff: one canvas, simpler building blocks, and a shorter path from idea to working app, for the kinds of internal tools that don't need everything ServiceNow's native builders offer.&lt;/p&gt;

&lt;h2&gt;
  
  
  ServiceNow App Engine vs ToolJet
&lt;/h2&gt;

&lt;p&gt;This is usually the first question a ServiceNow team asks, since App Engine Studio is ServiceNow's own answer to "build apps faster." It's a fair comparison to make, and worth being direct about.&lt;/p&gt;

&lt;p&gt;App Engine Studio is a capable low-code builder, and if a team is already deep in the ServiceNow ecosystem and wants everything to stay inside it, that's a reasonable choice. It's built and governed the way the rest of ServiceNow is.&lt;/p&gt;

&lt;p&gt;A few practical differences are worth knowing before assuming App Engine is the default answer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Self-hosted is an option with ToolJet, not with App Engine.&lt;/strong&gt; App Engine only runs inside ServiceNow's own cloud. ToolJet is open source and can be self-hosted, which matters for teams with data residency requirements or a preference for running their own infrastructure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost tends to work differently.&lt;/strong&gt; App Engine Studio typically carries its own per-app or per-user licensing on top of a ServiceNow contract. ToolJet has open-source and self-hosted path, so a small internal tool doesn't automatically come with additional per-builder licensing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Getting started doesn't require ServiceNow-specific training.&lt;/strong&gt; Building well in App Engine generally benefits from ServiceNow platform knowledge and, for more complex apps, formal ServiceNow training or certification. ToolJet's canvas and query panel are meant to be picked up directly, without that same ramp-up.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of this makes App Engine a bad choice. It makes sense for teams building deeply native ServiceNow applications that need to live inside that governance model long-term. ToolJet fits better when the goal is a smaller, faster tool, built by a team that doesn't want to invest in ServiceNow-specific platform expertise just to ship it.&lt;/p&gt;

&lt;h2&gt;
  
  
  A real example: an Employee Self-Service Request Portal
&lt;/h2&gt;

&lt;p&gt;To test this, a small internal tool was built end to end: an employee fills out a request (what it's about, how urgent, a short description), hits Submit, and it becomes a real ticket in ServiceNow. Below the form, a live table shows their own requests, pulled straight from ServiceNow.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figure 5. The finished Employee Self-Service Request Portal, running against a live ServiceNow instance.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F33bs2ed2w2sjlxz1kzpz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F33bs2ed2w2sjlxz1kzpz.png" alt="The finished Employee Self-Service Request Portal, running against a live ServiceNow instance" width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is a stand-in for the most common ask above: a simpler front end for something ServiceNow already does, but does clunkily for a regular employee.&lt;/p&gt;

&lt;p&gt;Connecting to ServiceNow itself is a one-time setup step: an instance URL, and either basic auth or OAuth 2.0.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figure 6. ServiceNow data source setup inside ToolJet. Client ID blurred.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc7qjc6gnonv33chto4xf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc7qjc6gnonv33chto4xf.png" alt="ServiceNow data source setup inside ToolJet, client ID blurred" width="799" height="435"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How the app was actually built
&lt;/h2&gt;

&lt;p&gt;This is the part that's usually skipped, so here it is plainly.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figure 7. The full query panel behind the app: every query on the left, myRequests open on the right.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcytgv31av2fwznallcc3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcytgv31av2fwznallcc3.png" alt="The full query panel behind the app: every query on the left, myRequests open on the right" width="800" height="403"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Every piece of the app is backed by a small, focused query against ServiceNow, and every query does one job:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;myRequests&lt;/code&gt;: pulls the employee's existing requests from the incident table (List Records)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;createRequest&lt;/code&gt;: creates a new request when the form is submitted (Create Record)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;getPriorityChoices&lt;/code&gt;: populates the Priority dropdown straight from ServiceNow's own choice list, so it can't go out of sync&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;deleteRecord&lt;/code&gt;: removes a request&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;countTotalRequest, countOpenRequests, countHighPriority, countClosedRequests&lt;/code&gt;: four small counting queries, one per KPI card&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ListFlows&lt;/code&gt;: lists ServiceNow's Flow Designer automations, for later use&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of these are complicated. Each one is one ServiceNow operation, configured once, then reused by a component on the canvas: a table, a form field, a stat card, a button. That's the actual "how": connect once, build a small query per data need, then wire components to those queries.&lt;/p&gt;

&lt;p&gt;The result is a form, four live KPI cards (Total, Open, High Priority, Resolved), and a request table, all reading and writing real ServiceNow data, with nothing custom running in between.&lt;/p&gt;

&lt;h2&gt;
  
  
  Generating the app instead of building it by hand
&lt;/h2&gt;

&lt;p&gt;Everything above was built query by query. There's also a newer, faster path worth showing: describing the app in plain language and letting ToolJet generate it.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figure 8. ToolJet's AI builder breaking a plain-language request into a two-phase implementation plan.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3k2olovgevzoqw68dwj6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3k2olovgevzoqw68dwj6.png" alt="ToolJet's AI builder breaking a plain-language request into a two-phase implementation plan" width="800" height="1459"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Given a description of a ServiceNow self-service portal, the AI builder splits the work into phases (first the core request management, then the stats dashboard), and asks for approval before building each phase. That review step matters: it means someone can check the plan before any queries or components get created, rather than getting a black box.&lt;/p&gt;

&lt;p&gt;Once approved, it generates working queries against the ServiceNow data source directly, including ones with real filtering logic, not just plain lookups:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figure 9. An AI-generated query, list_requests, with dynamic filters built from dropdown and search inputs.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl5qj4i68qdil287nt9x6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl5qj4i68qdil287nt9x6.png" alt="An AI-generated query, list_requests, with dynamic filters built from dropdown and search inputs" width="800" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And it produces an app shell to match, with its own navigation and layout:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figure 10. The AI-generated app, a different visual take on the same self-service request portal.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9i0pvy68u1pha77lvkf9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9i0pvy68u1pha77lvkf9.png" alt="The AI-generated app, a different visual take on the same self-service request portal" width="800" height="321"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This doesn't replace understanding the underlying queries. It's still worth knowing what List Records, Create Record, and the rest actually do, since that's what makes the generated output reviewable rather than a leap of faith. What it changes is the starting point: instead of an empty canvas, there's already a working draft to adjust.&lt;/p&gt;

&lt;h2&gt;
  
  
  The takeaway
&lt;/h2&gt;

&lt;p&gt;If an enterprise already runs on ServiceNow and wants faster, friendlier tools without giving up ServiceNow as the system of record, that's already buildable today, whether hand built query by query or generated from a plain-language description. Triggering deeper ServiceNow automation is close, but it needs a bit of setup on the ServiceNow side first. Neither tool replaces the other. They're doing different jobs.&lt;/p&gt;

&lt;p&gt;Everything above was built and tested against a live ServiceNow Personal Developer Instance using ToolJet Cloud, not a demo environment or a simulated data source.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://tooljet.com/schedule-demo" rel="noopener noreferrer"&gt;Book a demo&lt;/a&gt; and see open-source enterprise low-code in action, built for real internal application delivery.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
