Skip to main content
Glama
Kinnectd

A2Me MCP Server

by Kinnectd

A2Me MCP Server

v1 · read-only. A Model Context Protocol server that exposes read-only, privacy-redacted family-context tools for the A2Me family social platform — so assistants like Claude, ChatGPT, or KAI can answer "when is mom's birthday?" or help write a message to grandma, scoped to your own family.

Hosted at https://mcp.a2me.app/mcp and used in production for A2Me's Connect a2me feature.

Connect from an AI assistant

In Claude or ChatGPT, add a custom connector using the URL:

https://mcp.a2me.app/mcp

You'll be sent through OAuth to sign in to A2Me and grant read-only access; the assistant then has family-aware context scoped to your account.

Related MCP server: zkshare-mcp

Run it locally

npm install
npm run dev        # stdio transport, mock data by default

It runs on stdio by default (for local MCP clients) and supports a remote HTTP transport (MCP_TRANSPORT=http) for the hosted deployment. By default it uses mock data (A2ME_USE_MOCK=true); set A2ME_API_URL + A2ME_USE_MOCK=false to call a real API. See .env.example.

Available Tools

Tool

Description

get_family_members

Returns the user's family members with relationship labels

get_upcoming_family_dates

Birthdays, anniversaries, and events in the next N days

get_recent_family_activity

Recent posts, photos, videos, birthday cards

get_person_profile

A family member's profile, interests, and activity summary

get_relationship_between_people

How two family members are related

get_birthday_card_context

Context for writing a birthday card (memories, interests, tone)

find_family_member

Fuzzy search by name or relationship ("mom", "my grandmother")

answer_family_date_question

Natural language date questions ("When is mom's birthday?")

get_message_context_for_person

Context for writing a message with suggestions

get_upcoming_events

Upcoming events with the user's RSVP status and RSVP counts

get_trip_overview

A trip's dates, roster, travel details (flights/lodging), itinerary

get_life_story

A family member's life story chapters (or recent story answers)

get_unanswered_story_questions

Unanswered story questions — interview prep for a visit

get_person_wishlist

A family member's wishlist for gift ideas

search_family_memories

Keyword search over recent family posts and memories

whats_new

Catch-up bundle: recent posts + what's coming up

Prompts

The server also exposes prompts — one-click starting points that appear as connector commands in Claude (and suggestions in ChatGPT), so users get value without knowing tool names. Each steers the assistant to the read-only tools above:

Prompt

What it does

write_birthday_card

Draft a birthday card grounded in a person's context

write_family_message

Draft a message for any occasion/tone

family_catch_up

Summarize what's new with the family

upcoming_family_dates

List upcoming birthdays/anniversaries with suggestions

about_person

Warm summary of a family member and how you're related

The person argument on these prompts autocompletes from your family roster (names + relationship labels) as you type — MCP argument completion, scoped to your family. See src/prompts/index.ts and src/completions.ts.

Example Scenarios

  1. "Help me write a birthday card for my sister"

    • find_family_member → resolves "my sister" to Sarah Walker

    • get_birthday_card_context → returns interests (painting, hiking, coffee), tone suggestions

  2. "When is grandma's birthday?"

    • answer_family_date_question → returns Margaret Walker's birthday (November 8)

  3. "What's been happening in the family?"

    • get_recent_family_activity → returns recent posts, photos, events

  4. "Help me write a thank you message to my dad"

    • get_message_context_for_person → returns Robert Walker's context, interests, suggestions

  5. "Who's in my family?"

    • get_family_members → returns all family members with relationships

  6. "What events are coming up?"

    • get_upcoming_family_dates → returns upcoming birthdays, anniversaries, events

Architecture

┌─────────────────────────────────────────────────────────┐
│                    MCP Client (LLM)                       │
│              (Claude, ChatGPT, KAI, etc.)                │
└───────────────────────┬─────────────────────────────────┘
                        │ stdio (MCP Protocol)
┌───────────────────────▼─────────────────────────────────┐
│                  A2Me MCP Server                          │
│  ┌─────────────────────────────────────────────────┐    │
│  │              Tool Registry (16 tools)             │    │
│  └──────────────────────┬──────────────────────────┘    │
│                         │                                │
│  ┌──────────────────────▼──────────────────────────┐    │
│  │         Family Context Resolver                   │    │
│  │   (fuzzy matching, relationship resolution)       │    │
│  └──────────────────────┬──────────────────────────┘    │
│                         │                                │
│  ┌──────────────────────▼──────────────────────────┐    │
│  │            A2Me API Client                        │    │
│  │   (currently mock, future: real HTTP calls)       │    │
│  └──────────────────────┬──────────────────────────┘    │
│                         │                                │
│  ┌──────────────────────▼──────────────────────────┐    │
│  │            Auth Context                           │    │
│  │   (currently mock, future: OAuth/Firebase)        │    │
│  └─────────────────────────────────────────────────┘    │
└─────────────────────────────────────────────────────────┘
                        │ (future)
┌───────────────────────▼─────────────────────────────────┐
│                   A2Me REST API                           │
│               (kinnectd-api service)                     │
└─────────────────────────────────────────────────────────┘

Authentication

Currently uses mock authentication — always returns an authenticated user ("Alex Walker") for local development.

Future production integration:

  • OAuth2/Firebase token validation via A2Me API

  • Token passed via MCP session context or environment

  • Per-user data isolation (users only see their own family)

Required A2Me API Endpoints (Future)

Method

Endpoint

Description

GET

/family/members

List user's family members

GET

/family/dates/upcoming

Upcoming dates with filters

GET

/family/activity/recent

Recent family activity feed

GET

/people/{personId}/context

Person profile with safe context

GET

/relationships/path

Relationship path between two people

GET

/birthday-cards/context/{personId}

Birthday card writing context

ChatGPT app widgets

For ChatGPT (Apps SDK), four tools render an interactive inline widget instead of plain JSON:

  • get_upcoming_family_dates → an Upcoming family dates card

  • get_family_members → a Your family roster

  • get_person_profile → a Family member profile card

  • get_recent_family_activity → a Recent family activity feed

Each widget is a small React bundle in widgets/src/ built by npm run build:widgets into dist-widgets/<name>.js|.css. The server serves those as static assets (/widgets/...) and exposes each as a ui://widget/<name>.html resource (MIME text/html+skybridge); the paired tool carries _meta["openai/outputTemplate"] pointing at it. The widget reads the tool's structuredContent from window.openai.toolOutput and renders it. Other MCP clients (Claude, KAI) ignore the widgets and use the same tools' text output. See src/widgets/registry.ts.

Development

npm run dev            # Run the server with tsx (hot reload)
npm run build          # Compile server (tsc) + build widget bundles
npm run build:server   # Server only
npm run build:widgets  # Widget bundles only (-> dist-widgets/)
npm run test           # Run tests (incl. widget render tests)
npm run test:watch     # Watch mode
npm run lint           # ESLint
npm run format         # Prettier
npm run check          # Type check only

Privacy Design

This server is designed to be privacy-first:

  • No email addresses, phone numbers, or physical addresses are ever returned

  • Birthdays are shown as month-day only (no birth year)

  • No financial or health information

  • All data scoped to the authenticated user's family only

  • Managed accounts (children) have additional protections

Privacy Policy

Privacy policy: https://a2me.app/privacy

This connector accesses A2Me data on behalf of the authenticated user, over an OAuth 2.0 "Connect A2Me" flow, and is bound by the A2Me privacy policy above.

  • What we collect / access: read-only family-context data for the authenticated user's own family — member names, relationship labels, month–day of birthdays and events, and recent activity summaries. We never return email addresses, phone numbers, physical addresses, birth years, or financial/health data.

  • How it's used: returned to the connected AI assistant solely to answer the user's request in-session. The connector does not train models on this data and performs no writes back to A2Me.

  • Storage & retention: the connector holds no family data at rest. For transparency and abuse prevention we log access metadata (timestamp, tool name, calling assistant, scopes) in an append-only audit log; users can review this under Settings → Connected apps in A2Me.

  • Third-party sharing: OAuth tokens are issued and validated via our auth provider (Scalekit); no family data is shared with third parties beyond the AI assistant the user explicitly connected.

  • Contact: privacy@a2me.app · security disclosures per SECURITY.md.

Tech Stack

  • Runtime: Node.js 20+

  • Language: TypeScript (strict mode)

  • MCP SDK: @modelcontextprotocol/sdk

  • Validation: Zod

  • Testing: Vitest

  • Transport: Streamable HTTP (remote/production) and stdio (local dev)

License

Private — Kinnectd / A2Me

Available Tools

16 tools
answer_family_date_questionAnswer family date questionA
Read-onlyIdempotent
Inspect

Answers natural language questions about family dates like "When is mom's birthday?"

ParametersJSON Schema
NameRequiredDescriptionDefault
questionYesNatural language question about family dates

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering safety attributes. The description adds no additional behavioral details (e.g., return format, limitations, knowledge source), but given the annotation coverage, a score of 3 is appropriate.

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, includes a relevant example, and contains no filler. Every word contributes to clarifying the tool's purpose.

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?

The tool has one simple parameter and no output schema. The description combined with the schema and annotations is sufficient for an agent to understand the tool's scope. It does not explicitly describe return values, but the tool name and purpose make this obvious.

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 single parameter 'question' is described as 'Natural language question about family dates'. The description repeats this concept and adds an example, but does not add significant meaning beyond the schema. 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 clearly states the tool's function: answering natural language questions about family dates, with a concrete example ('When is mom's birthday?'). This distinguishes it from sibling tools that retrieve specific data (e.g., get_upcoming_family_dates) rather than interpret arbitrary questions.

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 implies usage for natural language date questions and provides a clear example. It does not explicitly list exclusions or compare to alternatives, but the context is sufficiently clear for an agent to know when to invoke this tool versus sibling tools.

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

find_family_memberFind family memberA
Read-onlyIdempotent
Inspect

Searches for a family member by name or relationship. Supports "my grandmother", "mom", "Sarah".

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesName, relationship, or natural reference (e.g., "Sarah", "my grandmother")

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds the behavioral trait that it accepts natural language references, which is useful, but it doesn't disclose return behavior or edge-case handling. With annotations covering safety, the moderate score reflects incomplete behavioral context.

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 long, front-loads the action ('Searches for...'), and includes concrete examples. Every sentence contributes meaning without redundancy or fluff.

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 simple one-parameter search tool with strong annotations, the description covers core functionality and expected inputs. However, since there is no output schema, it would be more complete to mention what the tool returns (e.g., a person object) or any limitations. Still, the current description is largely sufficient for this simple case.

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%, and the query property description already includes the same examples ('Sarah', 'my grandmother') as the tool description. The description adds no new parameter semantics beyond what the schema provides, so it meets the baseline but doesn't go further.

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 tool 'searches for a family member' using a specific verb and resource, and specifies the query types ('by name or relationship'). This differentiates it from siblings like get_family_members, which likely lists all members, and get_person_profile, which fetches a known person's details.

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 implies when to use the tool by showing example queries ('my grandmother', 'mom', 'Sarah'), but it doesn't explicitly contrast with alternative tools or state when not to use it. The context is clear enough for an agent to infer the primary use case, but exclusions are missing.

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

get_birthday_card_contextGet birthday card contextA
Read-onlyIdempotent
Inspect

Returns context for writing a birthday card — recipient's interests, memories, and tone suggestions.

ParametersJSON Schema
NameRequiredDescriptionDefault
personIdYesPerson ID of the birthday card recipient

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, covering safety. The description adds what content is returned (interests, memories, tone suggestions) but does not disclose behaviors like empty results or data source. This is adequate but not rich.

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, concise sentence that conveys the core purpose without any redundant or unnecessary wording. It is well-structured and front-loaded with the main action.

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 simple read-only tool with one parameter and no output schema, the description is largely complete. It explains the purpose and the nature of the returned context. It could mention edge cases like missing person data, but overall it is sufficient.

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 fully describes the only parameter (personId) with a meaningful description, so schema coverage is 100%. The description does not add any additional parameter context beyond the schema, so baseline 3 applies.

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 tool returns context for writing a birthday card, listing specific content types (interests, memories, tone suggestions). This distinguishes it from sibling tools like get_message_context_for_person by being birthday-specific.

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 implicitly conveys use when writing a birthday card, giving clear context. However, it does not explicitly compare with alternatives or state when not to use it, so it lacks explicit exclusions.

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

get_family_membersGet family membersA
Read-onlyIdempotent
Inspect

Returns the authenticated user's family members with relationship labels. Privacy-safe: no emails, phones, or full DOBs.

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?

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds useful behavioral context by explicitly stating 'Privacy-safe: no emails, phones, or full DOBs,' which is beyond the annotations and clarifies the data exposure. This is valuable for the agent's decision-making, though it doesn't disclose other traits like pagination or ordering.

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 brief sentences: the first states the core function, the second adds a meaningful privacy clarification. There is no fluff or redundancy. Every sentence earns its place, making it highly concise and well-structured.

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 (zero parameters, no output schema), the description adequately explains the return value as 'family members with relationship labels.' It also adds privacy context. It does not explicitly describe the return structure (e.g., array vs. object) or any limits, but for a simple read-only list operation, the information is sufficient to understand what to expect.

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 description carries no burden for explaining parameter syntax or meaning. The schema is trivially complete (100% coverage) with no properties. The baseline for zero parameters is 4, and the description provides no conflicting or redundant info, so this score 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 clearly states a specific verb ('Returns') and a specific resource ('the authenticated user's family members') with a notable detail (relationship labels). It effectively distinguishes itself from sibling tools like find_family_member (which searches for a specific member) or get_person_profile (which returns details of a single person) by describing a list of all family members.

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 usage: use this tool to retrieve the user's family members. It provides the context of 'authenticated user' but does not explicitly state when to use this over alternatives (e.g., find_family_member for searching, get_person_profile for a single person). No exclusions or explicit alternative guidance is provided, leaving usage to be inferred rather than clearly stated.

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

get_life_storyGet life storyA
Read-onlyIdempotent
Inspect

The written life story (biography chapters) of a family member, built from family memories. Use for 'tell me about grandma's childhood', writing toasts/speeches/eulogies, or family history questions.

ParametersJSON Schema
NameRequiredDescriptionDefault
personNameYesFamily member name or relationship (fuzzy), or "me"

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the description doesn't need to restate these. It adds context that the story is 'built from family memories', which is somewhat useful, but it does not disclose additional behavioral traits like return format or potential incompleteness. The description does not contradict annotations.

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-loaded with the core function, and follows with concise use-case examples. Every sentence earns its place with no redundant or vague wording.

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 simple single-parameter schema and rich annotations, the description is nearly complete. It explains what the tool returns and when to use it. It could arguably mention the format (e.g., 'returns text') but the term 'written life story' strongly implies narrative text, and no output schema exists to clarify further.

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 covers the only parameter (personName) completely with clear semantics. The description does not add any extra meaning about the parameter beyond what the schema provides, so a baseline score of 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 clearly states it returns the written life story (biography chapters) of a family member, built from family memories. It distinguishes this from sibling tools like get_person_profile and search_family_memories by emphasizing narrative biography and specific use cases.

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 explicit use cases ('tell me about grandma's childhood', writing toasts/speeches/eulogies, family history questions), giving clear context on when to invoke this tool. However, it does not mention when not to use or name alternative tools, so it lacks the when-not/alternatives aspect for a top score.

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

get_message_context_for_personGet message context for personA
Read-onlyIdempotent
Inspect

Returns context for writing a message to a family member with suggestions and privacy notes.

ParametersJSON Schema
NameRequiredDescriptionDefault
toneNoDesired tone (e.g., "warm", "funny", "formal")
occasionNoOccasion (e.g., "birthday", "thank you")
personReferenceYesWho the message is for (name or relationship)

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds output content (suggestions and privacy notes) but does not disclose further behavioral traits like data freshness, pagination, or filtering. This is adequate but not rich.

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 with no redundant information. It efficiently communicates the tool's purpose and output.

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?

The tool is simple with 3 parameters and no output schema. The description adequately conveys the high-level return ('suggestions and privacy notes'), and the schema covers inputs. It could benefit from a bit more detail on what 'context' includes, but it is complete enough for this moderate complexity.

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 all three parameters (personReference, tone, occasion) are well-described in the schema. The description adds no additional parameter-specific meaning, so the baseline of 3 applies.

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 resource ('context for writing a message to a family member'), clearly distinguishing this from sibling tools like get_person_profile or get_birthday_card_context by mentioning 'suggestions and privacy notes'. It states exactly what the tool provides and for whom.

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: when writing a message to a family member. However, it does not explicitly mention alternatives or exclusion criteria, so it falls 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_person_profileGet person profileA
Read-onlyIdempotent
Inspect

Returns a family member's profile with interests and recent activity. No private contact info.

ParametersJSON Schema
NameRequiredDescriptionDefault
personIdYesThe person ID to look up

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly, openWorld, idempotent, and non-destructive behavior. The description adds the behavioral constraint 'No private contact info,' which clarifies what will be excluded from the response. This adds value beyond the annotations, though it doesn't cover error cases or rate limits.

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?

Two short sentences, completely waste-free. The core purpose is front-loaded, and the privacy note is a useful qualifier that adds context without redundancy.

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 read-only tool with no output schema, the description adequately conveys the return content (profile, interests, recent activity) and a key exclusion (private contact info). It could elaborate on the exact return structure, but given the simplicity, it is sufficient.

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 input schema provides full coverage for personId with a clear description. The tool description does not add any additional parameter semantics, so the baseline 3 applies per the rubric.

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 it returns a family member's profile with interests and recent activity. The verb 'Returns' is specific, and the resource is well-defined, distinguishing it from sibling tools like get_family_members and get_recent_family_activity.

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 alternative references are provided, but the description implies usage for retrieving a specific family member's profile and recent activity. It does not explain when to prefer this over get_family_members or get_recent_family_activity, so guidance is only implied.

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

get_person_wishlistGet person wishlistA
Read-onlyIdempotent
Inspect

A family member's wishlist — for gift ideas and birthday/holiday planning.

ParametersJSON Schema
NameRequiredDescriptionDefault
personNameYesFamily member name or relationship (fuzzy)

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, covering safety and mutability. The description adds no additional behavioral details, such as return format or edge cases. Since annotations carry the burden, a baseline of 3 is appropriate; no contradiction exists.

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, concise sentence that immediately communicates the tool's purpose and context. Every word contributes value—no fluff or redundancy. This is an appropriately sized description for a simple tool.

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 simple one-parameter getter with robust annotations, the description is largely complete. It communicates the resource (wishlist) and the use case (gift planning). While it does not describe the return structure, the concept of a 'wishlist' is self-explanatory, and the annotations cover behavioral guarantees.

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 input schema provides 100% coverage for the single parameter 'personName' with a description of 'Family member name or relationship (fuzzy)'. The tool description adds no extra parameter semantics beyond what the schema already specifies, so the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as returning a family member's wishlist and explicitly states its intended use for gift ideas and birthday/holiday planning. This distinguishes it from sibling tools, none of which mention wishlists. However, the description uses a noun phrase rather than an explicit verb, relying on the title 'Get' to convey the action.

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 a clear usage context: 'for gift ideas and birthday/holiday planning.' This tells the agent when to invoke the tool. It does not explicitly mention when not to use it or alternative tools, but the context is sufficiently specific to guide selection.

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

get_recent_family_activityGet recent family activityB
Read-onlyIdempotent
Inspect

Returns recent family activity (posts, photos, videos, birthday cards, events).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default: 20)
sinceHoursNoHours to look back (default: 72)

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds the content scope (posts, photos, etc.) but does not disclose behavioral details such as ordering, time-window defaults, or whether results are paginated. The added value over annotations is modest, so a 3 is appropriate.

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, clear, front-loaded sentence with no redundant words. It efficiently states the tool's output without rambling, earning a top score for conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with rich annotations and complete schema, the description is adequate but not fully complete. It lacks differentiation from many sibling tools and does not mention return format or pagination. Given the absence of an output schema, a bit more context would improve completeness, but the description is minimally viable.

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% for the two parameters (limit and sinceHours), so the structured schema carries full semantic weight. The description adds no parameter-specific meaning, which is acceptable given the high schema coverage, yielding the baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb (returns) and resource (recent family activity) with specific content types (posts, photos, videos, birthday cards, events). It is specific enough to convey the tool's purpose, though it does not explicitly differentiate from sibling tools like 'whats_new' or 'get_upcoming_events'.

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?

No guidance is provided on when to use this tool versus alternatives. Given siblings like get_upcoming_events and whats_new, the description lacks any contextual cues or exclusions to help an agent choose this tool over similar ones.

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

get_relationship_between_peopleGet relationship between peopleA
Read-onlyIdempotent
Inspect

Returns the relationship between two family members in the family graph.

ParametersJSON Schema
NameRequiredDescriptionDefault
personAIdYesFirst person ID
personBIdYesSecond person ID

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, covering safety and idempotency. The description adds contextual detail ('family graph') but does not disclose additional behavioral traits such as return format, error handling, or edge cases. This is adequate but adds limited value beyond annotations.

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, concise sentence that is front-loaded and directly states the tool's purpose. Every word earns its place with zero waste.

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?

The tool is simple with two parameters, annotations are comprehensive, and the description clearly explains the return value ('relationship between two family members'). No output schema exists, but the nature of the response is easily inferred, making the description complete for this context.

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% (personAId and personBId both have descriptions). The description does not add any parameter-specific meaning beyond what the schema provides, so the baseline of 3 applies.

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 tool's function: 'Returns the relationship between two family members in the family graph.' The verb 'Returns' and resource 'relationship between two family members' are specific, and the scope is distinguished from sibling tools like get_person_profile or get_family_members.

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, nor does it mention any prerequisites, exclusions, or scenarios. It is simply a purpose statement, leaving the agent to infer usage from the name.

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

get_trip_overviewGet trip overviewA
Read-onlyIdempotent
Inspect

Everything about a family trip in one view: dates, destination, who's coming (with RSVP and pending invites), each person's travel details (flights and lodging — e.g. 'when does Marcia land'), and the itinerary of linked events.

ParametersJSON Schema
NameRequiredDescriptionDefault
tripNameNoTrip name (fuzzy). Omit to use the only upcoming trip.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds meaningful context about the response contents (RSVP status, pending invites, flight/lodging details, linked event itinerary) and provides a concrete example ('when does Marcia land'). No contradiction with annotations.

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 with a clear opening summary followed by a colon and a list of included data types. Every element adds value and 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?

Despite lacking an output schema, the description thoroughly conveys what the returned data will include, even offering an example question ('when does Marcia land') to clarify the type of detail available. This is sufficient for an agent to set expectations for a composite overview response.

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% with tripName described as 'fuzzy' and optional, with fallback to the only upcoming trip. The tool description itself does not elaborate on parameters, but the schema's description is sufficient, so 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 clearly states the tool provides 'Everything about a family trip in one view' and enumerates specific contents (dates, destination, attendees, travel details, itinerary), distinguishing it from sibling getters that focus on individual family members or events.

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 phrase 'in one view' implies using this tool when a holistic overview is needed rather than calling multiple specific getters. However, no explicit alternatives or when-not-to-use guidance is provided, so it falls 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_unanswered_story_questionsGet unanswered story questionsA
Read-onlyIdempotent
Inspect

Story questions about a family member that nobody has answered yet — perfect for 'what should I ask Grandpa when I visit' interview prep.

ParametersJSON Schema
NameRequiredDescriptionDefault
personNameYesFamily member name or relationship (fuzzy), or "me"

TDQS

A4.1/5.0
Behavior3/5

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

With readOnlyHint, openWorldHint, idempotentHint, and destructiveHint present, the description does not need to restate safety. It does add a behavioral filter: only unanswered questions are returned, and it frames results as interview prompts. However, this largely restates the tool name and does not disclose additional behavior like result ordering or what happens when no questions are available.

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 one concise sentence that front-loads the primary action and scope, then adds a memorable use case. There is no filler or repetition of schema field names.

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 read-only tool with one documented parameter and helpful annotations, the description covers what the tool returns and why someone would use it. No output schema exists, but the return concept is clear enough for an agent to select and invoke the tool.

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 documents personName with 100% coverage (family member name/relationship, fuzzy, or 'me'). The description does not add parameter-specific details, which is acceptable given the schema coverage; baseline 3 applies.

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+resource ('Story questions about a family member that nobody has answered yet') and immediately clarifies the exact scope. It distinguishes itself from sibling getters like get_life_story or get_recent_family_activity by focusing on unanswered story questions for interview prep.

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 phrase 'perfect for "what should I ask Grandpa when I visit" interview prep' provides a clear use context. It does not explicitly name alternatives or say when not to use it, but the intended scenario is unambiguous.

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

get_upcoming_eventsGet upcoming eventsA
Read-onlyIdempotent
Inspect

Upcoming events the user is invited to or hosting, with dates and their RSVP status. Use for questions like 'what's coming up' or 'when is the reunion'.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax events to return (default: 5)

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate the tool is read-only and non-destructive. The description adds useful context: results include dates and RSVP status, and the scope is limited to events the user is invited to or hosting. This goes beyond the annotations without contradicting them.

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 long, front-loaded with the tool's function and output, followed by usage examples. Every word adds value with no redundancy.

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 list tool with one optional parameter, comprehensive annotations, and no output schema, the description fully covers what an agent needs: purpose, scope, and example queries. It even implies the response shape (dates and RSVP status), making it complete.

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 only parameter, limit, is fully described in the schema with type, range, and default value. The tool description does not add additional parameter detail, so it relies on the schema. Since schema coverage is 100%, a baseline score of 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 clearly states the tool returns upcoming events the user is invited to or hosting, including dates and RSVP status. It provides concrete example queries, which makes the purpose unambiguous and distinguishes it from sibling tools like get_upcoming_family_dates.

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 usage examples ('what's coming up', 'when is the reunion'), making it clear when to use the tool. It does not mention when not to use it or alternative tools, but the examples are sufficient for an agent to select it appropriately.

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

get_upcoming_family_datesGet upcoming family datesA
Read-onlyIdempotent
Inspect

Returns upcoming birthdays, anniversaries, and family events. Dates shown as month-day only.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysAheadNoDays to look ahead (default: 30)

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds the behavioral detail that dates are shown as month-day only, which is useful, though not extensive.

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?

Two short, focused sentences. The first states the core function and the second adds a relevant formatting detail. No filler or redundancy.

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 simple read-only tool with one optional parameter, the description is sufficient. It explains what is returned and the date format. The absence of an output schema is mitigated by the clear return description, though more detail about event types could be added.

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 covers the only parameter (daysAhead) with a full description and default value. The tool description adds nothing beyond the schema, so it meets the baseline for high schema coverage.

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 tool returns upcoming birthdays, anniversaries, and family events, using a specific verb and resource. This distinguishes it from siblings like get_upcoming_events by specifying the family-related scope.

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 purpose is implied well enough, but no explicit guidance is given on when to use this tool versus alternatives like get_upcoming_events or answer_family_date_question. The description does not mention exclusions or alternative tools.

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

search_family_memoriesSearch family memoriesA
Read-onlyIdempotent
Inspect

Search recent family posts and memories by keyword, optionally filtered to one person or a time window. Use for 'what did we do last summer' or 'find the post about the lake trip'.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesKeywords to search for
sinceDaysNoDays back to search (default: 365)
personNameNoOptionally restrict to posts by this family member (fuzzy name)

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description only restates the filter options already present in the schema (time window, person) and does not disclose additional behavioral traits such as result ordering, limits, or pagination. This is adequate but not exceptional.

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, opens with the core action, and follows with relatable examples. Every word earns its place, with no redundancy or 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?

Given the tool's simplicity, well-documented schema, and strong safety annotations, the description covers the main scope and usage context. The lack of an output schema could have been mitigated by describing the return format, but the purpose implies a list of posts/memories and the examples are sufficient for most cases.

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 input schema provides 100% coverage for all three parameters with descriptive text, including the 'fuzzy name' note for personName. The description merely paraphrases these filter options, adding no extra semantic detail beyond the schema. Baseline 3 is appropriate given high schema coverage.

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 identifies the verb 'Search' and the resource 'family posts and memories', with optional filters for person or time window. This clearly distinguishes it from sibling tools like get_recent_family_activity or find_family_member, and example queries reinforce the intended use.

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 concrete example phrasings ('what did we do last summer', 'find the post about the lake trip') that clarify when to use the tool. However, it does not explicitly name alternatives or state when not to use it, so it falls 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.

whats_newWhat's newA
Read-onlyIdempotent
Inspect

A catch-up summary of what happened in the user's family recently plus what's coming up. Use when the user asks 'what did I miss' or 'catch me up'.

ParametersJSON Schema
NameRequiredDescriptionDefault
sinceDaysNoDays back to summarize (default: 7)

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false, so the safety profile is covered. The description adds scope (recent + upcoming) but no other behavioral details like aggregation, limitations, or performance. This is adequate but not rich, warranting a 3.

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 short sentences, front-loaded with the main purpose and usage triggers. Every word 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, read-only tool with good annotations, the description adequately covers what the tool does and when to use it. It doesn't elaborate on the exact contents of the summary or return format, but given the lack of an output schema, this is acceptable. Score 4.

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 only parameter sinceDays is fully described in the schema with min, max, and default (100% coverage). The description does not add any additional parameter meaning, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a catch-up summary of recent family activity plus upcoming events, which is a specific verb+resource. However, it does not explicitly differentiate from siblings like get_recent_family_activity or get_upcoming_events, so it earns a 4 rather than a 5.

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 says 'Use when the user asks "what did I miss" or "catch me up"', providing clear usage context. It does not mention when not to use or any alternatives, so it falls 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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 16 tool updatesv1.0.0
    • First observedanswer_family_date_question
    • First observedfind_family_member
    • First observedget_birthday_card_context
    • First observedget_family_members
    • First observedget_life_story
    • First observedget_message_context_for_person
    • First observedget_person_profile
    • First observedget_person_wishlist
    • First observedget_recent_family_activity
    • First observedget_relationship_between_people
    • First observedget_trip_overview
    • First observedget_unanswered_story_questions
    • First observedget_upcoming_events
    • First observedget_upcoming_family_dates
    • First observedsearch_family_memories
    • First observedwhats_new

TDQS

A3.8/5.0
Disambiguation4/5

Most tools target distinct resources (family members, dates, trips, stories, wishlists), but there is overlap between get_upcoming_family_dates and get_upcoming_events (both cover events) and between get_recent_family_activity and whats_new (both summarize recent activity). Descriptions help clarify, but an agent might occasionally misselect.

Naming Consistency4/5

The majority of tools follow a get_noun pattern (12 of 16), but find_family_member, answer_family_date_question, search_family_memories, and whats_new deviate, breaking the otherwise consistent convention. This is a minor inconsistency.

Tool Count4/5

At 16 tools, the count is just above the typical well-scoped range, but each tool addresses a distinct aspect of family context (members, dates, trips, stories, wishlists). The breadth feels appropriate for a family-assistant server, though a few could potentially be consolidated.

Completeness4/5

The tool surface covers a broad range of family-context needs: member lookup, events/trips, life stories, memories, wishlists, and context for writing. It is read-only, but that appears intentional. Minor gaps like detailed event details or photo-specific search exist, but agents can work around them.

Maintenance

ActivityActive
ResponsivenessWithin a week

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to query local conversation transcripts and relationship data via a local MCP server, allowing retrieval of past conversations and facts about people.
    1
    AGPL 3.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that provides tools for privacy-oriented context API including encrypted fact storage, commitment-based proofs, and semantic search, enabling users, AI agents, and back-office systems to securely manage and prove personal facts without exposing raw data.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    A privacy-first personal context engine that ingests personal photos and message exports, extracts cited facts, and serves a queryable profile over MCP for natural-language questions like 'when did I last see Sarah?'.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    A read-only MCP server that gives AI access to a local journal vault of transcribed handwritten diaries, offering tools to search entries, read them, and retrieve profile, timeline, and people information.
    MIT

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/Kinnectd/a2me-mcp-server'

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