Skip to main content
Glama

count_letter

Count occurrences of a specific letter in text, providing positions, visual breakdown, and density percentage. Analyze text at character level to overcome tokenization limitations.

Instructions

Count occurrences of a specific letter in text.

Returns the count, positions, a visual breakdown showing where each letter appears, and a density percentage.

Args:

  • text (string): The text to analyze

  • letter (string): The single letter to count

  • case_sensitive (boolean): Whether to match case exactly (default: false)

Returns: count, positions array, visual breakdown, and density summary.

Example: count_letter("strawberry", "r") → count: 3, positions: [2, 5, 8]

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
textYesThe text to analyze
letterYesThe letter to count
case_sensitiveNoMatch case exactly

Implementation Reference

  • Core implementation of the count_letter tool logic: normalizes case if needed, finds all positions of the letter via loop, computes visual breakdown and density summary using helpers, returns structured output.
    export function countLetter(input: CountLetterInput): CountLetterOutput { const { text, letter, case_sensitive } = input; // Normalize the letter to search for const searchLetter = case_sensitive ? letter : letter.toLowerCase(); const searchText = case_sensitive ? text : text.toLowerCase(); const positions: number[] = []; for (let i = 0; i < searchText.length; i++) { if (searchText[i] === searchLetter) { positions.push(i); } } const visual = createVisualBreakdown(text, positions, letter); const density = createDensitySummary(positions.length, text.length, letter); return { text, letter, count: positions.length, case_sensitive, positions, visual, density, }; }
  • TypeScript interfaces defining the input schema (text, letter, case_sensitive) and output schema (including count, positions, visual, density) for the countLetter function.
    export interface CountLetterInput { text: string; letter: string; case_sensitive: boolean; } export interface CountLetterOutput { text: string; letter: string; count: number; case_sensitive: boolean; positions: number[]; visual: string; density: string; }
  • src/index.ts:52-88 (registration)
    MCP server registration of the 'count_letter' tool, including title, description, Zod input schema validation, annotations, and async handler that invokes countLetter and formats MCP response with density, visual, count, and positions.
    server.registerTool( "count_letter", { title: "Count Letter", description: `Count occurrences of a specific letter in text. Returns the count, positions, a visual breakdown showing where each letter appears, and a density percentage. Args: - text (string): The text to analyze - letter (string): The single letter to count - case_sensitive (boolean): Whether to match case exactly (default: false) Returns: count, positions array, visual breakdown, and density summary. Example: count_letter("strawberry", "r") → count: 3, positions: [2, 5, 8]`, inputSchema: z.object({ text: z.string().min(1).describe("The text to analyze"), letter: z.string().length(1).describe("The letter to count"), case_sensitive: z.boolean().default(false).describe("Match case exactly"), }).strict(), annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false }, }, async (params) => { const result = countLetter({ text: params.text, letter: params.letter, case_sensitive: params.case_sensitive, }); return { content: [{ type: "text" as const, text: `${result.density}\n\n${result.visual}\n\nResult: ${JSON.stringify({ count: result.count, positions: result.positions })}` }], }; } );

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/Aaryan-Kapoor/mcp-character-tools'

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