Skip to main content
Glama

brand_build_journey

Define and customize buyer journey stages for content strategy from awareness to purchase. Use interview mode to review defaults, record mode to write stages, or view mode to see current stages.

Instructions

Define buyer journey stages for content strategy — the path from awareness to purchase. Ships with 4 proven defaults (First Touch, Context & Meaning, Validation & Proof, Decision Support) that can be customized per brand. Mode 'interview' presents defaults for review. Mode 'record' writes stages (omit answers to accept defaults). Mode 'view' shows current stages. Part of Session 4 (content strategy). Returns stage definitions with buyer mindset, content goals, and tone shifts.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
modeNo'interview' presents default journey stages for customization; 'record' writes stages to strategy.yaml; 'view' returns current stagesinterview
answersNoJSON string with journey stage customizations (for record mode). Array of stage objects, or a single stage object to update.

Implementation Reference

  • Main handler function that dispatches to handleInterview, handleRecord, or handleView based on the 'mode' parameter.
    async function handler(input: Params) {
      const brandDir = new BrandDir(process.cwd());
    
      if (!(await brandDir.exists())) {
        return buildResponse({
          what_happened: "No .brand/ directory found",
          next_steps: ["Run brand_start first to create a brand system"],
          data: { error: ERROR_CODES.NOT_INITIALIZED },
        });
      }
    
      switch (input.mode) {
        case "interview":
          return handleInterview(brandDir);
        case "record":
          return handleRecord(brandDir, input.answers);
        case "view":
          return handleView(brandDir);
      }
    }
  • Zod schema for the brand_build_journey tool parameters: mode (enum: interview/record/view) and optional answers (JSON string).
    const paramsShape = {
      mode: z
        .enum(["interview", "record", "view"])
        .default("interview")
        .describe(
          "'interview' presents default journey stages for customization; 'record' writes stages to strategy.yaml; 'view' returns current stages"
        ),
      answers: z
        .string()
        .optional()
        .describe(
          "JSON string with journey stage customizations (for record mode). Array of stage objects, or a single stage object to update."
        ),
    };
    
    const ParamsSchema = z.object(paramsShape);
    type Params = z.infer<typeof ParamsSchema>;
  • Registration function that calls server.tool() to register the brand_build_journey tool with the McpServer.
    export function register(server: McpServer) {
      server.tool(
        "brand_build_journey",
        "Define buyer journey stages for content strategy — the path from awareness to purchase. Ships with 4 proven defaults (First Touch, Context & Meaning, Validation & Proof, Decision Support) that can be customized per brand. Mode 'interview' presents defaults for review. Mode 'record' writes stages (omit answers to accept defaults). Mode 'view' shows current stages. Part of Session 4 (content strategy). Returns stage definitions with buyer mindset, content goals, and tone shifts.",
        paramsShape,
        async (args) => {
          const parsed = safeParseParams(ParamsSchema, args);
          if (!parsed.success) return parsed.response;
          return handler(parsed.data);
        }
      );
    }
  • src/server.ts:84-88 (registration)
    Registration call in server.ts where registerBuildJourney is invoked as part of Session 4 Content Strategy tools.
    // ── Session 4: Content Strategy ──
    registerBuildPersonas(server);
    registerBuildJourney(server);
    registerBuildThemes(server);
    registerBuildMatrix(server);
  • Provides the 4 default buyer journey stages (First Touch, Context & Meaning, Validation & Proof, Decision Support) used by interview and record modes.
    function getDefaultStages(): JourneyStage[] {
      return [
        {
          id: "first-touch",
          name: "First Touch",
          buyer_mindset: "What is this? Why should I care?",
          content_goal: "Spark interest. Lead with problem recognition.",
          story_types: ["Brand Narrative"],
          narrative_elements: ["Problem", "Hero"],
          claims_policy: {
            preferred_salience: "Lead",
            max_per_piece: 1,
          },
          tone_shift: "More provocative, less consultative",
        },
        {
          id: "context-and-meaning",
          name: "Context & Meaning",
          buyer_mindset: "Do I understand this? Is it for me?",
          content_goal: "Deepen context. Show unique POV.",
          story_types: ["Brand Narrative", "Product/Service Story"],
          narrative_elements: ["Problem", "Guide", "Journey"],
          claims_policy: {
            preferred_salience: ["Lead", "Support"],
            max_per_piece: 3,
          },
          tone_shift: "More educational, framework-oriented",
        },
        {
          id: "validation-and-proof",
          name: "Validation & Proof",
          buyer_mindset: "Is this legit? Do others trust this?",
          content_goal: "Offer credibility. Show outcomes.",
          story_types: ["Customer/Social Proof", "Product/Service Story"],
          narrative_elements: ["Victory", "Proof Point", "Journey"],
          claims_policy: {
            preferred_salience: ["Support", "Lead"],
            max_per_piece: null,
            min_confidence: 0.8,
          },
          tone_shift: "More concrete, metrics-forward",
        },
        {
          id: "decision-support",
          name: "Decision Support",
          buyer_mindset: "Am I ready? What happens next?",
          content_goal: "Remove friction. Provide clarity.",
          story_types: ["Product/Service Story"],
          narrative_elements: ["Guide", "Victory", "Hero"],
          claims_policy: {
            preferred_salience: "Lead",
            max_per_piece: 2,
          },
          tone_shift: "More direct, consultative, action-oriented",
        },
      ];
    }
Behavior3/5

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

With no annotations, the description carries full burden. It explains modes, default stages, and return structure, but lacks details on error handling, side effects, or safety considerations for a define/write tool.

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

Conciseness4/5

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

Single paragraph front-loads main purpose. It is concise but includes necessary details; could be slightly shorter but remains effective.

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

Completeness5/5

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

Description fully covers all aspects: purpose, modes, defaults, return value (stage definitions, buyer mindset, content goals, tone shifts), and context (Session 4). No output schema exists, so return description is adequate.

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 has 100% coverage with descriptions. The description adds context: four proven defaults, mode behavior, and return details, enhancing understanding beyond the schema.

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

Purpose4/5

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

Description clearly states the tool defines buyer journey stages for content strategy from awareness to purchase. It specifies the verb 'define' and resource, but does not explicitly differentiate from sibling tools like brand_build_personas or brand_build_themes.

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?

Provides clear guidance on when to use each mode: interview for review, record for writing, view for showing. However, it does not explicitly state when not to use this tool or suggest 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/Brandcode-Studio/brandsystem-mcp'

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