Skip to main content
Glama
G-Hensley
by G-Hensley

Get Profile Summary

get_profile

Retrieve a complete personal profile summary with contact information, background, and key statistics. Access all essential personal data in one request.

Instructions

Get a complete profile summary including contact info, about myself, summary, and key stats

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
contentYes

Implementation Reference

  • The handler function that executes the 'get_profile' tool logic. It reads contact.json and resume.md from a GitHub repo, extracts the Summary section from markdown, and returns a ProfileResult object with name, email, phone, location, links, and summary.
    // Tool: Get Profile Summary
    server.registerTool(
      "get_profile",
      {
        title: "Get Profile Summary",
        description: "Get a complete profile summary including contact info, summary, and key stats",
        outputSchema: textContentOutputSchema,
      },
      async () => {
        const contact = await readJsonFile<ContactData>("profile/contact.json");
        const resume = await readMarkdownFile("profile/resume.md");
        const summaryMatch = resume.match(/## Summary\n\n([\s\S]*?)(?=\n##|$)/);
        const summary = summaryMatch ? summaryMatch[1].trim() : "";
    
        const profile: ProfileResult = {
          name: contact.name,
          email: contact.email,
          phone: contact.phone,
          location: contact.location,
          links: contact.links,
          summary,
        };
        return { content: [{ type: "text", text: JSON.stringify(profile, null, 2) }] };
      }
    );
  • api/mcp.ts:193-216 (registration)
    The tool registration call using server.registerTool with the name 'get_profile'. This is where the tool is registered in the MCP server.
    server.registerTool(
      "get_profile",
      {
        title: "Get Profile Summary",
        description: "Get a complete profile summary including contact info, summary, and key stats",
        outputSchema: textContentOutputSchema,
      },
      async () => {
        const contact = await readJsonFile<ContactData>("profile/contact.json");
        const resume = await readMarkdownFile("profile/resume.md");
        const summaryMatch = resume.match(/## Summary\n\n([\s\S]*?)(?=\n##|$)/);
        const summary = summaryMatch ? summaryMatch[1].trim() : "";
    
        const profile: ProfileResult = {
          name: contact.name,
          email: contact.email,
          phone: contact.phone,
          location: contact.location,
          links: contact.links,
          summary,
        };
        return { content: [{ type: "text", text: JSON.stringify(profile, null, 2) }] };
      }
    );
  • The ProfileResult interface defines the shape of the data returned by the get_profile tool, including name, email, phone, location, links, summary, and about_me.
    export interface ProfileResult {
      name: string;
      email: string;
      phone: string;
      location: string;
      links: Record<string, string>;
      summary: string;
      about_me: AboutMeData;
    }
  • The textContentOutputSchema used as the outputSchema for the get_profile tool, defining the common response format.
    const textContentOutputSchema = z.object({
      content: z.array(
        z.object({
          type: z.literal("text"),
          text: z.string(),
        })
  • Helper function readJsonFile used by the handler to fetch and parse JSON data from GitHub.
    async function readJsonFile<T>(relativePath: string): Promise<T> {
      const content = await fetchFromGitHub(relativePath);
      return JSON.parse(content) as T;
    }
Behavior3/5

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

No annotations are provided, so the description must carry the full burden of behavioral disclosure. It implies a read-only operation through the verb 'Get' but does not explicitly state safety, authentication requirements, or whether the profile is always available. The behavior is straightforward, but transparency could be improved by noting any potential missing data scenarios.

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 sentence that front-loads the purpose ('Get a complete profile summary') and then lists specific content. No filler or redundant information.

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 tool's simplicity (no parameters, existing output schema), the description adequately explains what it returns. However, it could explicitly state that it returns the current user's profile to avoid ambiguity, especially since siblings exist for other profile types.

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

Parameters5/5

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

The tool has zero parameters, so schema coverage is 100%. The description compensates by detailing the output content (contact info, about myself, summary, key stats), adding meaningful context beyond the empty schema.

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 'complete profile summary', listing specific included fields (contact info, about myself, summary, key stats). This distinguishes it from sibling tools like 'get_linkedin_profile' which targets LinkedIn-specific data.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as 'get_linkedin_profile' or 'get_business_info'. It does not mention prerequisites or exclude other contexts.

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/G-Hensley/myself-mcp-server'

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