Skip to main content
Glama

plan_agent_design_governance

Read-only

Assess agent workflow design to recommend the right governance pattern, baseline evals, instruction fixes, and tool safeguards before scaling autonomy.

Instructions

Evaluate an agent workflow before adding tools, autonomy, or subagents. Recommends single-agent vs manager/decentralized patterns, baseline evals, instruction fixes, and tool safeguards.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
workflowNoWorkflow name or short description.
toolsNoTool names available to the agent.
toolCountNoTotal tools when names are not listed.
similarToolCountNoNumber of similar or overlapping tools.
conditionalBranchesNoRough count of if/then instruction branches.
handoffCountNoExisting or proposed handoff count.
highRiskToolsNoTools that affect production, money, data, secrets, or outbound actions.
writeToolsNoWrite-capable tools.
hasBaselineEvalsNoWhether baseline agent evals exist.
hasDocsNoInstructions draw on existing workflow docs.
hasExamplesNoInstructions include concrete examples.
hasEdgeCasesNoInstructions include edge cases and failure paths.
hasToolApprovalsNoRisky tool calls require approval.
hasExitConditionNoInstructions define when the run is complete.
reversibleActionsNoRisky actions are reversible or have rollback procedures.

Implementation Reference

  • Main handler that builds the agent design governance plan. Normalizes inputs, scores tool risk and instruction quality, selects architecture (single_agent/manager/decentralized), identifies blockers, and returns a governance report.
    function buildAgentDesignGovernancePlan(rawOptions = {}) {
      const options = normalizeOptions(rawOptions);
      const toolRisk = scoreToolRisk(options);
      const instructionQuality = scoreInstructions(options);
      const architecture = selectArchitecture(options, toolRisk, instructionQuality);
      const blockers = buildBlockers(options, toolRisk, architecture);
    
      return {
        name: 'thumbgate-agent-design-governance',
        workflow: options.workflow,
        sourcePattern: 'OpenAI practical agent guide: model + tools + instructions, single-agent first, eval-driven multi-agent splits',
        status: blockers.some((blocker) => blocker.severity === 'critical') ? 'blocked' : blockers.length ? 'needs_work' : 'ready',
        recommendation: architecture,
        toolRisk,
        instructionQuality,
        evals: {
          baselinePresent: options.hasBaselineEvals,
          requiredBefore: ['new high-risk tools', 'multi-agent split', 'higher autonomy', 'auto-PR or deploy'],
        },
        blockers,
        nextActions: [
          'Keep the workflow single-agent unless evals show instruction complexity or tool overload.',
          'Write tool descriptions with clear names, parameters, side effects, and approval requirements.',
          'Add examples and edge cases to instructions before adding subagents.',
          'Add baseline evals that grade tool choice, exit condition, recovery behavior, and unsafe action refusal.',
          'Assign low, medium, or high risk to every tool based on write access, reversibility, permissions, and financial or production impact.',
        ],
      };
    }
  • Normalizes raw CLI/API options into structured config, handling kebab-case, camelCase, and parsing booleans/numbers/lists.
    function normalizeOptions(raw = {}) {
      const tools = splitList(raw.tools || raw.toolNames);
      const highRiskTools = splitList(raw['high-risk-tools'] || raw.highRiskTools)
        .concat(tools.filter((tool) => HIGH_RISK_KEYWORDS.test(tool)));
      return {
        workflow: String(raw.workflow || raw.name || 'agent workflow').trim() || 'agent workflow',
        toolCount: parseNumber(raw['tool-count'] || raw.toolCount || tools.length, tools.length),
        similarToolCount: parseNumber(raw['similar-tool-count'] || raw.similarToolCount, 0),
        conditionalBranches: parseNumber(raw['conditional-branches'] || raw.conditionalBranches, 0),
        handoffCount: parseNumber(raw['handoff-count'] || raw.handoffCount, 0),
        autonomyLevel: String(raw['autonomy-level'] || raw.autonomyLevel || 'assisted').trim().toLowerCase(),
        tools,
        highRiskTools: [...new Set(highRiskTools)],
        writeTools: splitList(raw['write-tools'] || raw.writeTools),
        hasBaselineEvals: parseBoolean(raw['baseline-evals'] || raw.hasBaselineEvals, false),
        hasDocs: parseBoolean(raw.docs || raw.hasDocs, false),
        hasExamples: parseBoolean(raw.examples || raw.hasExamples, false),
        hasEdgeCases: parseBoolean(raw['edge-cases'] || raw.hasEdgeCases, false),
        hasToolApprovals: parseBoolean(raw['tool-approvals'] || raw.hasToolApprovals, false),
        hasExitCondition: parseBoolean(raw['exit-condition'] || raw.hasExitCondition, false),
        reversibleActions: parseBoolean(raw['reversible-actions'] || raw.reversibleActions, false),
      };
    }
  • CLI schema registration mapping the 'agent-design-governance' discoverable command to MCP tool 'plan_agent_design_governance'.
    discoveryCommand({
      name: 'agent-design-governance',
      aliases: ['agent-architecture', 'agent-governance-plan'],
      description: 'Decide single-agent vs multi-agent architecture and required eval/tool safeguards',
      mcpTool: 'plan_agent_design_governance',
  • MCP server case statement routing the tool name to the handler function.
    case 'plan_agent_design_governance':
      return toTextResult(buildAgentDesignGovernancePlan(args));
  • Exports all helper functions: buildAgentDesignGovernancePlan, formatAgentDesignGovernancePlan, normalizeOptions, scoreInstructions, scoreToolRisk, selectArchitecture.
    module.exports = {
      buildAgentDesignGovernancePlan,
      formatAgentDesignGovernancePlan,
      normalizeOptions,
      scoreInstructions,
      scoreToolRisk,
      selectArchitecture,
    };
Behavior4/5

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

Annotations already include readOnlyHint=true, confirming no side effects. The description adds behavioral context by detailing the nature of recommendations (patterns, evals, fixes, safeguards), which complements the annotation without contradiction.

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, front-loaded sentence that conveys the tool's purpose and outputs without any extraneous text. Every part is essential and earns its place.

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 15 optional parameters and lack of output schema, the description appropriately covers the tool's role and expected outputs. It provides enough context for an agent to understand what the tool does, though more detail on output format could be beneficial.

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

Parameters3/5

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

With 100% schema coverage, baseline is 3. The description does not add any parameter-specific information beyond what the schema already provides, so it meets but does not exceed the baseline.

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 uses a specific verb ('evaluate') and resource ('agent workflow'), clearly stating the tool's purpose. It distinguishes from sibling tools by focusing on governance before adding tools/autonomy, which is unique among the sibling list.

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 explicitly states when to use ('before adding tools, autonomy, or subagents'), providing clear context. However, it does not mention when not to use or suggest alternative tools for different scenarios, which would strengthen guidance.

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/IgorGanapolsky/ThumbGate'

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