[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-laravel-mcp-business-systems-ai-agents":3,"blog-nav-laravel-mcp-business-systems-ai-agents":27},{"slug":4,"title":5,"description":6,"body":7,"category":8,"readTime":9,"tags":10,"coverImage":14,"coverImageAlt":15,"heroImage":16,"heroImageAlt":15,"metaTitle":17,"metaDescription":18,"ogImage":19,"noindex":20,"published":21,"publishAt":22,"sortOrder":23,"updatedAt":22,"status":24,"path":25,"bodyHtml":26},"laravel-mcp-business-systems-ai-agents","Laravel MCP for business systems: when AI agents should call your app","Model Context Protocol lets ChatGPT or Cursor use your Laravel tools. Here is when that belongs in a Philippine business system — and when it is a new attack surface.","**Laravel MCP** is the 2026 Laravel\u002FAI topic that is easy to over-buy. MCP (Model Context Protocol) lets an external agent — ChatGPT, Claude, Cursor — call **tools you define** instead of guessing from a PDF of your schema.\n\nThat is powerful inside a business system. It is also a **new door into your data**. This article is when MCP belongs in a Philippine Laravel app, and when it is theater.\n\nLaravel’s own split is useful: the [AI SDK](https:\u002F\u002Flaravel.com\u002Fai) builds features *inside* the app; [Laravel MCP](https:\u002F\u002Flaravel.com\u002Fblog\u002Flaravel-mcp-a-complete-guide) exposes the app *outward*. We covered the inward path in [Laravel 13 AI SDK for business apps](\u002Fblog\u002Flaravel-13-ai-sdk-philippine-business-apps).\n\n## What MCP is in plain language\n\nWithout MCP, every AI product invents its own integration. With MCP, you run a **server** in Laravel that advertises tools and resources: “list today’s unpaid invoices,” “find a court slot,” “draft a reply using this policy.”\n\nA compatible client can then **call those tools** with your auth story, not with a pasted API key in a random custom GPT.\n\nThat is the appeal for ops: the agent uses **the same rules as your admin**, if you wired it that way. If you did not, you built a second, sloppier API.\n\n## When MCP is worth the work\n\nConsider a server when:\n\n- Staff already live in an AI client **and** in your Laravel admin, and the copy-paste is the job\n- You can name **five tools**, not fifty — each maps to an existing policy (who may refund, who may see PII)\n- You have auth: Sanctum\u002FPassport, roles, audit logs, rate limits\n- The alternative is giving an intern production DB credentials “so Claude can help”\n\nMCP is a poor first project when you do not yet have a system of record. An agent cannot book honestly if bookings live in three sheets. Fix the core — [business systems vs websites](\u002Fblog\u002Fbusiness-system-development-philippines) — then expose tools.\n\n## A shape that does not scare us\n\n| Layer | Job |\n|-------|-----|\n| Domain + API | Real states, permissions, webhooks |\n| AI SDK (optional) | In-app drafts your UI already shows |\n| MCP server | Narrow tools for *trusted* clients |\n| Auth + audit | Every tool call is a user (or service) you can revoke |\n\nDo **not** put the MCP endpoint on the public internet with a long-lived token in a chat. Treat it like admin API access. The composable-integration habits in [connecting tools without replatforming](\u002Fblog\u002Fcomposable-software-integrations-2026-philippines) apply: least privilege, rotation, logging.\n\n## Tools we would expose first (and last)\n\n**First** (read-mostly, high value):\n\n- Search orders\u002Fbookings the caller is allowed to see\n- Summarize *this* record for a standup\n- Fetch the written policy snippet the agent must follow\n\n**Later** (writes, after months of clean reads):\n\n- Create a draft invoice or draft booking in `pending_review`\n- Never: silent refunds, silent price edits, silent user deletes\n\nIf a vendor demo writes to production from ChatGPT on day one, that is a sales demo, not a design.\n\n## MCP is not “our app is agentic”\n\nAgentic means multi-step action. MCP is a **pipe**. You can have MCP and still require a human click in Laravel. You should.\n\nDeveloper-facing MCP (helping Cursor see your schema) is a productivity choice. Product-facing MCP (helping a GM ask ChatGPT for yesterday’s no-shows) is a **security and product** choice. Do not fund them as one line item.\n\n## Upgrade note\n\nYou do not need Laravel 13 to think about this, but 13 is where the first-party AI story is concentrated. If you are still on 12, the framework conversation is [upgrade now or wait](\u002Fblog\u002Fshould-philippine-teams-upgrade-to-laravel-13) — separately from “should agents touch our books.”\n\n## Straight next step\n\nIf you want agents to talk to a real Philippine business system — not a toy todo list — [describe the three questions you wish ChatGPT could answer from your admin](\u002Fcontact). We will say which should be an MCP tool, which should be a report in Laravel, and which should stay a human.","Engineering",7,[11,12,13],"Laravel","AI","MCP","\u002Fimages\u002Fjournal\u002Flaravel-mcp-business-systems-ai-agents-cover.webp?v=20261013b","Person working on a laptop at a small table","\u002Fimages\u002Fjournal\u002Flaravel-mcp-business-systems-ai-agents-hero.webp?v=20261013b","Laravel MCP for Business Systems | PrimeCode","Laravel MCP for Philippine business systems — expose narrow tools to AI agents with auth and audit, not a public door into your data.","\u002Fimages\u002Fjournal\u002Flaravel-mcp-business-systems-ai-agents-og.webp?v=20261013b",false,true,"2026-09-23T01:00:00.000Z",42,"live","\u002Fblog\u002Flaravel-mcp-business-systems-ai-agents","\u003Cp>\u003Cstrong>Laravel MCP\u003C\u002Fstrong> is the 2026 Laravel\u002FAI topic that is easy to over-buy. MCP (Model Context Protocol) lets an external agent — ChatGPT, Claude, Cursor — call \u003Cstrong>tools you define\u003C\u002Fstrong> instead of guessing from a PDF of your schema.\u003C\u002Fp>\n\u003Cp>That is powerful inside a business system. It is also a \u003Cstrong>new door into your data\u003C\u002Fstrong>. This article is when MCP belongs in a Philippine Laravel app, and when it is theater.\u003C\u002Fp>\n\u003Cp>Laravel’s own split is useful: the \u003Ca href=\"https:\u002F\u002Flaravel.com\u002Fai\" rel=\"noopener noreferrer\">AI SDK\u003C\u002Fa> builds features \u003Cem>inside\u003C\u002Fem> the app; \u003Ca href=\"https:\u002F\u002Flaravel.com\u002Fblog\u002Flaravel-mcp-a-complete-guide\" rel=\"noopener noreferrer\">Laravel MCP\u003C\u002Fa> exposes the app \u003Cem>outward\u003C\u002Fem>. We covered the inward path in \u003Ca href=\"\u002Fblog\u002Flaravel-13-ai-sdk-philippine-business-apps\" rel=\"noopener noreferrer\">Laravel 13 AI SDK for business apps\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch2>What MCP is in plain language\u003C\u002Fh2>\n\u003Cp>Without MCP, every AI product invents its own integration. With MCP, you run a \u003Cstrong>server\u003C\u002Fstrong> in Laravel that advertises tools and resources: “list today’s unpaid invoices,” “find a court slot,” “draft a reply using this policy.”\u003C\u002Fp>\n\u003Cp>A compatible client can then \u003Cstrong>call those tools\u003C\u002Fstrong> with your auth story, not with a pasted API key in a random custom GPT.\u003C\u002Fp>\n\u003Cp>That is the appeal for ops: the agent uses \u003Cstrong>the same rules as your admin\u003C\u002Fstrong>, if you wired it that way. If you did not, you built a second, sloppier API.\u003C\u002Fp>\n\u003Ch2>When MCP is worth the work\u003C\u002Fh2>\n\u003Cp>Consider a server when:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Staff already live in an AI client \u003Cstrong>and\u003C\u002Fstrong> in your Laravel admin, and the copy-paste is the job\u003C\u002Fli>\n\u003Cli>You can name \u003Cstrong>five tools\u003C\u002Fstrong>, not fifty — each maps to an existing policy (who may refund, who may see PII)\u003C\u002Fli>\n\u003Cli>You have auth: Sanctum\u002FPassport, roles, audit logs, rate limits\u003C\u002Fli>\n\u003Cli>The alternative is giving an intern production DB credentials “so Claude can help”\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>MCP is a poor first project when you do not yet have a system of record. An agent cannot book honestly if bookings live in three sheets. Fix the core — \u003Ca href=\"\u002Fblog\u002Fbusiness-system-development-philippines\" rel=\"noopener noreferrer\">business systems vs websites\u003C\u002Fa> — then expose tools.\u003C\u002Fp>\n\u003Ch2>A shape that does not scare us\u003C\u002Fh2>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Layer\u003C\u002Fth>\n\u003Cth>Job\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>Domain + API\u003C\u002Ftd>\n\u003Ctd>Real states, permissions, webhooks\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>AI SDK (optional)\u003C\u002Ftd>\n\u003Ctd>In-app drafts your UI already shows\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>MCP server\u003C\u002Ftd>\n\u003Ctd>Narrow tools for \u003Cem>trusted\u003C\u002Fem> clients\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Auth + audit\u003C\u002Ftd>\n\u003Ctd>Every tool call is a user (or service) you can revoke\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Cp>Do \u003Cstrong>not\u003C\u002Fstrong> put the MCP endpoint on the public internet with a long-lived token in a chat. Treat it like admin API access. The composable-integration habits in \u003Ca href=\"\u002Fblog\u002Fcomposable-software-integrations-2026-philippines\" rel=\"noopener noreferrer\">connecting tools without replatforming\u003C\u002Fa> apply: least privilege, rotation, logging.\u003C\u002Fp>\n\u003Ch2>Tools we would expose first (and last)\u003C\u002Fh2>\n\u003Cp>\u003Cstrong>First\u003C\u002Fstrong> (read-mostly, high value):\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Search orders\u002Fbookings the caller is allowed to see\u003C\u002Fli>\n\u003Cli>Summarize \u003Cem>this\u003C\u002Fem> record for a standup\u003C\u002Fli>\n\u003Cli>Fetch the written policy snippet the agent must follow\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Later\u003C\u002Fstrong> (writes, after months of clean reads):\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Create a draft invoice or draft booking in \u003Ccode>pending_review\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>Never: silent refunds, silent price edits, silent user deletes\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>If a vendor demo writes to production from ChatGPT on day one, that is a sales demo, not a design.\u003C\u002Fp>\n\u003Ch2>MCP is not “our app is agentic”\u003C\u002Fh2>\n\u003Cp>Agentic means multi-step action. MCP is a \u003Cstrong>pipe\u003C\u002Fstrong>. You can have MCP and still require a human click in Laravel. You should.\u003C\u002Fp>\n\u003Cp>Developer-facing MCP (helping Cursor see your schema) is a productivity choice. Product-facing MCP (helping a GM ask ChatGPT for yesterday’s no-shows) is a \u003Cstrong>security and product\u003C\u002Fstrong> choice. Do not fund them as one line item.\u003C\u002Fp>\n\u003Ch2>Upgrade note\u003C\u002Fh2>\n\u003Cp>You do not need Laravel 13 to think about this, but 13 is where the first-party AI story is concentrated. If you are still on 12, the framework conversation is \u003Ca href=\"\u002Fblog\u002Fshould-philippine-teams-upgrade-to-laravel-13\" rel=\"noopener noreferrer\">upgrade now or wait\u003C\u002Fa> — separately from “should agents touch our books.”\u003C\u002Fp>\n\u003Ch2>Straight next step\u003C\u002Fh2>\n\u003Cp>If you want agents to talk to a real Philippine business system — not a toy todo list — \u003Ca href=\"\u002Fcontact\" rel=\"noopener noreferrer\">describe the three questions you wish ChatGPT could answer from your admin\u003C\u002Fa>. We will say which should be an MCP tool, which should be a report in Laravel, and which should stay a human.\u003C\u002Fp>\n",{"prev":28,"next":44,"related":60},{"slug":29,"title":30,"description":31,"category":32,"readTime":9,"tags":33,"coverImage":35,"coverImageAlt":36,"heroImage":37,"heroImageAlt":36,"metaTitle":38,"metaDescription":39,"ogImage":40,"noindex":20,"published":21,"publishAt":41,"sortOrder":42,"updatedAt":41,"status":24,"path":43},"philippine-firms-ai-ready-not-in-production","Philippine firms look AI-ready. Production results are the real test","The 3 September Tribune piece put numbers on a gap we see in calls: initiatives and KPIs without connected data. How to tell a pilot from production.","Trends",[12,32,34],"Philippines","\u002Fimages\u002Fjournal\u002Fphilippine-firms-ai-ready-not-in-production-cover.webp?v=20261013b","Business leaders in a meeting reviewing AI initiative status","\u002Fimages\u002Fjournal\u002Fphilippine-firms-ai-ready-not-in-production-hero.webp?v=20261013b","PH Firms AI-Ready but Not in Production | PrimeCode","Philippine firms lead AI readiness surveys but stall before production — Tribune 3 Sep 2026, tool sprawl, and a one-workflow test.","\u002Fimages\u002Fjournal\u002Fphilippine-firms-ai-ready-not-in-production-og.webp?v=20261013b","2026-09-21T01:00:00.000Z",41,"\u002Fblog\u002Fphilippine-firms-ai-ready-not-in-production",{"slug":45,"title":46,"description":47,"category":32,"readTime":48,"tags":49,"coverImage":51,"coverImageAlt":52,"heroImage":53,"heroImageAlt":52,"metaTitle":54,"metaDescription":55,"ogImage":56,"noindex":20,"published":21,"publishAt":57,"sortOrder":58,"updatedAt":57,"status":24,"path":59},"dti-ai-scale-up-center-what-msmes-should-build","DTI AI and Scale-Up Center: what MSMEs should actually build","DTI and Converge opened a Makati hub for AI literacy and demos. After the visit: one source of truth, one assisted workflow, integrations you can name.",6,[12,50,34],"MSME","\u002Fimages\u002Fjournal\u002Fdti-ai-scale-up-center-what-msmes-should-build-cover.webp?v=20261013b","Workshop space with people learning digital tools around laptops","\u002Fimages\u002Fjournal\u002Fdti-ai-scale-up-center-what-msmes-should-build-hero.webp?v=20261013b","DTI AI Scale-Up Center — What to Build | PrimeCode","What Philippine MSMEs should build after the DTI and Converge AI Scale-Up Center — systems first, then a thin AI layer, not a booth chatbot.","\u002Fimages\u002Fjournal\u002Fdti-ai-scale-up-center-what-msmes-should-build-og.webp?v=20261013b","2026-09-25T01:00:00.000Z",43,"\u002Fblog\u002Fdti-ai-scale-up-center-what-msmes-should-build",[61,77,92],{"slug":62,"title":63,"description":64,"category":8,"readTime":48,"tags":65,"coverImage":68,"coverImageAlt":69,"heroImage":70,"heroImageAlt":69,"metaTitle":71,"metaDescription":72,"ogImage":73,"noindex":20,"published":21,"publishAt":74,"sortOrder":75,"updatedAt":74,"status":24,"path":76},"idempotency-keys-webhooks-side-effects","Idempotency keys: one webhook, one side effect","Retries are normal. Store the key with the result and enforce it with a unique constraint so a second delivery cannot create a second row.",[66,67,11],"API","Webhooks","\u002Fimages\u002Fjournal\u002Fidempotency-keys-webhooks-side-effects-cover.webp?v=20261013b","Person writing on a printed form","\u002Fimages\u002Fjournal\u002Fidempotency-keys-webhooks-side-effects-hero.webp?v=20261013b","Idempotency Keys for Webhooks | PrimeCode","How an API stores an idempotency key so a retried webhook updates one record instead of creating a second side effect.","\u002Fimages\u002Fjournal\u002Fidempotency-keys-webhooks-side-effects-og.webp?v=20261013b","2026-10-19T01:00:00.000Z",53,"\u002Fblog\u002Fidempotency-keys-webhooks-side-effects",{"slug":78,"title":79,"description":80,"category":8,"readTime":48,"tags":81,"coverImage":83,"coverImageAlt":84,"heroImage":85,"heroImageAlt":84,"metaTitle":86,"metaDescription":87,"ogImage":88,"noindex":20,"published":21,"publishAt":89,"sortOrder":90,"updatedAt":89,"status":24,"path":91},"api-rate-limiting-before-traffic","Rate-limit the API before the expensive routes exist","Login, OTP, search, webhooks, and unbounded page size are the routes to limit first. OWASP API4:2023 is the control, not a new security product.",[66,82,11],"Security","\u002Fimages\u002Fjournal\u002Fapi-rate-limiting-before-traffic-cover.webp?v=20261013b","Padlock resting on a laptop keyboard","\u002Fimages\u002Fjournal\u002Fapi-rate-limiting-before-traffic-hero.webp?v=20261013b","Rate-Limit the API Before Traffic Grows | PrimeCode","Where a Laravel API needs rate limits first — login, OTP, search, and webhooks — and what OWASP API4:2023 actually asks for.","\u002Fimages\u002Fjournal\u002Fapi-rate-limiting-before-traffic-og.webp?v=20261013b","2026-10-16T01:00:00.000Z",52,"\u002Fblog\u002Fapi-rate-limiting-before-traffic",{"slug":93,"title":94,"description":95,"category":8,"readTime":48,"tags":96,"coverImage":99,"coverImageAlt":100,"heroImage":101,"heroImageAlt":100,"metaTitle":102,"metaDescription":103,"ogImage":104,"noindex":20,"published":21,"publishAt":105,"sortOrder":106,"updatedAt":105,"status":24,"path":107},"queues-work-outside-the-http-request","Queues: work that does not belong in the HTTP request","The request commits the booking or the order. Mail, PDFs, webhooks, and exports belong on a worker, and that worker must be safe to retry.",[11,97,98],"Queues","Architecture","\u002Fimages\u002Fjournal\u002Fqueues-work-outside-the-http-request-cover.webp?v=20261013b","Warehouse aisles of packed orders waiting to move","\u002Fimages\u002Fjournal\u002Fqueues-work-outside-the-http-request-hero.webp?v=20261013b","Queues: Work That Leaves the HTTP Request | PrimeCode","Which web-app tasks belong in a Laravel queue — mail, webhooks, exports — and why a timeout is the wrong place to notice.","\u002Fimages\u002Fjournal\u002Fqueues-work-outside-the-http-request-og.webp?v=20261013b","2026-10-14T01:00:00.000Z",51,"\u002Fblog\u002Fqueues-work-outside-the-http-request"]