Skip to main content
Glama
closermethod

EMEA Compliance MCP

get_followup_cadence

Determine the correct follow-up schedule for any EMEA country: day-by-day sequence, gap timing, and question style to align with local compliance and cultural norms.

Instructions

Get the country-specific follow-up cadence with day-by-day sequence and rules. EMEA markets vary dramatically: Netherlands wants 2-day gaps with yes/no questions, Germany wants formal documented 4-7 day gaps, Nordics want 5-7 day modest pacing.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
countryYes

Implementation Reference

  • Tool registration with inputSchema: defines the 'get_followup_cadence' tool name, description (country-specific follow-up cadence), and input schema requiring a 'country' parameter with enum values for EMEA markets.
    {
      name: "get_followup_cadence",
      description: "Get the country-specific follow-up cadence with day-by-day sequence and rules. EMEA markets vary dramatically: Netherlands wants 2-day gaps with yes/no questions, Germany wants formal documented 4-7 day gaps, Nordics want 5-7 day modest pacing.",
      inputSchema: {
        type: "object",
        properties: {
          country: {
            type: "string",
            enum: ["uk", "ireland", "spain", "germany", "france", "netherlands", "nordics"]
          }
        },
        required: ["country"]
      }
    },
  • Handler logic: extracts country arg, looks up FOLLOWUP_CADENCES data, returns JSON with pacing, sequence, and rules for that country.
    case "get_followup_cadence": {
      const country = args?.country as string;
      const cadence = FOLLOWUP_CADENCES[country as keyof typeof FOLLOWUP_CADENCES];
      if (!cadence) throw new Error(`Unknown country: ${country}`);
      return {
        content: [{
          type: "text",
          text: JSON.stringify({
            module: "EMEA Follow-Up Cadence",
            country,
            ...cadence
          }, null, 2)
        }]
      };
    }
  • Data source (FOLLOWUP_CADENCES constant): contains country-specific pacing, day-by-day sequence, and rules for each of the 7 EMEA markets.
    const FOLLOWUP_CADENCES = {
      uk: {
        pacing: "Patient. 3-day gap minimum. Max 3 touches over 2 weeks.",
        sequence: [
          { day: 0, action: "Initial cold email/LinkedIn" },
          { day: 3, action: "Soft follow-up: 'Apologies for the bump'" },
          { day: 7, action: "Value-add: share a relevant article or case study" },
          { day: 14, action: "Breakup email: clean exit" }
        ],
        rules: [
          "No follow-up before Day 3 — feels desperate",
          "Friday after 3pm = wait until Tuesday",
          "Always offer an out — 'no worries if not'"
        ]
      },
      ireland: {
        pacing: "Relationship-paced. Lean on warm intros. 4-5 day gaps.",
        sequence: [
          { day: 0, action: "Initial outreach with mutual connection mention" },
          { day: 4, action: "Soft float-up — 'in case it got lost'" },
          { day: 9, action: "Add value — local context, event reference, mutual connection update" },
          { day: 16, action: "Warm breakup — 'door's open'" }
        ],
        rules: [
          "Reference Dublin tech community whenever possible",
          "Mention real people you know in common",
          "Never push — Irish reputation networks remember"
        ]
      },
      spain: {
        pacing: "Patient — multiple touches expected. 5-day gaps.",
        sequence: [
          { day: 0, action: "Initial outreach (bilingual hola opener)" },
          { day: 5, action: "Patient float-up — 'just in case'" },
          { day: 11, action: "Mention in-person availability if relevant" },
          { day: 18, action: "Cerrando el bucle — warm exit" }
        ],
        rules: [
          "August completely dead — pause all outreach",
          "Avoid 2-5pm CET (siesta)",
          "Spanish opener (hola) shows respect even if body is English"
        ]
      },
      germany: {
        pacing: "Formal, methodical. 4-7 day gaps. Documentation builds with each touch.",
        sequence: [
          { day: 0, action: "Initial email with Sehr geehrte/r address + attached case study" },
          { day: 5, action: "Formal follow-up — 'I am following up'" },
          { day: 12, action: "Add: provide additional documentation, GDPR statement" },
          { day: 21, action: "Letzter Hinweis — formal final note" }
        ],
        rules: [
          "Never drop formal address until invited",
          "Always include Impressum / contact data",
          "Punctuality on follow-up timing matters"
        ]
      },
      france: {
        pacing: "Elegant, formal-then-warming. 4-day gaps.",
        sequence: [
          { day: 0, action: "Initial email with Bonjour + cordially formal close" },
          { day: 4, action: "'Je me permets de relancer'" },
          { day: 10, action: "Share intellectual hook — relevant insight, industry analysis" },
          { day: 18, action: "'Bonne continuation' exit" }
        ],
        rules: [
          "August dead",
          "Avoid Mondays and Friday afternoons",
          "Use 'Vous' until invited otherwise"
        ]
      },
      netherlands: {
        pacing: "Fast and direct. 2-3 day gaps. Yes/no questions.",
        sequence: [
          { day: 0, action: "Direct cold outreach with yes/no framing" },
          { day: 3, action: "'Yes/no on the question above?'" },
          { day: 7, action: "Closing thread — clean exit" }
        ],
        rules: [
          "No fluff, ever",
          "Yes/no questions get answered",
          "Don't pile on — 3 touches max"
        ]
      },
      nordics: {
        pacing: "Modest, slow. 5-7 day gaps. Long-term oriented.",
        sequence: [
          { day: 0, action: "Reserved, modest initial note" },
          { day: 6, action: "Gentle nudge with explicit out" },
          { day: 14, action: "Warm exit, wishing them well" }
        ],
        rules: [
          "Never email after 4-5pm local time — they will judge",
          "Avoid Jun-Aug almost entirely (long summer holidays)",
          "Modesty in claims; Nordics distrust hype"
        ]
      }
    };
  • src/main.ts:859-959 (registration)
    Tool registration via ListToolsRequestSchema handler: lists 'get_followup_cadence' as one of the available tools with its schema.
      tools: [
        {
          name: "get_country_brief",
          description: "Get a complete country-specific buyer psychology brief including communication style, what works/kills deals, sales cycle expectations, decision makers, compliance notes, and seasonal warnings. Use this before any outreach to a specific EMEA market.",
          inputSchema: {
            type: "object",
            properties: {
              country: {
                type: "string",
                enum: ["uk", "ireland", "spain", "germany", "france", "netherlands", "nordics"],
                description: "EMEA country to get brief for"
              }
            },
            required: ["country"]
          }
        },
        {
          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"]
          }
        },
        {
          name: "get_followup_cadence",
          description: "Get the country-specific follow-up cadence with day-by-day sequence and rules. EMEA markets vary dramatically: Netherlands wants 2-day gaps with yes/no questions, Germany wants formal documented 4-7 day gaps, Nordics want 5-7 day modest pacing.",
          inputSchema: {
            type: "object",
            properties: {
              country: {
                type: "string",
                enum: ["uk", "ireland", "spain", "germany", "france", "netherlands", "nordics"]
              }
            },
            required: ["country"]
          }
        },
        {
          name: "get_compliance_check",
          description: "Get country-specific compliance requirements for cold outreach: GDPR framework, cold email legality, required elements (Impressum for Germany, Mentions légales for France, etc.), cookie consent rules, regulator names, fine ranges. Critical for AI agents doing autonomous outreach in EU/UK.",
          inputSchema: {
            type: "object",
            properties: {
              country: {
                type: "string",
                enum: ["uk", "ireland", "spain", "germany", "france", "netherlands", "nordics"]
              }
            },
            required: ["country"]
          }
        },
        {
          name: "get_stakeholder_map",
          description: "Get the multi-stakeholder navigation map for a buyer org by company stage. Shows decision maker, influencer, common blockers, average cycle, deal size range, and champion-building script. Use before starting any deal to know who you really need to convince.",
          inputSchema: {
            type: "object",
            properties: {
              company_stage: {
                type: "string",
                enum: ["early_startup", "growth_stage", "mid_market", "enterprise"]
              }
            },
            required: ["company_stage"]
          }
        },
        {
          name: "get_eor_objection_handler",
          description: "Handle EOR (Employer of Record) and global hiring objections with country-specific responses. Built from 3+ years selling EOR at Deel and Multiplier across EMEA. Covers: 'use contractors instead', 'not ready to commit', 'too expensive', 'we have entity', 'compliance unclear'.",
          inputSchema: {
            type: "object",
            properties: {
              eor_objection: {
                type: "string",
                enum: ["use_contractors_instead", "not_ready_to_commit", "too_expensive", "we_already_have_entity", "compliance_unclear"]
              }
            },
            required: ["eor_objection"]
          }
        },
        {
          name: "get_full_emea_pack",
          description: "Get the complete EMEA pack — all country briefs, all templates, all compliance requirements, stakeholder maps, and EOR handlers. Use to fine-tune your AI agent or load as system context for full EMEA capability.",
          inputSchema: {
            type: "object",
            properties: {},
            required: []
          }
        }
      ]
    };
Behavior3/5

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

No annotations are provided, so the description bears the full burden. It discloses that the cadence varies by country with specific gaps and question styles, but does not cover other behavioral aspects like permission requirements or side effects.

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 concise with two sentences: the first states the purpose, the second provides illustrative context. No unnecessary words, and it front-loads the core functionality.

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 simplicity (single parameter, no output schema), the description is largely complete. It explains the tool's output and regional variations, though it could detail the return format of the 'day-by-day sequence and rules'.

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?

The input schema has one enum parameter 'country' with 0% description coverage. The tool description adds meaningful context by explaining how the country influences the cadence, providing concrete examples beyond the enum list.

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 the resource 'follow-up cadence' with specifics like 'country-specific', 'day-by-day sequence and rules'. It distinguishes from sibling tools such as 'get_country_brief' and 'get_compliance_check' which target different information.

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

Usage Guidelines4/5

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

The description provides implicit guidance by detailing country-specific examples (Netherlands, Germany, Nordics), signaling when to use this tool to retrieve tailored cadences. However, it does not explicitly mention when not to use or list alternatives.

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