PageSourceSearch

https://mailtarget.co/assets/McpPage-B2ORidb4.js

js mailtarget.co collected 2026-10-04 04:19:35 UTC 25,892 bytes, 31 lines download raw bytes

1import{r as y,j as e,B as t,a0 as h,s as r,H as d,C as c,a5 as z,a1 as u}from"./chakra-CDunVh3F.js";import{c as m,B as w,i as I,j as R,a as W}from"./index-B668W3kC.js";import{R as a}from"./Reveal-BfYfeFif.js";import{C as F}from"./check-DEiHHA5-.js";import{T as O}from"./triangle-alert-Br_ZmqHo.js";import{S as H}from"./server-CffTjcV5.js";import{S as E}from"./Seo-Dt22VC72.js";import"./native-select-4XewwLqp.js";import"./contact-C-46Ak1G.js";import{F as L}from"./Faq-CQh4W7Ye.js";import"./vendor-CHdWS0w4.js";import"./types-CRmFnEZ2.js";/**
2 * @license lucide-react v0.563.0 - ISC
3 *
4 * This source code is licensed under the ISC license.
5 * See the LICENSE file in the root directory of this source tree.
6 */const q=[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]],D=m("bot",q);/**
7 * @license lucide-react v0.563.0 - ISC
8 *
9 * This source code is licensed under the ISC license.
10 * See the LICENSE file in the root directory of this source tree.
11 */const N=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],B=m("copy",N);/**
12 * @license lucide-react v0.563.0 - ISC
13 *
14 * This source code is licensed under the ISC license.
15 * See the LICENSE file in the root directory of this source tree.
16 */const V=[["path",{d:"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",key:"1a0edw"}],["path",{d:"M12 22V12",key:"d0xqtd"}],["polyline",{points:"3.29 7 12 12 20.71 7",key:"ousv84"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}]],Y=m("package",V);/**
17 * @license lucide-react v0.563.0 - ISC
18 *
19 * This source code is licensed under the ISC license.
20 * See the LICENSE file in the root directory of this source tree.
21 */const $=[["path",{d:"M16 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z",key:"rib7q0"}],["path",{d:"M5 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z",key:"1ymkrd"}]],G=m("quote",$);/**
22 * @license lucide-react v0.563.0 - ISC
23 *
24 * This source code is licensed under the ISC license.
25 * See the LICENSE file in the root directory of this source tree.
26 */const U=[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]],J=m("terminal",U);/**
27 * @license lucide-react v0.563.0 - ISC
28 *
29 * This source code is licensed under the ISC license.
30 * See the LICENSE file in the root directory of this source tree.
31 */const Q=[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]],K=m("zap",Q),X=1600;function Z(o){const n=document.createElement("textarea");n.value=o,n.style.position="fixed",n.style.opacity="0",document.body.appendChild(n),n.select();let i=!1;try{i=document.execCommand("copy")}catch{i=!1}return document.body.removeChild(n),i}function ee({value:o,ariaLabel:n="Copy",...i}){const[l,p]=y.useState("idle"),f=y.useRef(null);y.useEffect(()=>()=>{f.current!==null&&window.clearTimeout(f.current)},[]);const T=async()=>{let x=!1;try{navigator.clipboard?.writeText&&(await navigator.clipboard.writeText(o),x=!0)}catch{x=!1}x||(x=Z(o)),p(x?"copied":"error"),f.current=window.setTimeout(()=>p("idle"),X)},v=l==="copied"?e.jsx(F,{size:15}):l==="error"?e.jsx(O,{size:15}):e.jsx(B,{size:15}),M=l==="copied"?"color.tone.green":l==="error"?"color.tone.red":"color.tertiary",A=l==="copied"?"Copied":l==="error"?"Copy failed":n;return e.jsx(t,{as:"button",type:"button","aria-label":A,onClick:T,flexShrink:0,w:"32px",h:"32px",borderRadius:"radius.minimal",border:"1px solid",borderColor:"border.gray",bg:"bg.primary",display:"flex",alignItems:"center",justifyContent:"center",color:M,cursor:"pointer",transition:"background 0.15s, color 0.15s, border-color 0.15s",_hover:{bg:"bg.secondary",color:"color.brand.blue",borderColor:"border.bold"},...i,children:v})}function b({title:o,lead:n}){return e.jsxs(a,{maxW:"2xl",mb:{base:"10",md:"14"},children:[e.jsx(h,{as:"h2",fontSize:"fs.3xl",fontWeight:"fw.bold",lineHeight:"48px",color:"color.primary",mb:n?"3":"0",children:o}),n&&e.jsx(r,{fontSize:"fs.lg",lineHeight:"lh.lg",color:"color.tert
31iary",children:n})]})}function s({children:o}){return e.jsx(r,{as:"code",fontFamily:"'SF Mono', 'Consolas', monospace",fontSize:"0.85em",bg:"bg.muted",px:"1.5",py:"0.5",borderRadius:"4px",children:o})}function S({filename:o,lines:n}){return e.jsxs(t,{bg:"#0d0d0d",border:"1px solid",borderColor:"border.soft-gray.dark",borderRadius:"radius.lg",overflow:"hidden",children:[e.jsxs(d,{gap:"1.5",px:"4",py:"2.5",borderBottom:"1px solid",borderColor:"border.soft-gray.dark",bg:"bg.secondary.dark",children:[e.jsx(t,{w:"10px",h:"10px",borderRadius:"full",bg:"#ff5f56"}),e.jsx(t,{w:"10px",h:"10px",borderRadius:"full",bg:"#ffbd2e"}),e.jsx(t,{w:"10px",h:"10px",borderRadius:"full",bg:"#27c93f"}),e.jsx(r,{fontFamily:"'SF Mono', 'Consolas', monospace",fontSize:"11px",color:"color.tertiary.dark",ml:"2",children:o})]}),e.jsx(t,{as:"pre",p:"4",m:"0",overflowX:"auto",fontFamily:"'SF Mono', 'Consolas', monospace",fontSize:"13px",lineHeight:"1.9",children:n.map((i,l)=>{const p=typeof i!="string";return e.jsx(t,{as:"div",color:p?"#64748B":"#E2E8F0",whiteSpace:"pre-wrap",children:p?i.comment:i},l)})})]})}const oe="https://www.npmjs.com/package/@mailtarget/mcp?utm_source=website&utm_medium=integration-page&utm_campaign=mcp-page&utm_content=hero&utm_term=view-npm";function re(){return e.jsxs(t,{bg:"bg.primary",border:"1px solid",borderColor:"border.gray",borderRadius:"radius.lg",p:"6",boxShadow:"0 32px 32px 0 rgba(17,24,39,.04), 0 16px 16px 0 rgba(17,24,39,.04), 0 8px 8px 0 rgba(17,24,39,.04), 0 4px 4px 0 rgba(17,24,39,.04)",children:[e.jsxs(z,{templateColumns:"1fr 1fr",gap:"4",children:[e.jsxs(t,{border:"1px solid",borderColor:"border.gray",borderRadius:"radius.lg",p:"4",children:[e.jsx(r,{fontSize:"13px",fontWeight:"fw.semi-bold",color:"color.brand.blue",mb:"1",children:"Transmission API"}),e.jsxs(r,{fontSize:"12.5px",color:"color.tertiary",lineHeight:"1.5",children:["Sending only. Powers ",e.jsx(s,{children:"mailtarget_send_email"}),"."]})]}),e.jsxs(t,{border:"1px solid",borderColor:"border.gray",borderRadius:"radius.lg",p:"4",children:[e.jsx(r,{fontSize:"13px",fontWeight:"fw.semi-bold",color:"color.brand.blue",mb:"1",children:"Open API"}),e.jsx(r,{fontSize:"12.5px",color:"color.tertiary",lineHeight:"1.5",children:"Everything else: templates, domains, contacts."})]})]}),e.jsx(t,{display:"flex",alignItems:"center",justifyContent:"center",py:"2",color:"color.tertiary",children:e.jsx(R,{size:18})}),e.jsxs(d,{mt:"2",bg:"color.primary",color:"white",borderRadius:"radius.lg",p:"4",gap:"2.5",children:[e.jsx(t,{color:"color.brand.blue",flexShrink:0,children:e.jsx(D,{size:18})}),e.jsx(r,{fontSize:"13px",fontWeight:"fw.semi-bold",children:"One MCP connection"})]})]})}function te(){return e.jsx(t,{bgGradient:"to-b",gradientFrom:"#EBF8FF",gradientTo:"bg.primary",py:{base:"14",md:"24"},children:e.jsx(c,{maxW:"7xl",children:e.jsxs(z,{templateColumns:{base:"1fr",lg:"56fr 44fr"},gap:{base:"10",lg:"14"},alignItems:"center",children:[e.jsxs(a,{children:[e.jsx(t,{display:"inline-flex",alignItems:"center",bg:"rgba(15,155,220,.08)",border:"1px solid rgba(15,155,220,.28)",color:"color.brand.blue",fontSize:"12px",fontWeight:"fw.semi-bold",letterSpacing:"wider",textTransform:"uppercase",px:"3",py:"1",borderRadius:"full",mb:"6",children:"MCP Integration"}),e.jsxs(h,{as:"h1",fontSize:"fs.hero",fontWeight:"fw.bold",lineHeight:"lh.hero",letterSpacing:"-0.5px",color:"color.primary",mb:"4",children:["One MCP Server, ",e.jsx("br",{})," Two Mailtarget APIs"]}),e.jsx(r,{fontSize:"fs.lg",lineHeight:"lh.lg",color:"color.tertiary",maxW:"lg",mb:"6",children:"Point Claude, Cursor or any stdio MCP client at your Mailtarget account. Same production API, same production data, one new entry point."}),e.jsxs(d,{gap:"3",flexWrap:"wrap",mb:"6",children:[e.jsx(w,{as:"a",href:"#install",variant:"primary",btnSize:"lg",children:"Integrate now"}),e.jsx(w,{as:"a",href:oe,target:"_blank",rel:"noopener noreferrer",variant:"outline",btnSize:"lg",children:"View on npm"})]}),e.jsxs(d,{gap:"4",flexWrap:"wrap",children:[e.jsxs(d,{gap:"1.5",fontSize:"fs.sm",color:"color.tertiary",children:[e.jsx(I,{size:16}),e.jsx(r,{as:"span",children:"Claude, Cursor & etc."})]}),e.jsx(t,{w:"4px",h:"4px",borderRadius:"full",bg:"border.gray"}
31),e.jsxs(d,{gap:"1.5",fontSize:"fs.sm",color:"color.tertiary",children:[e.jsx(K,{size:16}),e.jsx(r,{as:"span",children:"Many tools, one package"})]})]})]}),e.jsx(a,{index:1,children:e.jsx(re,{})})]})})})}const ne="https://docs.mailtarget.co/guides/mcp/mcp-installation?utm_source=website&utm_medium=integration-page&utm_campaign=mcp-page&utm_content=guide-crosslink&utm_term=full-guide";function j({index:o,title:n,description:i,isLast:l,children:p}){return e.jsxs(t,{position:"relative",pl:{base:"14",md:"16"},pb:l?"0":{base:"10",md:"12"},pt:"1",children:[!l&&e.jsx(t,{position:"absolute",left:"19px",top:"40px",bottom:"0",w:"2px",bg:"border.gray"}),e.jsx(t,{position:"absolute",left:"0",top:"0",w:"40px",h:"40px",borderRadius:"full",bg:"color.brand.blue",color:"white",display:"flex",alignItems:"center",justifyContent:"center",fontFamily:"'SF Mono', 'Consolas', monospace",fontSize:"15px",fontWeight:"fw.bold",boxShadow:"0 0 0 4px var(--chakra-colors-bg-primary)",children:o}),e.jsx(h,{as:"h3",fontSize:"17px",fontWeight:"fw.semi-bold",color:"color.primary",letterSpacing:"-0.1px",mb:"1",children:n}),e.jsx(r,{fontSize:"15px",color:"color.tertiary",lineHeight:"1.6",mb:"4",children:i}),p]})}function ie(){return e.jsx(t,{id:"install",scrollMarginTop:"var(--sticky-header-h, 80px)",py:{base:"14",md:"20"},children:e.jsxs(c,{maxW:"6xl",children:[e.jsx(b,{title:"How to Integrate",lead:"Three steps. No build step, no separate install per client."}),e.jsxs(t,{maxW:"760px",children:[e.jsx(a,{children:e.jsx(j,{index:1,title:"Try it, no install",description:"Run it directly with npx. Works with any stdio MCP client.",children:e.jsx(S,{filename:"Terminal",lines:[{comment:"# Works with any stdio MCP client"},"npx -y @mailtarget/mcp mailtarget-mcp"]})})}),e.jsx(a,{index:1,children:e.jsx(j,{index:2,title:"Register it with your client",description:"Add it once and it's available in every session from then on.",children:e.jsx(S,{filename:"Claude Code",lines:["claude mcp add mailtarget --scope user \\","  -- npx -y @mailtarget/mcp mailtarget-mcp"]})})}),e.jsx(a,{index:2,children:e.jsx(j,{index:3,title:"Connect your account",description:"You'll be prompted for your Transmission and Open API keys the first time you call a tool that needs them.",isLast:!0,children:e.jsxs(t,{border:"1px dashed",borderColor:"border.gray",borderRadius:"radius.lg",p:"4",fontSize:"14px",color:"color.tertiary",children:[e.jsx(s,{children:"list_endpoints"})," and ",e.jsx(s,{children:"describe_endpoint"})," work before that, with no keys at all."]})})})]}),e.jsxs(a,{index:3,display:"flex",gap:"6",alignItems:"center",justifyContent:"space-between",flexWrap:"wrap",border:"1px solid",borderColor:"border.gray",borderRadius:"radius.lg",bg:"bg.secondary",px:{base:"6",md:"8"},py:"6",mt:{base:"10",md:"14"},children:[e.jsxs(t,{children:[e.jsx(r,{fontFamily:"'SF Mono', 'Consolas', monospace",fontSize:"11px",fontWeight:"fw.semi-bold",letterSpacing:"wider",textTransform:"uppercase",color:"color.brand.blue",mb:"1",children:"Full guide"}),e.jsxs(r,{fontSize:"fs.md",color:"color.tertiary",children:[e.jsx(r,{as:"span",color:"color.primary",fontWeight:"fw.semi-bold",children:"More setup options and the full tool reference:"}),e.jsx("br",{}),"JSON config blocks for Claude Desktop, Cursor, and every other MCP client."]})]}),e.jsx(w,{as:"a",href:ne,target:"_blank",rel:"noopener noreferrer",variant:"outline",btnSize:"md",children:"Read the full guide"})]})]})})}const se=[{num:"4",label:"Tools, one package"},{num:"2",label:"APIs, kept separate"},{num:"0",label:"Keys needed to explore"}];function ae(){return e.jsx(t,{bg:"bg.primary",borderTop:"1px solid",borderBottom:"1px solid",borderColor:"border.gray",py:{base:"10",md:"12"},children:e.jsx(c,{maxW:"6xl",children:e.jsx(u,{columns:{base:1,sm:3},gap:"8",textAlign:"center",children:se.map((o,n)=>e.jsxs(a,{index:n,px:"6",borderLeft:n>0?{base:"none",sm:"1px solid"}:"none",borderColor:{base:"border.gray",sm:"border.gray"},children:[e.jsx(r,{fontSize:"36px",fontWeight:"fw.bold",lineHeight:"44px",letterSpacing:"-0.3px",color:"color.brand.blue",children:o.num}),e.jsx(r,{fontSize:"fs.md",fontWeight:"fw.semi-bold",color:"color.primary",mt:"1",children:o.label})]},o.label))})})})}const le=['Call the Open API and list every endpoint tagged "contacts."',"Describe the request body for the domain verification endpoint.","Run a POST to create a new template, then show me the raw response."],de=["Pull this week's delivery and bounce rate, then chart it by day.","Add a new contact to my audience with their name and email.","Send a welcome email to [email protected] using our onboarding template."];function ce({prompt:o}
31){return e.jsxs(d,{align:"flex-start",gap:"3",bg:"bg.primary",border:"1px solid",borderColor:"border.gray",borderRadius:"radius.lg",p:"4",mb:"3",transition:"box-shadow 0.2s, transform 0.2s",_hover:{boxShadow:"0 32px 32px 0 rgba(17,24,39,.04), 0 16px 16px 0 rgba(17,24,39,.04), 0 2px 2px 0 rgba(17,24,39,.04)",transform:"translateY(-2px)"},children:[e.jsx(t,{color:"border.bold",mt:"0.5",flexShrink:0,children:e.jsx(G,{size:18})}),e.jsx(r,{flex:"1",fontSize:"15px",color:"color.primary",lineHeight:"1.6",children:o}),e.jsx(ee,{value:o,ariaLabel:"Copy prompt"})]})}function C({heading:o,prompts:n}){return e.jsxs(t,{children:[e.jsxs(d,{gap:"2",mb:"4",children:[e.jsx(t,{w:"8px",h:"8px",borderRadius:"full",bg:"color.brand.blue"}),e.jsx(r,{fontSize:"14px",fontWeight:"fw.semi-bold",letterSpacing:"wider",textTransform:"uppercase",color:"color.primary",children:o})]}),n.map(i=>e.jsx(ce,{prompt:i},i))]})}function pe(){return e.jsx(t,{bg:"bg.secondary",py:{base:"14",md:"20"},children:e.jsxs(c,{maxW:"6xl",children:[e.jsx(b,{title:"What this looks like in practice",lead:"Same four tools, two different ways people end up using them."}),e.jsxs(u,{columns:{base:1,md:2},gap:{base:"8",md:"10"},children:[e.jsx(a,{children:e.jsx(C,{heading:"If you're writing code",prompts:le})}),e.jsx(a,{index:1,children:e.jsx(C,{heading:"If you're sending or reporting",prompts:de})})]}),e.jsx(r,{fontSize:"13px",color:"color.tertiary",mt:{base:"6",md:"8"},children:"The chart prompt is worth calling out: the dashboard shows fixed views, so asking your assistant for a specific cut of the data is a fast option when the dashboard doesn't have a page for it."})]})})}const me=[{tag:"No key required",title:"Read the spec, no account needed",description:e.jsxs(e.Fragment,{children:[e.jsx(s,{children:"mailtarget_list_endpoints"})," and ",e.jsx(s,{children:"mailtarget_describe_endpoint"})," read the bundled OpenAPI specification directly. No key, no network call."]}),tools:["list_endpoints","describe_endpoint"]},{tag:"Both keys required",title:"Acting on your live account",description:e.jsxs(e.Fragment,{children:[e.jsx(s,{children:"mailtarget_call_endpoint"})," and ",e.jsx(s,{children:"mailtarget_send_email"})," act on production, through the same Transmission and Open API your integration already uses. No sandbox mode."]}),tools:["call_endpoint","send_email"]}];function xe(){return e.jsx(t,{py:{base:"14",md:"20"},children:e.jsxs(c,{maxW:"6xl",children:[e.jsx(b,{title:"What works without your keys, and what doesn't"}),e.jsx(u,{columns:{base:1,md:2},gap:"5",children:me.map((o,n)=>e.jsxs(a,{index:n,bg:"bg.primary",border:"1px solid",borderColor:"border.gray",borderRadius:"radius.lg",p:{base:"6",md:"8"},transition:"box-shadow 0.2s, transform 0.2s",_hover:{boxShadow:"0 32px 32px 0 rgba(17,24,39,.04), 0 16px 16px 0 rgba(17,24,39,.04), 0 2px 2px 0 rgba(17,24,39,.04)",transform:"translateY(-2px)"},children:[e.jsx(r,{display:"inline-block",fontSize:"11px",fontWeight:"fw.semi-bold",letterSpacing:"wider",textTransform:"uppercase",color:"color.brand.blue",bg:"rgba(15,155,220,.08)",px:"2.5",py:"1",borderRadius:"full",mb:"4",children:o.tag}),e.jsx(r,{fontSize:"fs.xl",fontWeight:"fw.semi-bold",color:"color.primary",letterSpacing:"-0.1px",mb:"2",children:o.title}),e.jsx(r,{fontSize:"15px",color:"color.tertiary",lineHeight:"1.65",mb:"4",children:o.description}),e.jsx(d,{gap:"2",flexWrap:"wrap",children:o.tools.map(i=>e.jsx(s,{children:i},i))})]},o.title))})]})})}function g({children:o,bg:n="color.neutral.20",color:i="color.neutral.60"}){return e.jsx(r,{as:"code",fontFamily:"'SF Mono', 'Consolas', monospace",fontSize:"0.85em",bg:n,color:i,px:"1.5",py:"0.5",borderRadius:"4px",children:o})}const he=[{key:"Sending key",title:"Transmission API",description:e.jsxs(e.Fragment,{children:["Authenticates sending only. This is the key ",e.jsx(g,{children:"mailtarget_send_email"})," uses, and nothing else on this list touches it."]})},{key:"Platform key",title:"Open API",description:e.jsxs(e.Fragment,{children:["Authenticates everything that isn't sending: templates, domains, contacts, and the rest of the surface ",e.jsx(g,{children:"mailtarget_call_endpoint"})," can reach."]})}];function ue(){return e.jsx(t,{bg:"bg.invert",py:{base:"14",md:"20"},children:e.jsxs(c,{maxW:"6xl",children:[e.jsxs(a,{maxW:"680px",mb:{base:"10",md:"14"},children:[e.jsx(h,{as:"h2",fontSize:"fs.3xl",fontWeight:"fw.bold",lineHeight:"48px",color:"white",mb:"3",children:"Two products, two keys, kept apart on purpose"}),e.jsx(r,{fontSize:"fs.lg",lineHeight:"lh.lg",color:"color.neutral.50",children:"A 
31key issued for one host is rejected on the other. That separation is deliberate, not a limitation to work around."})]}),e.jsx(u,{columns:{base:1,md:2},gap:"4",mb:{base:"8",md:"10"},children:he.map((o,n)=>e.jsxs(a,{index:n,bg:"rgba(255,255,255,.04)",border:"1px solid",borderColor:"color.neutral.70",borderRadius:"radius.lg",p:{base:"6",md:"8"},transition:"border-color 0.2s",_hover:{borderColor:"rgba(15,155,220,.35)"},children:[e.jsx(r,{fontFamily:"'SF Mono', 'Consolas', monospace",fontSize:"11px",fontWeight:"fw.semi-bold",letterSpacing:"wider",textTransform:"uppercase",color:"color.brand.blue",mb:"2",children:o.key}),e.jsx(r,{fontSize:"fs.xl",fontWeight:"fw.semi-bold",color:"white",mb:"2",children:o.title}),e.jsx(r,{fontSize:"15px",color:"color.neutral.50",lineHeight:"1.7",children:o.description})]},o.title))}),e.jsxs(r,{fontSize:"fs.sm",color:"color.neutral.50",borderTop:"1px solid",borderColor:"color.neutral.70",pt:"4",children:["Both read-only tools, ",e.jsx(g,{bg:"color.neutral.70",color:"color.neutral.30",children:"list_endpoints"})," and ",e.jsx(g,{bg:"color.neutral.70",color:"color.neutral.30",children:"describe_endpoint"}),", need neither key. They work directly from the bundled spec."]})]})})}const k=[{num:"01",name:"mailtarget_list_endpoints",description:"Browse everything available, filterable by tag, so you know what exists before you commit to a call."},{num:"02",name:"mailtarget_describe_endpoint",description:"Check the parameters and body shape of one endpoint before you run it against a live account."},{num:"03",name:"mailtarget_call_endpoint",description:"Execute any endpoint on the Open API directly from your assistant, using the same production surface as a direct integration."},{num:"04",name:"mailtarget_send_email",description:"Send transactional email in one step through the Transmission API, without looking up an endpoint first."}],be="https://docs.mailtarget.co/guides/mcp/mcp-tools?utm_source=website&utm_medium=integration-page&utm_campaign=mcp-page&utm_content=tools-section&utm_term=tools-reference";function ge(){return e.jsx(t,{py:{base:"14",md:"20"},children:e.jsxs(c,{maxW:"6xl",children:[e.jsx(b,{title:"Four tools, mapped to what you're trying to do",lead:"One package, generated from the same spec that runs in production."}),e.jsx(t,{children:k.map((o,n)=>e.jsxs(t,{display:"grid",gridTemplateColumns:"48px 1fr",gap:"4",py:{base:"5",md:"8"},borderBottom:n<k.length-1?"1px solid":"none",borderColor:"border.gray",children:[e.jsx(r,{fontFamily:"'SF Mono', 'Consolas', monospace",fontSize:"14px",fontWeight:"fw.semi-bold",color:"color.tertiary",mt:"1",children:o.num}),e.jsxs(t,{children:[e.jsx(h,{as:"h3",fontFamily:"'SF Mono', 'Consolas', monospace",fontSize:"15px",fontWeight:"fw.semi-bold",color:"color.primary",mb:"1.5",children:o.name}),e.jsx(r,{fontSize:"15px",color:"color.tertiary",lineHeight:"1.65",children:o.description})]})]},o.name))}),e.jsx(r,{display:"inline-block",mt:"6",fontSize:"13px",color:"color.tertiary",bg:"bg.muted",px:"3.5",py:"1.5",borderRadius:"full",children:"Tools 01 and 02 need no key. Tools 03 and 04 need the key for the host they touch."}),e.jsxs(r,{fontSize:"13px",color:"color.tertiary",mt:"4",children:["Full endpoint list and tool parameters:"," ",e.jsx(r,{as:"a",href:be,target:"_blank",rel:"noopener noreferrer",color:"color.brand.blue",textDecoration:"none",_hover:{textDecoration:"underline"},children:"tools and endpoint reference"}),"."]})]})})}const fe=[{icon:J,title:"CLI",description:e.jsxs(e.Fragment,{children:["Run ",e.jsx(s,{children:"list"}),", ",e.jsx(s,{children:"describe"}),", ",e.jsx(s,{children:"call"}),", and ",e.jsx(s,{children:"send"})," straight from your terminal. Good for scripts, CI tasks, and quick checks."]})},{icon:H,title:"MCP Server",description:"The same four tools, exposed to any stdio MCP client: Claude Code, Claude Desktop, or a compatible assistant."},{icon:Y,title:"Library",description:e.jsxs(e.Fragment,{children:["Import functions like ",e.jsx(s,{children:"sendTransmission"})," and ",e.jsx(s,{children:"callOperation"})," directly into your own Node.js application."]})}];function ye(){return e.jsx(t,{bg:"bg.secondary",py:{base:"14",md:"20"},children:e.jsxs(c,{maxW:"6xl",children:[e.jsx(b,{title:"Three ways to run the same package",lead:"The MCP server is one entry point. It isn't the only one."}),e.jsx(u,{columns:{base:1,md:3},gap:"5",children:fe.map((o,n)=>e.jsxs(a,{index:n,bg:"bg.primary",border:"1px solid",borderColor:"border.gray",borderRadius:"radius.lg",p:{base:"6",md:"7"},transition:"box-shadow 0.2s, transform 0.2s",_hover:{boxShadow:"0 32px 32px 0 rgba(17,24,39,.04), 0 16px 16px 0 rgba(17,24,39,.04), 0 2px 2px 0 rgba(17,24,39,.04)",transform:"translateY(-2px)"},children:[e.jsx(t,{w:"40px",h:"40px",borderRadius:"radius.lg",bg:"rgba(15,155,220,.1)",color:"color.brand.blue",display:"flex",alignItems:"center",justifyContent:"center",mb:"4",boxShadow:"0 8px 8px 0 rgba(0,0,0,.08), 0 2px 4px 0 rgba(0,0,0,.16)",children:e.jsx(o.icon,{size:20})}),e.jsx(r,{fontSize:"fs.lg",fontWeight:"fw.semi-bold",color:"color.primary",mb:"1.5",children:o.title}
31),e.jsx(r,{fontSize:"15px",color:"color.tertiary",lineHeight:"1.6",children:o.description})]},o.title))}),e.jsx(r,{fontSize:"13px",color:"color.tertiary",mt:{base:"6",md:"8"},children:"All three ship in the same npm package, with TypeScript declarations generated before every publish."})]})})}const _="https://mailtarget.co",P=[{question:"What is Mailtarget MCP?",answer:"Mailtarget MCP is an MCP server that connects both the Transmission API and the Open API to AI coding assistants such as Claude Code, Claude Desktop, and Cursor, so you can explore endpoints, call the API, and send email without switching to a dashboard."},{question:"Do both API keys work the same way?",answer:"No. Your Transmission API key is only used for sending. Your Open API key covers everything else, including templates, domains, and contacts. A key issued for one host is rejected on the other."},{question:"Can I explore it before registering?",answer:"Yes. mailtarget_list_endpoints and mailtarget_describe_endpoint read the bundled OpenAPI specification directly, with no key and no network call, so you can look around before you decide to sign up."},{question:"Is it safe to run against my production account?",answer:"mailtarget_call_endpoint and mailtarget_send_email act on your live account, including any request that mutates data. There is no sandbox mode, so treat them the way you would treat direct API access."},{question:"Which AI clients does it support?",answer:"Any MCP client that supports stdio servers, including Claude Code and Claude Desktop. Setup follows the same JSON configuration pattern used by other MCP servers."}];function Ie(){W();const o={"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:[{"@type":"ListItem",position:1,name:"Home",item:`${_}/`},{"@type":"ListItem",position:2,name:"MCP",item:`${_}/mcp`}]},n={"@context":"https://schema.org","@type":"FAQPage",mainEntity:P.map(i=>({"@type":"Question",name:i.question,acceptedAnswer:{"@type":"Answer",text:i.answer}}))};return e.jsxs(e.Fragment,{children:[e.jsxs(E,{title:"MCP: Two APIs, One Command Line",description:"Mailtarget MCP bridges the Transmission API and the Open API into Claude Code, Claude Desktop, and any MCP client. Four tools, one npm package.",ogDescription:"Mailtarget MCP bridges the Transmission API and the Open API into Claude Code, Claude Desktop, and any MCP client. Four tools, one npm package.",canonical:"/mcp",children:[e.jsx("script",{type:"application/ld+json",children:JSON.stringify(o)}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify(n)})]}),e.jsxs(t,{children:[e.jsx(te,{}),e.jsx(ie,{}),e.jsx(ae,{}),e.jsx(pe,{}),e.jsx(xe,{}),e.jsx(ue,{}),e.jsx(ge,{}),e.jsx(ye,{}),e.jsx(L,{title:"Common questions",items:P})]})]})}export{Ie as McpPage};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.