Skip to main content
Glama
closermethod

EMEA Compliance MCP

get_outreach_template

Retrieve a country- and channel-specific outreach template calibrated to local cultural norms and compliance requirements for EMEA markets.

Instructions

Get a country-specific, channel-specific outreach template (cold email, LinkedIn DM, InMail, follow-ups, breakup). Templates are calibrated to local norms — formal address for Germany, French language for France, direct yes/no for Netherlands, etc.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
countryYes
channelYes

Implementation Reference

  • src/main.ts:875-891 (registration)
    Tool registration in ListToolsRequestSchema handler: declares tool name, description, and inputSchema with country and channel enums.
    {
      name: "get_outreach_template",
      description: "Get a country-specific, channel-specific outreach template (cold email, LinkedIn DM, InMail, follow-ups, breakup). Templates are calibrated to local norms — formal address for Germany, French language for France, direct yes/no for Netherlands, etc.",
      inputSchema: {
        type: "object",
        properties: {
          country: {
            type: "string",
            enum: ["uk", "ireland", "spain", "germany", "france", "netherlands", "nordics"]
          },
          channel: {
            type: "string",
            enum: ["cold_email", "linkedin_dm", "linkedin_inmail", "follow_up_day_3", "follow_up_day_7", "breakup"]
          }
        },
        required: ["country", "channel"]
      }
  • Handler in CallToolRequestSchema: extracts country/channel args, looks up OUTREACH_TEMPLATES data, returns JSON with template body/psychology and compliance reminder.
    case "get_outreach_template": {
      const country = args?.country as string;
      const channel = args?.channel as string;
      const countryTemplates = OUTREACH_TEMPLATES[country];
      if (!countryTemplates) throw new Error(`Unknown country: ${country}`);
      const template = countryTemplates[channel];
      if (!template) throw new Error(`Unknown channel '${channel}' for country '${country}'`);
      return {
        content: [{
          type: "text",
          text: JSON.stringify({
            module: "EMEA Outreach Template",
            country,
            channel,
            ...template,
            country_compliance_reminder: COMPLIANCE_CHECKS[country as keyof typeof COMPLIANCE_CHECKS]?.required_in_outreach || []
          }, null, 2)
        }]
      };
    }
  • Data store: OUTREACH_TEMPLATES constant containing all country and channel templates with subject (optional), body text, and psychology explanation.
    const OUTREACH_TEMPLATES: Record<string, Record<string, { subject?: string; body: string; psychology: string }>> = {
      uk: {
        cold_email: {
          subject: "Quick question about [Company]'s [specific initiative]",
          body: `Hi [Name],
    
    I came across [Company] while researching [their industry] — specifically noticed [specific observation: ad campaign, hiring push, product launch].
    
    I work with companies like yours on [specific outcome with a number where possible]. Worth a brief call to see if there's a fit?
    
    Happy to keep it to 20 minutes.
    
    Best,
    [Your name]`,
          psychology: "Specific, time-respecting, British understated. No superlatives."
        },
        linkedin_dm: {
          body: `Hi [Name] — I noticed [Company] recently [specific trigger]. I've helped similar businesses with [outcome]. Would it be useful to share what's worked? No pitch, just a quick exchange.`,
          psychology: "Permission-based, specific, low-friction."
        },
        linkedin_inmail: {
          subject: "Brief — [specific topic]",
          body: `Hi [Name],
    
    I'll keep this short. [Specific observation about Company]. I help similar B2B companies with [outcome] — recent example: [Company X] saw [result] in [timeframe].
    
    If this is on your radar, happy to share more. If not, no worries.
    
    [Your name]`,
          psychology: "Lead with proof, give an out, respect time."
        },
        follow_up_day_3: {
          body: `Apologies for the follow-up — just wanted to make sure this didn't get lost. Happy to adjust the approach if this isn't the right time.`,
          psychology: "Soft, polite, gives them an out without losing the lead."
        },
        follow_up_day_7: {
          body: `Closing the loop — if this becomes relevant later, the offer stands. Good luck with [specific thing].`,
          psychology: "Clean exit. Often triggers a 'wait — actually' response."
        },
        breakup: {
          subject: "Closing the loop",
          body: `Hi [Name], I've reached out a couple of times about [topic]. Haven't heard back, so I'll assume the timing isn't right. If [problem you solve] becomes a priority later, feel free to reach out. Best of luck with [Company].`,
          psychology: "Respectful, no guilt-trip. UK norms favor this exit."
        }
      },
      ireland: {
        cold_email: {
          subject: "[Mutual connection / local reference] — quick intro",
          body: `Hi [Name],
    
    I came across you through [mutual connection / Dublin tech event / specific community].
    
    I work with companies in the Irish tech ecosystem on [outcome] — would love to connect if it makes sense. No rush on your end.
    
    [Your name]`,
          psychology: "Warm, relationship-anchored, no-pressure. Mentions Dublin context."
        },
        linkedin_dm: {
          body: `Hi [Name] — I've been following [Company]'s growth — really impressive what the team has built. I work with a few companies in a similar space and thought there might be something worth a conversation. Happy to grab a virtual coffee if you're open to it.`,
          psychology: "Compliment + soft invitation + 'coffee' framing."
        },
        linkedin_inmail: {
          subject: "From one [Dublin/Cork/Galway] connection to another",
          body: `Hi [Name],
    
    [Mutual connection] mentioned you might be interested in [topic]. I work with Irish tech companies on [outcome] — recently helped [Company] with [result].
    
    Open to a 15-min chat?
    
    [Your name]`,
          psychology: "Warm intro template. Social proof from mutual connection."
        },
        follow_up_day_3: {
          body: `Hi [Name] — just floating this back up in case it got lost. No pressure either way.`,
          psychology: "Light, relationship-respecting."
        },
        follow_up_day_7: {
          body: `Hi [Name] — last note from me on this. If timing's not right, totally understand. Door's always open.`,
          psychology: "Warm exit, leaves relationship intact."
        },
        breakup: {
          subject: "All good — closing the loop",
          body: `Hi [Name], I'll stop knocking — clearly not the right moment. If [topic] becomes relevant down the road, you know where to find me. Best with [Company].`,
          psychology: "Friendly, low-pressure exit."
        }
      },
      spain: {
        cold_email: {
          subject: "[Company] + [Your Value Prop] — vale la pena una llamada?",
          body: `Hola [Name],
    
    I've been following [Company]'s [growth/expansion/initiative] and thought there might be a fit with what I do.
    
    I work with [similar companies] on [outcome]. Would a quick call make sense? Happy to be flexible on timing.
    
    Saludos,
    [Your name]`,
          psychology: "Hola opener acknowledges culture. Patient close."
        },
        linkedin_dm: {
          body: `Hola [Name] — I came across [Company] and was impressed by [specific thing]. I work with international companies entering / growing in Spain on [outcome]. ¿Te interesaría conectar?`,
          psychology: "Bilingual hello + sí/no question."
        },
        linkedin_inmail: {
          subject: "Hola [Name] — quick question",
          body: `Hi [Name],
    
    I work with companies in [their industry] across the Spanish market. Noticed [Company] is [specific observation] — there might be a fit with what I do.
    
    Open to a brief conversation? Available across CET timezone.
    
    Un saludo,
    [Your name]`,
          psychology: "Hola opener, but main body in English (works for Barcelona international scene)."
        },
        follow_up_day_3: {
          body: `Hola [Name] — just floating this back up. Completely understand if the timing's off.`,
          psychology: "Patient, no-pressure. Spanish norms tolerate multiple touches."
        },
        follow_up_day_7: {
          body: `Hi [Name] — happy to keep this open. I'll be in [Madrid/Barcelona] in [timeframe] if face-to-face would help.`,
          psychology: "Mentions in-person — Spaniards value real meetings."
        },
        breakup: {
          subject: "Cerrando el bucle",
          body: `Hola [Name], stepping back — clearly not the right window. Door's open whenever. Suerte con [Company].`,
          psychology: "Spanish opener acknowledges respect for the relationship."
        }
      },
      germany: {
        cold_email: {
          subject: "[Specific topic] — Anfrage",
          body: `Sehr geehrte/r Herr/Frau [Last Name],
    
    I am reaching out because [specific, research-backed reason]. I work with companies in [industry] on [outcome] and believe there may be a relevant opportunity for [Company].
    
    I would welcome the opportunity to schedule a brief call at your convenience. Please find attached [relevant document or case study].
    
    Mit freundlichen Grüßen,
    [Your name]
    [Your title]
    [Company name]
    [Contact details]
    [Impressum / legal notice if applicable]`,
          psychology: "Formal, documented, includes proof. Impressum signals compliance literacy."
        },
        linkedin_dm: {
          body: `Sehr geehrte/r Herr/Frau [Last Name], I noted [Company]'s [specific initiative]. We work with similar B2B companies on [outcome with metric]. I'd appreciate the opportunity for a brief professional discussion. Vielen Dank.`,
          psychology: "Formal, specific, modest in claim."
        },
        linkedin_inmail: {
          subject: "[Specific topic] — Geschäftsanfrage",
          body: `Sehr geehrte/r Herr/Frau [Last Name],
    
    [One sentence on specific observation about Company]. We help [industry] companies with [outcome]. Documentation: [link to case study with specific German company if possible].
    
    I would be grateful for the opportunity for a brief conversation.
    
    Mit freundlichen Grüßen,
    [Your name]
    [Title], [Company]
    GDPR-compliant. Datenschutzerklärung: [link]`,
          psychology: "Formal address + immediate compliance signal."
        },
        follow_up_day_3: {
          body: `Sehr geehrte/r Herr/Frau [Last Name], I am following up on my previous message regarding [topic]. I remain available should you wish to discuss further. Mit freundlichen Grüßen, [Your name]`,
          psychology: "Formal, patient, no pressure."
        },
        follow_up_day_7: {
          body: `Sehr geehrte/r Herr/Frau [Last Name], my final note on this. I am happy to provide any additional documentation that would be helpful. Otherwise, I wish you continued success with [Company]. Mit freundlichen Grüßen.`,
          psychology: "Formal exit, offer to provide more docs."
        },
        breakup: {
          subject: "Letzter Hinweis",
          body: `Sehr geehrte/r Herr/Frau [Last Name], understanding the timing isn't right. Should our offering become relevant in the future, we remain available. Mit freundlichen Grüßen.`,
          psychology: "Professional, formal, no emotion."
        }
      },
      france: {
        cold_email: {
          subject: "[Company] — une question rapide",
          body: `Bonjour [Name],
    
    J'ai été en train de suivre [Company] et étais particulièrement intéressé(e) par [specific observation in their domain].
    
    I work with companies like yours on [outcome]. Would a brief call make sense?
    
    Je vous souhaite une excellente journée.
    
    Cordialement,
    [Your name]`,
          psychology: "French opener + body bilingual works for Paris tech. Pure French if traditional industry."
        },
        linkedin_dm: {
          body: `Bonjour [Name] — j'ai remarqué [specific thing about Company]. Je travaille avec des entreprises similaires sur [outcome]. Cela pourrait-il intéresser [Company] ? Disponible pour échanger.`,
          psychology: "Pure French shows respect. 'Échanger' is the right verb (vs 'sell')."
        },
        linkedin_inmail: {
          subject: "Brève question pour [Company]",
          body: `Bonjour [Name],
    
    [One sentence specific observation]. Nous accompagnons des entreprises similaires sur [outcome]. Voici un cas d'usage récent: [specific case study].
    
    Je serais ravi(e) d'échanger 15 minutes si cela vous semble pertinent.
    
    Cordialement,
    [Your name]
    [Title]`,
          psychology: "Formal but warm. 'Cas d'usage' = case study in French biz French."
        },
        follow_up_day_3: {
          body: `Bonjour [Name] — je me permets de relancer concernant ma précédente note. Je reste à votre disposition. Cordialement.`,
          psychology: "Formal, polite, no pressure. 'Je me permets' is the right register."
        },
        follow_up_day_7: {
          body: `Bonjour [Name] — un dernier mot de ma part. Si le timing n'est pas le bon, je le comprends parfaitement. Bonne continuation à [Company]. Cordialement.`,
          psychology: "Elegant exit. 'Bonne continuation' is the perfect French farewell."
        },
        breakup: {
          subject: "Note de clôture",
          body: `Bonjour [Name], comprenant que ce n'est pas le bon moment, je vous laisse tranquille. La porte reste ouverte. Cordialement.`,
          psychology: "Formal, leaves door open without pressure."
        }
      },
      netherlands: {
        cold_email: {
          subject: "Direct vraagje voor [Company]",
          body: `Hi [Name],
    
    Straight to the point: I help [type of company] with [specific outcome with number].
    
    [Company] looks like a fit because [specific reason].
    
    Is this relevant for you right now? If not, no problem.
    
    Groet,
    [Your name]`,
          psychology: "Dutch directness valued. No filler."
        },
        linkedin_dm: {
          body: `Hi [Name] — direct question: are you looking at [problem] right now? I help similar B2B Dutch companies solve it. If yes, happy to share more. If no, no worries.`,
          psychology: "Direct question, easy yes/no answer."
        },
        linkedin_inmail: {
          subject: "Direct: [problem] for [Company]?",
          body: `Hi [Name],
    
    I'll keep this direct: I help B2B companies with [outcome]. [Specific observation about Company].
    
    Is [problem] something you're working on this quarter? Yes/no answer is fine.
    
    Groet,
    [Your name]`,
          psychology: "Dutch love directness. Yes/no framing respects their time."
        },
        follow_up_day_3: {
          body: `Hi [Name] — yes/no on the question above? Either is fine.`,
          psychology: "Hyper-direct second touch."
        },
        follow_up_day_7: {
          body: `Hi [Name] — closing this thread on my end. If [topic] comes up later, ping me directly. Groet.`,
          psychology: "Clean, no fluff."
        },
        breakup: {
          subject: "Closing thread",
          body: `Hi [Name], not the right timing — I get it. Door's open. Groet.`,
          psychology: "Direct, no emotion, no waste."
        }
      },
      nordics: {
        cold_email: {
          subject: "Brief — [topic] for [Company]",
          body: `Hi [Name],
    
    I work with companies on [outcome]. Based on what I know about [Company], there might be a fit.
    
    Would you be open to a brief conversation? No urgency — happy to align with your timing.
    
    Best regards,
    [Your name]`,
          psychology: "Reserved, modest, time-respecting. Nordic values."
        },
        linkedin_dm: {
          body: `Hi [Name] — small note. I help similar B2B companies with [outcome]. Wondering if it's relevant for [Company]. No pressure.`,
          psychology: "Modest, low-pressure. Avoids hyperbole."
        },
        linkedin_inmail: {
          subject: "Quiet note for [Name]",
          body: `Hi [Name],
    
    I help [industry] B2B companies with [outcome]. Recent reference: [Company X result]. Wondering if there's a fit with [Company].
    
    Happy to share more if useful. If not, all good.
    
    Best regards,
    [Your name]`,
          psychology: "Soft, modest, includes proof without bragging."
        },
        follow_up_day_3: {
          body: `Hi [Name] — gentle nudge. If timing's not right, that's totally fine.`,
          psychology: "Avoids pressure, respects boundaries."
        },
        follow_up_day_7: {
          body: `Hi [Name] — last note from me. Wishing you continued success with [Company].`,
          psychology: "Warm, modest exit."
        },
        breakup: {
          subject: "Closing — wishing you well",
          body: `Hi [Name], I'll let this go for now. If [topic] becomes relevant later, you have my details. Best with [Company].`,
          psychology: "Quiet, dignified exit."
        }
      }
    };
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It describes the core function (returning a template) but does not disclose behavioral traits such as idempotency, side effects (none expected), or access restrictions. The description is honest but lacks depth beyond the purpose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence of 30 words, front-loaded with the key action. Every part adds value: the verb, resource, scope (country/channel specific), and examples. No unnecessary words or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has only 2 parameters with enums and no output schema, the description covers the core purpose and parameter rationale. It does not explicitly state the return format (e.g., text content), but that is inferable. Compared to siblings, it stands alone as a focused retrieval tool; however, a brief note on output would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, meaning the description must compensate. It adds meaningful context by explaining why country and channel matter (e.g., country calibrates formality, channel determines type like cold_email vs breakup). This goes beyond the enum lists in the schema, helping the agent understand parameter significance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and identifies the resource as a 'country-specific, channel-specific outreach template', making the purpose immediately obvious. It also provides specific examples of channel types (cold email, LinkedIn DM, etc.) and calibration details (formal address for Germany, French for France), which distinguish it from generic template tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for obtaining localized outreach templates but does not provide explicit guidance on when to use this tool versus the sibling tools (e.g., get_followup_cadence, get_full_emea_pack). There are no when-not-to-use directives or alternative recommendations, leaving the agent to infer context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/closermethod/emea-compliance-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server