[{"data":1,"prerenderedAt":74},["ShallowReactive",2],{"help-article-connecting-mcp-clients":3},{"data":4},{"title":5,"excerpt":6,"content":7,"help_category":8,"seo":11},"Connecting AI Agents via MCP","MCP setup happens in your external client, not inside m18t. Point an MCP client at https:\u002F\u002Fm18t.com\u002Fmcp, authenticate with a bearer token, and pick a brand","\u003Cp>\u003Cstrong>What you&#39;ll learn\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Where MCP setup actually happens (your external client, not inside m18t).\u003C\u002Fli>\n\u003Cli>How to point an MCP client at the m18t endpoint and authenticate it.\u003C\u002Fli>\n\u003Cli>How brand scoping and token expiry work in practice.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2>The concept\u003C\u002Fh2>\n\u003Cp>m18t speaks the \u003Ca href=\"\u002Fhelp\u002Fthe-agent-first-thesis\">Model Context Protocol (MCP)\u003C\u002Fa>, a standard for letting an AI agent call typed tools against a system. m18t is the \u003Cem>server\u003C\u002Fem>; your AI tool — an IDE assistant, a terminal agent, a desktop client — is the \u003Cem>client\u003C\u002Fem>.\u003C\u002Fp>\n\u003Cp>The important thing to get right up front: \u003Cstrong>there is no MCP screen inside m18t.\u003C\u002Fstrong> You don&#39;t configure agents in the Studio. All setup happens in the external client, by editing its config to add the m18t server. m18t just exposes the endpoint and checks your token on every tool call.\u003C\u002Fp>\n\u003Cp>The endpoint is \u003Ccode>https:\u002F\u002Fm18t.com\u002Fmcp\u003C\u002Fcode>. The connection handshake itself is unauthenticated, but every actual tool call is workspace-gated by the token you supply — without a valid token, an agent sees only the server&#39;s name and instructions, no data.\u003C\u002Fp>\n\u003Ch2>How to connect a client\u003C\u002Fh2>\n\u003Col>\n\u003Cli>\u003Cp>\u003Cstrong>Get your token.\u003C\u002Fstrong> Authenticate with your m18t Personal Access Token (PAT) as a Bearer token. It must belong to a user with a selected business. A PAT can expire, so expect to refresh it periodically (see the FAQ).\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\u003Cp>\u003Cstrong>Open your client&#39;s MCP config.\u003C\u002Fstrong> Every MCP client has a config file or settings panel where you register servers. The exact location varies — a terminal agent might use a \u003Ccode>claude mcp add\u003C\u002Fcode>-style command; a desktop or IDE client edits a JSON config. Check your client&#39;s own MCP docs for where its server list lives.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\u003Cp>\u003Cstrong>Add the m18t server.\u003C\u002Fstrong> Register a remote HTTP MCP server at \u003Ccode>https:\u002F\u002Fm18t.com\u002Fmcp\u003C\u002Fcode> with an \u003Ccode>Authorization: Bearer &lt;token&gt;\u003C\u002Fcode> header. The generic shape most clients accept:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-json\">{\n  &quot;mcpServers&quot;: {\n    &quot;m18t&quot;: {\n      &quot;url&quot;: &quot;https:\u002F\u002Fm18t.com\u002Fmcp&quot;,\n      &quot;headers&quot;: {\n        &quot;Authorization&quot;: &quot;Bearer YOUR_M18T_PAT_HERE&quot;\n      }\n    }\n  }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Clients that only launch local commands (not remote URLs) need an HTTP-bridge wrapper — consult your client&#39;s docs for its remote-server pattern.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\u003Cp>\u003Cstrong>Reload the client\u003C\u002Fstrong> so it re-reads its config and connects. Your client should now list m18t&#39;s tools.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\u003Cp>\u003Cstrong>Tell the agent which brand to use.\u003C\u002Fstrong> Every brand-scoped tool takes an explicit brand. Have the agent call \u003Ccode>list_brands\u003C\u002Fcode> first, then pass the right brand on each call. (If your workspace has exactly one brand, tools default to it.)\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch2>Variations\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>\u003Cstrong>Multiple brands, one connection.\u003C\u002Fstrong> You don&#39;t connect once per brand. One connection covers the whole workspace; the agent moves between brands by passing a different brand on each tool call.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Read-only by habit, not by lock.\u003C\u002Fstrong> The surface includes create and update tools, but no delete. If you want an agent to only read, instruct it to — there is no separate read-only token today.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2>FAQ\u003C\u002Fh2>\n\u003Cp>\u003Cstrong>I get a 401 \u002F &quot;access denied&quot; — what&#39;s wrong?\u003C\u002Fstrong>\nAlmost always an expired or wrong token. Your Personal Access Token may have expired. Generate a fresh PAT in m18t, copy it into your client&#39;s config, and reload. Also confirm the token belongs to a user with a selected business.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>The connection succeeds but no tools show up.\u003C\u002Fstrong>\nThe handshake works without a valid token, but the data tools stay hidden until a valid Bearer token resolves to a workspace. If you see the server but no tools, your token didn&#39;t resolve — re-check it.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Is the endpoint \u003Ccode>https:\u002F\u002Fm18t.com\u002Fmcp\u003C\u002Fcode> or \u003Ccode>mcp.m18t.com\u003C\u002Fcode>?\u003C\u002Fstrong>\nUse \u003Ccode>https:\u002F\u002Fm18t.com\u002Fmcp\u003C\u002Fcode>. The \u003Ccode>\u002Fapi\u002Fmcp\u003C\u002Fcode> path is the auth-walled app prefix and hosts no MCP handler; an \u003Ccode>mcp.m18t.com\u003C\u002Fcode> subdomain is planned but not the live endpoint.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Can I configure MCP from inside m18t?\u003C\u002Fstrong>\nNo. There is no in-app MCP UI. Setup lives entirely in your external client&#39;s config.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Why does the agent ask me which brand to use?\u003C\u002Fstrong>\nBecause every brand-scoped tool requires an explicit brand to prevent cross-brand leakage. Have the agent run \u003Ccode>list_brands\u003C\u002Fcode> and operate on the one you name.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>What&#39;s next\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"\u002Fhelp\u002Fthe-agent-first-thesis\">The Agent-First Thesis\u003C\u002Fa> — why m18t exposes this surface at all.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fhelp\u002Fprogrammatic-read-write\">Programmatic Read &amp; Write\u003C\u002Fa> — what the agent can do once connected.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fhelp\u002Fbrand-vs-business\">Brand vs. Business\u003C\u002Fa> — how brand scoping maps to your data.\u003C\u002Fli>\n\u003Cli>For \u003Ca href=\"\u002Ffor\u002Fagencies\">agencies\u003C\u002Fa> running many client brands and \u003Ca href=\"\u002Ffor\u002Ffounders\">solo operators\u003C\u002Fa> juggling side projects.\u003C\u002Fli>\n\u003C\u002Ful>\n",{"slug":9,"title":10},"agentic-workspace","Agentic Workspace (MCP)",{"meta_title":12,"meta_description":6,"keywords":13,"canonical_url":14,"og_title":5,"og_description":6,"og_image":15,"robots":16,"json_ld":17},"Connecting AI Agents via MCP | m18t Help","connect MCP client, m18t MCP endpoint, bearer token, PAT auth, external client config, brand scoping, token expiry, MCP server","https:\u002F\u002Fm18t.com\u002Fhelp\u002Fconnecting-mcp-clients","https:\u002F\u002Fm18t.com\u002Fog-default.png","index, follow",{"@context":18,"@graph":19},"https:\u002F\u002Fschema.org",[20,33,58],{"@type":21,"headline":5,"description":6,"articleSection":10,"inLanguage":22,"datePublished":23,"dateModified":23,"image":15,"author":24,"publisher":28,"mainEntityOfPage":31},"Article","en","2026-06-25",{"@type":25,"name":26,"url":27},"Organization","m18t","https:\u002F\u002Fm18t.com",{"@type":25,"name":26,"url":27,"logo":29},{"@type":30,"url":15},"ImageObject",{"@type":32,"@id":14},"WebPage",{"@type":34,"mainEntity":35},"FAQPage",[36,42,46,50,54],{"@type":37,"name":38,"acceptedAnswer":39},"Question","I get a 401 \u002F \"access denied\" — what's wrong?",{"@type":40,"text":41},"Answer","Almost always an expired or wrong token. Your Personal Access Token may have expired. Generate a fresh PAT in m18t, copy it into your client's config, and reload. Also confirm the token belongs to a user with a selected business.",{"@type":37,"name":43,"acceptedAnswer":44},"The connection succeeds but no tools show up.",{"@type":40,"text":45},"The handshake works without a valid token, but the data tools stay hidden until a valid Bearer token resolves to a workspace. If you see the server but no tools, your token didn't resolve — re-check it.",{"@type":37,"name":47,"acceptedAnswer":48},"Is the endpoint https:\u002F\u002Fm18t.com\u002Fmcp or mcp.m18t.com?",{"@type":40,"text":49},"Use https:\u002F\u002Fm18t.com\u002Fmcp. The \u002Fapi\u002Fmcp path is the auth-walled app prefix and hosts no MCP handler; an mcp.m18t.com subdomain is planned but not the live endpoint.",{"@type":37,"name":51,"acceptedAnswer":52},"Can I configure MCP from inside m18t?",{"@type":40,"text":53},"No. There is no in-app MCP UI. Setup lives entirely in your external client's config.",{"@type":37,"name":55,"acceptedAnswer":56},"Why does the agent ask me which brand to use?",{"@type":40,"text":57},"Because every brand-scoped tool requires an explicit brand to prevent cross-brand leakage. Have the agent run list_brands and operate on the one you name.",{"@type":59,"itemListElement":60},"BreadcrumbList",[61,65,69,72],{"@type":62,"position":63,"name":64,"item":27},"ListItem",1,"Home",{"@type":62,"position":66,"name":67,"item":68},2,"Help","https:\u002F\u002Fm18t.com\u002Fhelp",{"@type":62,"position":70,"name":10,"item":71},3,"https:\u002F\u002Fm18t.com\u002Fhelp\u002Fcategories\u002Fagentic-workspace",{"@type":62,"position":73,"name":5,"item":14},4,1786312172618]