Skip to main content
Glama

letter_frequency

Analyze character frequency in text to identify patterns, count occurrences, and generate distribution reports for linguistic analysis or data processing.

Instructions

Get frequency distribution of all characters in text.

Provides a complete breakdown of character frequencies.

Args:

  • text (string): The text to analyze

  • case_sensitive (boolean): Distinguish upper/lowercase (default: false)

  • include_spaces (boolean): Include spaces in count (default: false)

  • include_punctuation (boolean): Include punctuation (default: false)

  • letters_only (boolean): Only count a-z letters (default: true)

Returns: Frequency map, sorted list, most/least common characters.

Example: letter_frequency("hello") → h: 1, e: 1, l: 2, o: 1

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
textYesThe text to analyze
case_sensitiveNoDistinguish upper/lowercase
include_spacesNoInclude spaces
include_punctuationNoInclude punctuation
letters_onlyNoOnly count a-z letters

Implementation Reference

  • Core implementation of letterFrequency function that calculates character frequencies with filtering options and returns detailed statistics including frequency map, table, most/least common.
    export function letterFrequency(input: LetterFrequencyInput): LetterFrequencyOutput { const { text, case_sensitive, include_spaces, include_punctuation, letters_only } = input; const frequency: Record<string, number> = {}; const processedText = case_sensitive ? text : text.toLowerCase(); for (const char of processedText) { // Filter based on options if (letters_only && !/[a-zA-Z]/.test(char)) continue; if (!include_spaces && char === ' ') continue; if (!include_punctuation && /[^\w\s]/.test(char)) continue; frequency[char] = (frequency[char] || 0) + 1; } const entries = Object.entries(frequency).sort((a, b) => b[1] - a[1]); const most_common = entries.slice(0, 5).map(([char, count]) => ({ char, count })); const least_common = entries.slice(-5).reverse().map(([char, count]) => ({ char, count })); return { text, total_characters: Object.values(frequency).reduce((a, b) => a + b, 0), unique_characters: Object.keys(frequency).length, frequency, frequency_table: formatFrequencyTable(frequency), most_common, least_common, }; }
  • TypeScript interfaces defining input parameters and output structure for the letterFrequency function.
    export interface LetterFrequencyInput { text: string; case_sensitive: boolean; include_spaces: boolean; include_punctuation: boolean; letters_only: boolean; } export interface LetterFrequencyOutput { text: string; total_characters: number; unique_characters: number; frequency: Record<string, number>; frequency_table: string; most_common: Array<{ char: string; count: number }>; least_common: Array<{ char: string; count: number }>; }
  • src/index.ts:166-205 (registration)
    MCP tool registration for 'letter_frequency' including Zod inputSchema validation, description, and async wrapper that invokes the letterFrequency handler.
    server.registerTool( "letter_frequency", { title: "Letter Frequency", description: `Get frequency distribution of all characters in text. Provides a complete breakdown of character frequencies. Args: - text (string): The text to analyze - case_sensitive (boolean): Distinguish upper/lowercase (default: false) - include_spaces (boolean): Include spaces in count (default: false) - include_punctuation (boolean): Include punctuation (default: false) - letters_only (boolean): Only count a-z letters (default: true) Returns: Frequency map, sorted list, most/least common characters. Example: letter_frequency("hello") → h: 1, e: 1, l: 2, o: 1`, inputSchema: z.object({ text: z.string().min(1).describe("The text to analyze"), case_sensitive: z.boolean().default(false).describe("Distinguish upper/lowercase"), include_spaces: z.boolean().default(false).describe("Include spaces"), include_punctuation: z.boolean().default(false).describe("Include punctuation"), letters_only: z.boolean().default(true).describe("Only count a-z letters"), }).strict(), annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false }, }, async (params) => { const result = letterFrequency({ text: params.text, case_sensitive: params.case_sensitive, include_spaces: params.include_spaces, include_punctuation: params.include_punctuation, letters_only: params.letters_only, }); return { content: [{ type: "text" as const, text: `Frequency analysis of "${result.text}":\n\n${result.frequency_table}\n\nMost common: ${result.most_common.map(c => `'${c.char}': ${c.count}`).join(', ')}` }], }; } );
  • Usage of letterFrequency in compareTexts function to compute frequencies for two texts.
    const freq1 = letterFrequency({ text: text1, case_sensitive, include_spaces: false, include_punctuation: false, letters_only: true, }); const freq2 = letterFrequency({ text: text2, case_sensitive, include_spaces: false, include_punctuation: false, letters_only: true, });

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