Skip to main content
Glama

Khalid Ibne Hasan · Portfolio

Server Details

Query Khalid Ibne Hasan's portfolio: profile, availability, case studies, writing, and resume.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

Available Tools

9 tools
ask_khalidask khalidAInspect

Asks Khalid Ibne Hasan's chat persona one question and returns its answer. The persona is LLM-backed, grounded in khalidibnehasan.com content, and answers as Khalid about his work, experience, and availability. To actually reach Khalid, use the contact form at https://www.khalidibnehasan.com/contact or book a call at https://calendly.com/khalidibnehasan/30min.

ParametersJSON Schema
NameRequiredDescriptionDefault
questionYesThe question to ask Khalid's chat persona.

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral disclosure burden. It clearly reveals that the tool is LLM-backed, grounded in khalidibnehasan.com content, and speaks as Khalid's persona rather than the real person, which is important context for setting expectations.

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 compact and front-loads the core action in the first sentence. The second and third sentences add crucial guidance about the persona's nature and the alternative ways to reach the real person without unnecessary verbosity.

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?

For a simple one-parameter tool with no output schema, the description covers the tool's purpose, its behavior, its grounding, and the appropriate alternatives. Nothing essential is missing for an agent to use it correctly.

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?

The schema already covers the single 'question' parameter at 100%, so the baseline is 3. The description reinforces that a question is asked but does not add meaningful new details about format, constraints, or expected input beyond what the schema provides.

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 states a specific verb ('asks'), a specific resource (Khalid's chat persona), and a clear outcome ('returns its answer'). It clearly distinguishes this from the sibling tools by framing it as the persona/chat tool rather than a data-retrieval tool.

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

Usage Guidelines5/5

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

The description explicitly explains when to use the tool (to ask about Khalid's work, experience, and availability) and when not to use it (to actually reach Khalid, use the contact form or book a call). This gives an agent actionable routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_availabilityget availabilityAInspect

Returns what Khalid Ibne Hasan is currently open to (advisory, speaking, and similar engagements) plus the ways to reach him, including a direct call-booking link.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the responsibility of disclosing behavior. It clearly conveys that the tool returns current availability status and contact avenues, including a direct call-booking link, which gives the agent a good sense of what to expect. It does not overpromise or hide side effects.

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 immediately states what is returned and includes the most important details: current availability and direct contact/call-booking options. There is no wasted wording.

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?

For a zero-parameter tool with no output schema, the description is complete: it names the subject, the current availability scope, the types of engagements, and the contact resources including a call-booking link. An agent has enough context to invoke and interpret the result correctly.

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?

The tool has zero parameters, so there is no parameter semantics to clarify. The description adds useful context about the output instead, which is appropriate given no input is needed.

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 ('Returns') and clearly defines the resource: Khalid Ibne Hasan's current availability for engagements plus contact methods. It is distinct from siblings like get_profile or get_resume because it focuses specifically on current openness and a call-booking link.

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

Usage Guidelines3/5

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

The description implies that this tool should be used when the user wants to know what Khalid Ibne Hasan is currently open to or how to reach him. However, it does not explicitly state when to use it over alternatives such as ask_khalid or get_profile, nor does it mention any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_case_studyget case studyAInspect

Returns the full case study for one project by slug: role, year, impact, description, highlights, and stack. Get slugs from list_projects.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesThe project slug, as returned by list_projects.

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It accurately frames the operation as a retrieval ('Returns') and specifies the keys of the response (role, year, impact, description, highlights, stack), making the outcome predictable. It does not mention behavior for nonexistent slugs or rate limits, but for a simple read-only getter these omissions are minor.

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 two concise sentences with no filler. The first sentence front-loads the action and scope and lists the reply fields; the second gives the only required dependency. Every word adds value, and the structure allows rapid parsing.

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?

This is a single-parameter getter with no output schema, and the description fully covers what an agent needs to invoke it correctly: the slug source (list_projects) and the exact set of fields returned. There is no pagination, nested objects, or side effects. The description is complete for normal use despite having no annotations.

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?

Schema description coverage is 100%, and the slug parameter's schema description already states it is 'The project slug, as returned by list_projects.' The tool description repeats this dependency with 'Get slugs from list_projects', which reinforces but does not add new semantic meaning beyond the schema. Therefore the baseline 3 is appropriate.

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 states a specific verb ('Returns') and a specific resource ('full case study for one project by slug'), and enumerates the exact fields (role, year, impact, description, highlights, stack). It also distinguishes itself from list_projects by scoping to a single project's detail. This is clearly differentiable from sibling tools like get_post or list_projects.

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 provides clear context by saying 'Get slugs from list_projects', which tells the agent exactly how to obtain the required parameter and implies the workflow of listing projects first. It does however not explicitly state when not to use this tool or contrast with other siblings like get_post or search_ssite, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_postget postAInspect

Returns the full text of one in-site note by slug. Substack essays live on Substack; for those this returns the external URL to read instead. Get slugs from list_writing.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesThe post slug, as returned by list_writing.

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden. It discloses a significant non-obvious behavior: Substack essays are not returned as full text but as an external URL. However, it does not mention error behavior, missing slugs, or the exact response format beyond the text/URL distinction.

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?

Three tightly packed sentences with no filler. The main return behavior is front-loaded, the Substack exception is clearly explained, and the source for the slug is pointed to. Every sentence 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?

For a single-parameter tool with no output schema, the description covers the essential input source and the key behavioral deviation. It could go further on failure modes or response structure, but the core calling context is complete enough for an agent to use it correctly.

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?

Schema coverage is 100%, so the schema already documents the slug parameter. The description reinforces that slugs come from list_writing, but this adds little beyond the schema's existing parameter description. Baseline 3 is appropriate.

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 states a specific verb ('Returns') and a clear resource ('one in-site note by slug'), and immediately distinguishes itself from Substack-hosted essays and from sibling list_writing. This makes its scope unmistakable even without opening the schema.

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 clearly implies when to use this tool: when you have a slug from list_writing. It also explains the important conditional behavior for Substack essays. It does not explicitly enumerate when not to use this tool versus sibling retrieval tools, but the context is strong enough for an agent to route correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_profileget profileAInspect

Returns who Khalid Ibne Hasan is: name, role, organization, location, links, and a short professional bio. Use this first to ground any answer about Khalid.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries the burden of explaining behavior. It clearly indicates this is a read-only retrieval tool that returns a fixed set of profile fields, and the guidance to use it first reinforces its role as a stable reference. For a zero-parameter getter, this is adequate transparency.

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 two sentences with no filler. The return content is front-loaded, and the usage directive is a single actionable clause. Every word earns its place.

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?

For a zero-parameter profile tool with no output schema, the description is complete: it identifies the entity, enumerates expected fields, and tells the agent when to invoke it. There is no missing information needed to call or interpret this tool.

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?

The tool has zero parameters, so the baseline is 4. The schema has no properties to document, and the description compensates by listing what the returned profile contains.

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 states a specific verb ('Returns'), a specific resource (Khalid Ibne Hasan's profile), and enumerates the exact content (name, role, organization, location, links, bio). This clearly separates it from sibling tools that return projects, posts, case studies, or resumes.

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 gives explicit guidance: 'Use this first to ground any answer about Khalid.' This establishes a clear starting point for the agent. It does not explicitly name alternatives or exclusion cases, but for a personal-profile tool the usage context is sufficiently clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_resumeget resumeAInspect

Returns Khalid Ibne Hasan's structured resume: work experience, education, skill groups, and the URL of the downloadable PDF version.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral burden. 'Returns... structured resume' clearly conveys a read-only retrieval operation with no side effects or prerequisites, and it discloses what the response contains. This is sufficient for a simple 0-parameter tool, though it does not mention error behavior or external fetching nuance.

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?

A single, front-loaded sentence that states the verb, resource, and key content in order. Every word earns its place, with no filler or repetition.

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?

Complete for a zero-parameter retrieval tool with no output schema. The description enumerates what the resume contains and the PDF URL, giving an agent enough to know whether to call it and what to expect in the response. No critical gaps remain.

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?

The tool has zero parameters, and the rubric establishes a baseline of 4 for such tools. The description adds no parameter details because none exist; nothing further is needed.

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 the specific verb 'Returns' with a named resource (Khalid Ibne Hasan's structured resume) and enumerates the major content categories: work experience, education, skill groups, and PDF URL. This makes the tool's purpose unambiguous and distinct from sibling tools like get_profile or get_case_study.

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

Usage Guidelines3/5

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

No explicit when-to-use or exclusion guidance is given, but the description's specificity implies usage when an agent needs Khalid Ibne Hasan's resume or its PDF link. Since this is a zero-parameter fetch tool, the context is clear enough without routing statements, though differentiating it from get_profile would have been slightly stronger.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_projectslist projectsAInspect

Lists Khalid's shipped case studies (products built at Keyin College) and his side projects (the Lab). Each entry includes a slug usable with get_case_study, a summary, and tags.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses the output shape: each entry includes a slug usable with get_case_study, a summary, and tags. It does not explicitly state read-only behavior, but 'Lists' and the absence of mutation language make that reasonably clear.

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?

A single sentence front-loads the action and scope, then adds only the essential return details: slug, summary, and tags. Every clause earns its place with no redundant filler.

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?

For a no-parameter list operation, the description is nearly complete: it identifies what is listed and what each entry contains. It does not mention ordering, pagination, or a full return type, but those are not essential given the tool's simplicity and the absence of an output schema.

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?

The tool has zero parameters, so the 100% schema coverage makes parameter semantics trivially complete. The 0-parameter baseline applies, and the description correctly says nothing about parameters because there are none.

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 states a specific verb ('Lists') and a precise resource: Khalid's shipped case studies at Keyin College and his side projects (the Lab). This clearly distinguishes the tool from siblings like list_writing, and the mention of get_case_study ties it to a related workflow.

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

Usage Guidelines3/5

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

The description implies when to use the tool—when a caller needs a list of Khalid's projects—but it does not explicitly discuss alternatives or when not to use it. The context is clear enough to infer selection, but no direct guidance is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_writinglist writingAInspect

Lists Khalid's writing: in-site notes and Substack essays, merged and sorted newest first. Each entry has a title, source, date, and URL.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

There are no annotations, so the description carries the full burden. It discloses that results are merged from two sources, sorted newest first, and that each entry includes title, source, date, and URL. This provides solid behavioral transparency for a simple read-only listing tool with no parameters.

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 two sentences, front-loads the main action, and every clause adds information: sources, merging behavior, sorting, and entry fields. There is no redundancy or filler.

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?

For a zero-parameter list tool with no output schema, the description is complete. It states what is listed, the sources, ordering, and the exact fields of each returned entry, leaving no critical ambiguity for an agent deciding to call it.

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?

The tool has zero parameters and 100% schema coverage because the schema is empty, so the baseline is 4. The description adds useful context about what the returned entries contain, which is not parameter-related but compensates for the absence of an output 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 uses a specific verb ('Lists') and a specific resource ('Khalid's writing'), then clarifies the content sources and output shape. It is clearly distinguishable from siblings like get_post or search_site because it describes a merged, sorted listing operation rather than retrieval or search.

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 gives clear context: this tool is for obtaining a merged list of Khalid's writing, ordered newest first. It does not explicitly mention alternatives or exclusions, but the intended use case is unambiguous given the no-argument signature and the detailed scope.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_sitesearch siteAInspect

Searches all of khalidibnehasan.com (case studies, side projects, writing, profile pages) for a phrase and returns matching items with URLs and snippets.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe word or phrase to search for.

TDQS

A4.3/5.0
Behavior4/5

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

Without annotations, the description carries the transparency burden and does well: it states the search scope and the return value ('matching items with URLs and snippets'). The verb 'Searches' appropriately conveys a read-only operation and implies no destructive side effects.

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?

One focused sentence front-loads the action and resource, lists the searched categories, and states the output. There is no filler or redundant restatement.

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?

This is a simple one-parameter tool with no output schema, and the description supplies the essential missing context: what is searched and what a successful call returns. Nothing critical is missing for an agent to invoke it correctly.

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?

The schema already provides 100% coverage for the single 'query' parameter. The description's 'phrase' aligns with the schema's 'word or phrase' but adds no additional semantic value beyond what the schema states.

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 ('Searches') and names the exact resource ('all of khalidibnehasan.com') with the content categories searched. This clearly differentiates it from sibling tools that retrieve or list specific content types.

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 gives clear context: this is the tool for finding a phrase anywhere on the site, across case studies, side projects, writing, and profile pages. It does not explicitly name sibling alternatives or provide when-not-to-use guidance, but the scope is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    Exposes personal portfolio data as tools for Claude to answer questions about the developer, including profile, skills, experience, projects, and contact information.
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to discover and retrieve professional portfolio information including profile, experience, skills, projects, and contact details through MCP tools.
  • A
    license
    A
    quality
    C
    maintenance
    Enables searching and retrieving portfolio data including experience, skills, and contact information through natural language queries.
    5
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Exposes a public, read-only professional profile with tools to search resume evidence, fetch curated links, and generate career briefs for LLM agents.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.4/5.0
Disambiguation5/5

Each tool targets a distinct resource and action: profile, resume, availability, projects, writing, case study detail, post detail, site search, and persona Q&A. The only potentially overlapping pair (list_projects/get_case_study and list_writing/get_post) follows a clear list-then-get pattern, so an agent can easily distinguish them.

Naming Consistency5/5

Tool names follow a consistent verb_noun pattern: get_*, list_*, ask_khalid, and search_site. All are lowercase with underscores and use clear, predictable verbs that match their purpose.

Tool Count5/5

Nine tools is well-scoped for a personal portfolio server. Each tool covers a meaningful aspect of the site's content or interaction, and none feel redundant or superfluous.

Completeness5/5

The surface covers the full portfolio experience: profile, resume, availability/contact, project listings with deep dives, writing listings with content retrieval, and whole-site search. No obvious dead ends or missing operations for the stated purpose.

Resources