Skip to main content
Glama

Server Details

EQIQs: 21-framework personality and compatibility for coaching, communication, and team development.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 40 days
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL

TDQS

A4.2/5.0

Scored across 16 tools

Disambiguation4/5

Most tools target distinct resource+action pairs (notes, invites, profiles, scoring), and descriptions explicitly resolve the tricky pairs like get_profile vs get_my_profile and score_compatibility vs score_team. The only mild overlap is among the analytical tools (generate_narrative, prep_meeting, score_team, suggest_lead), but each clearly serves a different decision context.

Naming Consistency5/5

Every tool follows a clean verb_noun snake_case pattern (add_note, create_profile, list_invites, score_compatibility, submit_assessment). The convention is used uniformly across all 16 tools with no camelCase or stylistic mixing.

Tool Count4/5

16 tools is slightly above the ideal 3-15 band but each one maps to a discrete operation in the assessment/rapport workflow. Nothing feels redundant or padded, so the set is reasonable rather than excessive.

Completeness4/5

The surface covers the full lifecycle: profile creation/retrieval, invites, notes, assessments, and multi-person scoring, plus higher-order synthesis tools. Gaps are minor — no update/delete for profiles, notes, or invites — but agents can work around these without blocking core workflows.

Available Tools

16 tools
add_noteAdd a noteAInspect

Save a private note or check-in on one person in the user's workspace; it appears on their EQIQs profile. Use after 1:1s or when the user asks to remember something about someone. Costs 1 unit.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteYesNote text (up to 4,000 characters).
personYesWho the note is about. Accepts a profile id, an exact email, or a full name. If a name matches more than one person the tool asks which one instead of guessing.

Output Schema

ParametersJSON Schema
NameRequiredDescription
personNoWho the note is about.
note_idNoId of the saved note.
created_atNoWhen the note was saved (ISO 8601).
profile_idNoProfile id of that person.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations cover the safety profile (not read-only, not destructive, not idempotent), and the description adds genuinely new context beyond them: the note is private, it surfaces on the person's profile, and the call costs 1 unit. It does not say whether notes can later be edited or removed, so it is strong but not exhaustive.

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 sentences, front-loaded with what is saved and where it appears, followed by the trigger and the cost. No filler and no repetition of schema content.

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 two-parameter mutation tool with an output schema and full annotation coverage, the description supplies what structured fields cannot: visibility, cost, and invocation timing. Only the post-write lifecycle (editing or deleting the note) is left unstated.

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 schema already explains that person accepts an id, exact email, or full name and that ambiguous names trigger a disambiguation prompt. The description adds nothing further about either parameter, so the 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?

States a specific verb (save), resource (note/check-in), scope (one person in the workspace) and the observable effect (appears on their EQIQs profile). The word 'save' cleanly separates it from the sibling list_notes, which only reads notes.

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?

Gives two concrete triggers — after 1:1s, or when the user asks to remember something about someone — which is real usage context rather than an implied one. It stops short of naming when-not to use it or pointing at an alternative such as list_notes for retrieval.

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

create_profileAdd a personAInspect

Add a new person to the user's workspace, optionally with traits already known (e.g. an MBTI type from a past assessment). Use invite_person instead when the person should take the assessment themselves. Returns the new profile id. Costs 1 unit.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesFull name (required).
emailNoOptional email; used to match results if they later take the assessment.
eq_scoreNoOptional emotional-intelligence score 0-100.
disc_typeNoOptional DISC style: D, I, S, C or a blend such as DI.
mbti_typeNoOptional four-letter MBTI type, e.g. INTJ.
departmentNoOptional team or department, used by score_team, prep_meeting and suggest_lead.
date_of_birthNoOptional YYYY-MM-DD. Personal data: never used in business context.
enneagram_typeNoOptional Enneagram type 1-9, with wing if known, e.g. 3w2.
attachment_styleNoOptional. Personal data: never used in business context.

Output Schema

ParametersJSON Schema
NameRequiredDescription
profileNoThe newly created profile.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare the mutation/safety profile (readOnly=false, destructive=false, idempotent=false), so the bar is lower. The description adds genuinely new context — a cost of 1 unit and the fact that traits can be pre-seeded — though it does not warn that non-idempotent creation can produce duplicate profiles.

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 tight sentences, front-loaded with the core action, then the disambiguation, then the return/cost facts. No 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 9-param create tool with a full output schema and safety annotations, the description covers purpose, alternative, return id and cost. The only gap is duplicate-handling behavior implied by idempotentHint=false.

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 each of the 9 parameters is documented in-schema, so the schema does the heavy lifting. The description only gestures at traits ('e.g. an MBTI type') without adding format or constraint detail beyond what the schema already 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?

States a specific verb+resource ('Add a new person to the user's workspace') and explicitly contrasts with the sibling invite_person, so an agent can distinguish the two without opening either schema.

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?

Gives an explicit routing rule: use invite_person instead when the person should self-assess. It also scopes the case where pre-known traits exist, so when-to-use and when-not-to-use are both covered.

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

generate_narrativeWrite a coaching narrativeA
Read-only
Inspect

Premium: write a plain-language coaching narrative for one person, or for a pair when compare_with is given, synthesized from all 21 frameworks. Business context stays on working behavior only. Slower than other tools. Costs 5 units.

ParametersJSON Schema
NameRequiredDescriptionDefault
focusNoOptional topic to emphasize, e.g. 'giving feedback'.
lengthNoApproximate length of the narrative.standard
personYesWho the narrative is about. Accepts a profile id, an exact email, or a full name. If a name matches more than one person the tool asks which one instead of guessing.
contextNoRelationship context that sets framework weighting. 'business' (default) is work-safe and withholds personal-life signals (love language, attachment style, date of birth); the other contexts include them.business
audienceNoWho will read it. Hiring or candidate-screening audiences are intentionally not supported.manager
compare_withNoOptional second person for a pair narrative. Accepts a profile id, an exact email, or a full name. If a name matches more than one person the tool asks which one instead of guessing.

Output Schema

ParametersJSON Schema
NameRequiredDescription
unitsNoTool-call units this narrative costs.
billingNoUnits billed.
contextNoRelationship context for pair narratives.
scoringNoScores the narrative is based on.
subjectNoPerson the narrative is about.
audienceNoWho the narrative is written for.
sectionsNoNarrative split into sections.
narrativeNoThe written coaching narrative.
disclaimerNoDecision-support disclaimer.
guardrailsNoSafety check results.
action_itemsNoAction items pulled from the narrative.
compared_withNoSecond person, for pair narratives.
requires_confirmationNoTrue when the price must be confirmed before running.

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare readOnlyHint/openWorld/destructive, and the description layers on non-obvious behavior: metered cost of 5 units, elevated latency, privacy weighting per context (business withholds love language, attachment style, DOB), and disambiguation behavior when a name matches multiple people. These are exactly the operational traits annotations cannot express.

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 compact sentences, front-loaded with the premium/scope qualifier, then the privacy constraint, then cost and latency. Zero filler and nothing buried.

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?

An output schema exists, so return values need no explanation. For a 6-parameter tool with pair mode and context weighting, the description covers cost, latency, privacy behavior, and audience limits; the only thin spot is not restating accepted identifier forms, which the schema already handles.

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%, so the schema already documents every parameter including the context enum's withholding rules and the compare_with pair trigger. The description reinforces pair mode and framework synthesis but adds no format, syntax, or default semantics beyond the schema; 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?

States a specific verb (write) and resource (plain-language coaching narrative), names the person/pair scope modifier (compare_with), and identifies the synthesis source ('all 21 frameworks'). No sibling tool covers narrative generation, so the tool is unambiguously distinguishable from the rest of the set.

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?

Gives a clear trigger for pair mode ('when compare_with is given') and an explicit exclusion ('Hiring or candidate-screening audiences are intentionally not supported'), plus cost/speed signals ('Slower than other tools. Costs 5 units.') that steer an agent toward cheaper tools when adequate. It stops short of naming a specific alternative to use instead, so not a 5.

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

get_my_profileGet my profileA
Read-onlyIdempotent
Inspect

Return the signed-in user's own EQIQs profile: results across the 21-framework battery (MBTI, Big Five, Enneagram, DISC, EQ and more), plain-language labels, and which frameworks are still missing. Use when the user asks about themselves, e.g. 'what is my Enneagram type?' or 'how do I come across at work?'. Read-only; costs 1 unit.

ParametersJSON Schema
NameRequiredDescriptionDefault
contextNoRelationship context that sets framework weighting. 'business' (default) is work-safe and withholds personal-life signals (love language, attachment style, date of birth); the other contexts include them.business

Output Schema

ParametersJSON Schema
NameRequiredDescription
contextNoRelationship context the profile was filtered for.
profileNoThe person's profile fields that are visible in this context.
matched_byNoHow the signed-in user's own profile was found.
label_meaningsNoPlain-language meanings for the framework labels on the profile.
frameworks_totalNoTotal frameworks EQIQs uses (21).
framework_coverageNoHow many of the 21 frameworks have data.
frameworks_withheldNoHow many frameworks are hidden in this context (e.g. personal-life signals at work).

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so safety is covered. The description adds genuinely new behavioral context beyond annotations: the 1-unit cost and the fact that non-business contexts surface otherwise-withheld signals. It doesn't add rate-limit or failure behavior, but the added context is meaningful.

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 tight sentences: resource first, usage examples second, operational note last. No filler and front-loaded with the most important information.

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

Completeness4/5

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

An output schema exists and annotations cover the safety profile, so return format and side-effect details are already handled. Cost and context-dependent withholding are disclosed; the only thin spot is the absence of explicit sibling routing given the large cluster of profile-related tools.

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 'context' enum is fully documented in the schema, including what each value includes or withholds. The description does not restate or extend parameter semantics, 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?

States a specific verb (return) and resource (the signed-in user's own EQIQs profile) and enumerates the payload contents (21-framework battery, labels, missing frameworks). The 'own'/signed-in qualifier implicitly distinguishes it from the sibling get_profile.

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?

Gives concrete trigger examples ('what is my Enneagram type?', 'how do I come across at work?') that map user intent to this tool. It does not explicitly name a sibling alternative (e.g., how it differs from get_profile for another person), so it stops short of full when/when-not routing.

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

get_profileGet a person's profileA
Read-onlyIdempotent
Inspect

Return the full 21-framework read for one saved person: results per framework with plain-language labels, strengths, and working-style notes. Provide exactly one of profile_id, email or name. Read-only; costs 1 unit.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoFull name. Ambiguous names return a list to choose from rather than a guess.
emailNoThe person's exact email.
contextNoRelationship context that sets framework weighting. 'business' (default) is work-safe and withholds personal-life signals (love language, attachment style, date of birth); the other contexts include them.business
profile_idNoProfile id from list_profiles (preferred).

Output Schema

ParametersJSON Schema
NameRequiredDescription
contextNoRelationship context the profile was filtered for.
profileNoThe person's profile fields that are visible in this context.
label_meaningsNoPlain-language meanings for the framework labels on the profile.
frameworks_totalNoTotal frameworks EQIQs uses (21).
framework_coverageNoHow many of the 21 frameworks have data.
frameworks_withheldNoHow many frameworks are hidden in this context (e.g. personal-life signals at work).

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered; the description still adds non-structured behavior by disclosing the cost ('costs 1 unit') and the one-identifier-at-a-time constraint. It does not describe error behavior for missing profiles or ambiguous names, keeping it short of a 5.

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 sentences, no filler, with the core behavior front-loaded and the invocation constraint plus cost placed immediately after. Every clause carries information an agent needs.

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?

An output schema exists so return-value detail is unnecessary, and the description covers scope, identifier constraint, read-only nature and cost. The only real omission is guidance on how the context parameter alters results, but that is documented in the schema itself.

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?

Schema coverage is 100%, so the baseline is 3, but the description adds the exclusivity rule ('exactly one of profile_id, email or name') that the schema does not encode since required is 0. That constraint meaningfully extends the parameter documentation beyond what the structured fields provide.

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?

States a specific verb and resource ('Return the full 21-framework read for one saved person') and even enumerates what the payload contains (per-framework results, plain-language labels, strengths, working-style notes). This clearly distinguishes it from siblings like list_profiles and get_my_profile.

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 tells the agent it must supply exactly one of profile_id, email or name, which is useful invocation guidance, but it never states when to reach for this tool versus get_my_profile, list_profiles, or prep_meeting. Usage is implied by the resource rather than explained.

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

invite_personInvite someone to compareAInspect

Create a private invite link for someone to take the EQIQs assessment and compare with the user. Finishing the assessment is their consent to share results. Optionally emailed by EQIQs; otherwise the link is returned to hand over. Limited to 10 invites per hour; no self-invites or opted-out addresses. Costs 1 unit.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoInvitee's name, shown in the invite.
emailNoInvitee's email, when they are not saved yet.
personNoExisting saved person to invite (optional if email is given). Accepts a profile id, an exact email, or a full name. If a name matches more than one person the tool asks which one instead of guessing.
send_emailNotrue: EQIQs emails the link. false: only return the link.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linkNoPrivate invite link.
statusNoInvite status.
emailedNoWhether EQIQs emailed the invite.
inviteeNoWho was invited.

TDQS

A4.5/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing the rate limit (10 invites per hour), the consent semantics ('Finishing the assessment is their consent to share results'), the cost ('Costs 1 unit'), and the self-invite/opt-out restrictions. The mutation profile it describes is consistent with readOnlyHint=false and idempotentHint=false.

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?

Four tight sentences, front-loaded with what the tool does, followed by email behavior, constraints, and cost with no filler. Every sentence carries operational information.

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 mutation tool with an output schema present, the description supplies everything an agent needs before calling: mechanics, delivery behavior, limits, exclusions, and cost. Return-value details are correctly left to the output schema.

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%, so all four parameters are already documented in the schema. The description's note that the link is returned when not emailed mirrors the schema's send_email description rather than adding new meaning. 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?

States a specific verb and resource ('Create a private invite link') and immediately scopes it to a defined outcome (invitee takes the EQIQs assessment and compares with the user). This clearly separates it from sibling tools like create_profile, start_assessment, and list_invites.

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?

Explains the two operational modes (EQIQs emails the link vs. the link is returned to hand over) and gives explicit exclusions ('no self-invites or opted-out addresses'). It stops short of naming sibling alternatives such as list_invites to check existing invites, but the when-to-use context is clear.

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

list_invitesList invitesA
Read-onlyIdempotent
Inspect

List comparison invites the user has sent and each one's status: pending, clicked, started or completed. Read-only; costs 1 unit.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum rows to return (1-50, default 20).
statusNoFilter by status.all

Output Schema

ParametersJSON Schema
NameRequiredDescription
invitesNoSent invites with status (sent, opened, started, finished).

TDQS

A4/5.0
Behavior4/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 genuinely new context by disclosing a cost of 1 unit per call. It does not, however, mention pagination or result-size behavior for the limit parameter.

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 tight sentences: the resource and scope come first, then the status set, then the read-only/cost note. Nothing redundant and no 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?

Purpose, status semantics, cost and read-only nature are all covered, and a rich output schema plus full parameter descriptions relieve the description of return-value and parameter explanation. Only minor gaps remain, such as any hint about result ordering or pagination.

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 both parameters (limit, status enum with default) are fully documented in the schema. The description's mention of statuses repeats the enum values rather than adding filtering or format semantics, 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?

States a specific verb and resource (list invites) scoped to invites the user has sent, and enumerates the status values. No sibling tool deals with invites, so the agent can distinguish this from list_profiles, list_notes and list_relationships without opening any schema.

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 the tool applies (checking sent comparison invites and their status) but gives no explicit when-to-use vs when-not, nor any pointer to invite_person as the creating counterpart. Usage is inferable from the name and description rather than stated.

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

list_notesList notesA
Read-onlyIdempotent
Inspect

Read the user's saved notes and check-ins on one person, newest first. Use before a 1:1 or with prep_meeting. Read-only; costs 1 unit.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum rows to return (1-100, default 20).
personYesWhose notes to read. Accepts a profile id, an exact email, or a full name. If a name matches more than one person the tool asks which one instead of guessing.

Output Schema

ParametersJSON Schema
NameRequiredDescription
notesNoNotes, newest first.
personNoWho the notes are about.
profile_idNoProfile id of that person.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so safety is covered. The description adds value the annotations cannot: a cost signal ('costs 1 unit') and deterministic ordering ('newest first'), both of which matter for planning and budgeting calls.

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 sentences with zero filler, front-loading the resource, scope, and ordering before the usage hint. Every clause 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?

An output schema exists, so return shape needs no explanation, and the description covers scope, ordering, cost, and usage context. Nothing an agent needs in order to call this correctly is missing.

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%, so the schema already documents 'person' (id/email/name plus disambiguation behavior) and 'limit' (1-100, default 20). The description only echoes the person scoping and ordering, adding no syntax or format detail beyond the schema; 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?

States a specific verb and resource ('Read the user's saved notes and check-ins'), scopes it to one person, and specifies ordering ('newest first'). An agent can distinguish this from siblings like prep_meeting or add_note without opening any 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?

Gives explicit context ('Use before a 1:1') and names a companion tool ('with prep_meeting'), which tells the agent when this belongs in a workflow. It does not state when-not to use it or name a competing alternative, 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.

list_profilesList peopleA
Read-onlyIdempotent
Inspect

List the people saved in the signed-in user's EQIQs workspace (id, name, department, how many of 21 frameworks are complete). Use to find someone before calling get_profile, score_compatibility or score_team. Read-only; costs 1 unit.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum rows to return (1-100, default 25).
searchNoOptional case-insensitive filter on name or email.
contextNoRelationship context that sets framework weighting. 'business' (default) is work-safe and withholds personal-life signals (love language, attachment style, date of birth); the other contexts include them.business

Output Schema

ParametersJSON Schema
NameRequiredDescription
profilesNoMatching profiles.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive behavior, but the description adds genuinely new operational context: it is read-only and 'costs 1 unit', a billing detail no structured field provides. It doesn't discuss pagination behavior beyond the limit param, keeping it from a 5.

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 tightly packed sentences with zero filler: the resource and returned fields come first, followed by routing guidance and the cost note. Every clause 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 3-param, zero-required listing tool with full schema coverage, complete annotations, and an output schema to cover return values, the description supplies everything an agent needs: scope, routing to siblings, and cost.

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%, so all three parameters (including the context enum's business/romantic/friendship/coparenting weighting) are already documented in the schema. The description adds no parameter-level meaning beyond that, which is the expected baseline when the schema does the work.

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?

States a specific verb (List) plus resource (people in the signed-in user's EQIQs workspace) and even previews the returned fields (id, name, department, framework completion count). This clearly separates it from get_my_profile or get_profile, which fetch a single person.

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?

Explicitly says to use it to find someone before calling get_profile, score_compatibility or score_team, giving a clear selection condition and naming the downstream alternatives. It doesn't state exclusions (e.g., when to prefer list_relationships or get_my_profile for a single known person), so it falls just short of a full 5.

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

list_relationshipsList saved pairingsA
Read-onlyIdempotent
Inspect

List compatibility pairings the user has already saved, with each pair's score and the context it was scored in. Use to recall earlier comparisons without re-scoring. Read-only; costs 1 unit.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum rows to return (1-100, default 25).
contextNoOptional filter: only pairings scored in this context.

Output Schema

ParametersJSON Schema
NameRequiredDescription
relationshipsNoSaved pairings with their context.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so safety is covered. The description adds genuinely new operational context the annotations cannot express: the call costs 1 unit. It doesn't discuss pagination, but the cost disclosure plus the returned-fields hint ('score and the context') is real added value.

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 tight sentences with no filler: purpose first, then the usage trigger, then the cost/safety note. Every sentence earns its place and nothing is buried.

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?

An output schema exists, so return values need not be enumerated, yet the description still signals what comes back (scores and scoring context). For a zero-required-param read tool, purpose, usage, cost, and output shape are all covered.

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 both parameters fully described, including the enum values for context, so the baseline is 3. The description's mention of 'the context it was scored in' loosely aligns with the context filter but adds no format, default, or bounds detail beyond the schema.

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?

States a specific verb (List) and resource (saved compatibility pairings) and clarifies the payload: each pair's score plus the scoring context. It implicitly distinguishes itself from re-scoring, though it never names the sibling score_compatibility explicitly.

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?

'Use to recall earlier comparisons without re-scoring' gives a clear situational trigger for selecting this over a fresh scoring call. It stops short of naming the alternative tool or stating exclusions, but the when-to-use is unambiguous.

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

prep_meetingPrepare for a meetingA
Read-onlyIdempotent
Inspect

Build a meeting prep brief for 1-12 attendees: how to communicate with and persuade each person, and which pairings in the room need care. Name attendees or pass a department. Read-only; costs 2 units.

ParametersJSON Schema
NameRequiredDescriptionDefault
goalNoOptional meeting goal, e.g. 'agree the Q4 roadmap', used to tailor the advice.
membersNoProfile ids or full names of attendees (1-12). Omit when using department.
departmentNoUse everyone tagged with this department instead of naming members. Exact match first; refuses and asks for names if more than 12 people match or the name spans several departments.

Output Schema

ParametersJSON Schema
NameRequiredDescription
goalNoStated meeting goal.
peopleNoHow to work with each attendee.
goal_tipsNoTips tied to the goal.
watch_pairsNoPairings that need care.
weakest_pairNoThe pairing with the lowest score.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so safety is covered. The description adds genuinely non-obvious context beyond that: a cost of 2 units and the 1-12 attendee ceiling. It does not describe latency or what happens on partial failures, but the quota disclosure is a meaningful addition.

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 tight sentences: purpose and scope first, then input modes, then the read-only/cost footer. No filler, and the most important information is front-loaded.

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?

With an output schema present, the description needn't explain return values, and it covers scope, inputs, cost, and safety adequately for a read-only analysis tool. The only gap is sibling differentiation, which is not required for correct invocation but would help routing.

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%, so the schema already documents goal, members, and department, including the omit-members-when-using-department rule and the department match/refusal behavior. The description's 'Name attendees or pass a department' largely restates what the schema provides, so the 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 states a specific verb and resource — 'Build a meeting prep brief' — and details the output (how to communicate with and persuade each attendee, risky pairings) plus the scope (1-12 attendees). This is clearly distinguishable from siblings like score_team, score_compatibility, or generate_narrative.

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 the use case (preparing for a meeting) and gives the two input modes ('Name attendees or pass a department'), which is useful. However, it never states when not to use this tool or which sibling to prefer for adjacent tasks like compatibility scoring or team analysis, leaving routing to inference.

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

score_compatibilityScore two peopleA
Read-onlyIdempotent
Inspect

Score how two people work (or relate) together, 0-100, with a visual score card, sub-scores (communication, values, conflict and more), why the score landed where it did, and practical tips. Use for one pair; use score_team for three or more. Decision-support only, never the sole basis for hiring, promotion or termination. Read-only; costs 1 unit.

ParametersJSON Schema
NameRequiredDescriptionDefault
contextNoRelationship context that sets framework weighting. 'business' (default) is work-safe and withholds personal-life signals (love language, attachment style, date of birth); the other contexts include them.business
person_aYesFirst person. Accepts a profile id, an exact email, or a full name. If a name matches more than one person the tool asks which one instead of guessing.
person_bYesSecond person. Accepts a profile id, an exact email, or a full name. If a name matches more than one person the tool asks which one instead of guessing.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dosNoThings to do with this person.
dontsNoThings to avoid with this person.
driversNoFrameworks that moved the score most.
strengthsNoWhere the pair works well together.
subscoresNoScore per dimension, 0-100.
disclaimerNoDecision-support disclaimer.
overall_scoreNoOverall compatibility score, 0-100.
frameworks_usedNoFrameworks with data for both people.
friction_pointsNoWhere the pair is likely to clash.
frameworks_totalNoTotal frameworks considered.
subscore_reasonsNoWhy each dimension scored as it did, with a tip.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered; the description's 'Read-only' is redundant. What it does add beyond structured data is the cost ('costs 1 unit'), which an agent needs before invoking, and confirmation that the output is explanatory (rationale + tips) rather than a bare number.

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 sentences, each load-bearing: what you get, which sibling to use instead, then the governance/billing caveat. The output detail is front-loaded and nothing is padded.

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?

An output schema exists, so return values need not be re-explained, and annotations carry the safety profile. The description still covers the remaining agent-facing unknowns: pair-size routing, cost, and the decision-support limitation.

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%, so person_a/person_b resolution rules (id, email, or full name; disambiguation instead of guessing) and the context enum weighting are already documented. The description adds no further parameter 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?

States a specific verb+resource (score two people's working/relating compatibility) plus the concrete output shape: 0-100 score, visual card, sub-scores, rationale, tips. It explicitly distinguishes itself from the sibling score_team by pair size, so an agent can route without opening either schema.

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?

Names the exact selection condition ('Use for one pair; use score_team for three or more') and adds a governance constraint ('never the sole basis for hiring, promotion or termination'). Both when-to-use and when-not-to-rely-on-it are stated rather than inferred.

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

score_teamScore a teamA
Read-onlyIdempotent
Inspect

Score a whole group in one call: every pairing is rolled up into a team cohesion score (visual card), the weakest shared dimension, the best-connected person, who is most isolated, pairings to watch (<55) and anchor pairings (75+), and the role mix with what is missing. Use instead of looping score_compatibility for 3+ people. Decision-support only. Read-only; costs 2 units.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelNoOptional group name echoed in the summary.
contextNoRelationship context that sets framework weighting. 'business' (default) is work-safe and withholds personal-life signals (love language, attachment style, date of birth); the other contexts include them.business
membersNoProfile ids or full names of the people in the group (2-12). Omit when using department.
departmentNoUse everyone tagged with this department instead of naming members. Exact match first; refuses and asks for names if more than 12 people match or the name spans several departments.

Output Schema

ParametersJSON Schema
NameRequiredDescription
labelNoTeam or department name.
pairsNoEvery pairing and its score.
contextNoRelationship context used.
membersNoEach member with their average fit.
connectorNoBest-connected member.
thin_dataNoMembers with too little data for a reliable read.
disclaimerNoDecision-support disclaimer.
pair_countNoPairings scored.
watch_pairsNoPairings that need care.
anchor_pairsNoStrongest pairings.
member_countNoPeople in the team.
most_isolatedNoMember furthest from the rest.
role_coverageNoMix of working-style roles, counting each person once.
cohesion_scoreNoTeam cohesion, 0-100.
weakest_subscoreNoThe team's weakest shared dimension.
subscore_averagesNoAverage score per dimension across the team.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower; the description still adds the non-obvious cost ('2 units'), the 'decision-support only' caveat, and the department parameter's refusal behavior. It does not cover auth/permission requirements or pagination/limits, but the added cost and caveat context is real value beyond structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and then a dense enumeration of outputs, with the alternative and cost trailing. Every clause carries information, though the output enumeration runs long enough that a reader must parse carefully.

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?

An output schema exists and annotations cover safety, yet the description still supplies the decision-support caveat, unit cost, sibling alternative, and the shape of the result. Nothing an agent needs in order to select and call this correctly is missing.

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%, so the schema already documents label, context, members, and department, including the enum semantics of context and the 2-12 bound. The description adds no parameter-level detail beyond what the schema provides, so the 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?

States a specific verb and resource ('score a whole group') and enumerates exactly what the rollup contains: cohesion score, weakest shared dimension, best-connected/isolated members, pairings to watch, anchor pairings, role mix gaps. It also explicitly contrasts itself with the sibling score_compatibility, so an agent can route without opening schemas.

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?

'Use instead of looping score_compatibility for 3+ people' gives an explicit alternative plus the numeric threshold that selects it. The schema reinforces member-vs-department selection, and the 'decision-support only' framing sets expectations about how results should be used.

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

start_assessmentStart an assessment in chatA
Read-onlyIdempotent
Inspect

Get the questions for one EQIQs framework so the user can take it inside the chat. Ask them one at a time, word for word, accepting only A or B. Call with no framework to list what the user has not completed yet. Personal frameworks (attachment, love language) need the user's explicit consent. Read-only; costs 1 unit.

ParametersJSON Schema
NameRequiredDescriptionDefault
frameworkNoFramework key, e.g. 'mbti', 'disc', 'enneagram', 'big_five'. Omit to list remaining frameworks.

Output Schema

ParametersJSON Schema
NameRequiredDescription
missingNoFrameworks still to take.
completedNoFrameworks already completed.
frameworkNoFramework whose questions are returned.
questionsNoQuestions with A/B options.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent, so the bar is low, yet the description still adds real behavioral context: a cost of 1 unit, a consent precondition for personal frameworks, and an interaction protocol (one question at a time, verbatim, A/B answers only). None of that is derivable from the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose and packed with no filler across four short sentences. It is dense — purpose, protocol, no-arg behavior, consent, and cost in one paragraph — but every clause carries information.

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?

An output schema exists, so return values need no explanation, and the description covers the remaining agent-facing concerns: the no-argument listing mode, consent gating, interaction protocol, and cost. Nothing needed to invoke it correctly appears to be missing.

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?

Schema coverage is 100% and the schema already documents the omit-to-list behavior, but the description adds value the schema cannot: per-value semantics that some framework values are 'personal' and require explicit user consent. It goes slightly beyond the baseline 3 for a fully documented single parameter.

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?

States a specific verb+resource (fetch the questions for one EQIQs framework) and immediately clarifies the delivery mode ('inside the chat'). It is clearly separable from siblings like submit_assessment, which presumably records results rather than starts a session.

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?

Gives concrete when-to-use conditions: call with no framework to list uncompleted frameworks, and obtain explicit consent before personal frameworks (attachment, love language). It does not explicitly name the sibling that handles the opposite half of the flow (submit_assessment), so routing to alternatives is left implicit.

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

submit_assessmentSubmit assessment answersA
Idempotent
Inspect

Score the answers collected via start_assessment with EQIQs' own scoring and save the result to the signed-in user's profile (overwrites an earlier result for that framework). Returns the result in plain language. Costs 1 unit.

ParametersJSON Schema
NameRequiredDescriptionDefault
answersYesMap of question id to the user's answer, 'A' or 'B', for every question returned.
frameworkYesThe same framework key passed to start_assessment.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultNoResulting type or level.
frameworkNoFramework scored.
profile_idNoProfile the result was saved to.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint=false, idempotentHint=true, destructiveHint=false), so the description earns credit for what it adds beyond them: the write overwrites a prior result for the same framework, the call costs 1 unit, and output is plain language. The overwrite notice is the key disclosure, though it sits slightly in tension with destructiveHint=false.

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 front-loaded sentences covering action, side effect, return, and cost, with zero filler. The overwrite constraint and cost are surfaced early rather than buried.

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 two-parameter mutation with an output schema present, the description supplies the prerequisite tool, the overwrite behavior, cost, and the return style. Return value details are legitimately left to the output schema; only the per-framework overwrite scope nuance could be sharper.

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%, so the schema already documents both parameters, including the A/B answer map and that framework must match start_assessment. The description reinforces the provenance of 'answers' but adds no format or shape detail 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?

States a specific verb+resource ('Score the answers') and ties it to the sibling tool that produces the input ('collected via start_assessment'), then names the effect ('save the result to the signed-in user's profile'). This clearly separates it from score_compatibility, score_team, and start_assessment without opening any 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 phrase 'answers collected via start_assessment' establishes the required upstream call and the precondition for use. It does not state exclusions (e.g., what to do for a different framework or when no assessment was started), but the workflow context is clear enough to invoke correctly.

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

suggest_leadSuggest who should leadA
Read-onlyIdempotent
Inspect

Rank 2-12 people for leading a kind of work (execution, people, innovation or analysis), showing the saved results behind each ranking and any thin data. Use for 'who should lead this project?'. Decision-support only. Read-only; costs 2 units.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoKind of leadership the work needs.execution
membersNoProfile ids or full names of the people in the group (2-12). Omit when using department.
projectNoOptional project description echoed in the ranking.
departmentNoUse everyone tagged with this department instead of naming members. Exact match first; refuses and asks for names if more than 12 people match or the name spans several departments.

Output Schema

ParametersJSON Schema
NameRequiredDescription
kindNoType of work being led.
considerationsNoPeople to consider and why (not a ranking).

TDQS

A4.3/5.0
Behavior4/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 goes beyond them by disclosing a cost ('costs 2 units') and the 'Decision-support only' framing, plus noting that thin data is surfaced alongside rankings. It does not describe refusal/failure modes beyond what the schema says about department.

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?

Four tight sentences with no waste: capability and output first, then the trigger phrase, then two short constraint statements. Nothing is buried or redundant.

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?

With an output schema present, return values need not be explained, and the description still summarizes them usefully. Combined with 100% schema coverage, full annotations, and disclosed cost, an agent has everything needed to select and call this tool 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 description coverage is 100%, so the schema already documents kind, members, project, and department thoroughly, including the 2-12 bound and the department fallback behavior. The description restates the 2-12 range and the kind list without adding syntax, format, or interaction detail beyond the schema. 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?

States a specific verb and resource ('Rank 2-12 people for leading a kind of work'), names the four kinds of leadership, and describes the output shape (rankings with saved results behind each and thin-data flags). It is clearly distinct from score_team, score_compatibility, and get_profile in the sibling list.

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?

Gives an explicit trigger phrase ('Use for "who should lead this project?"') and scopes the tool as 'Decision-support only', which tells the agent this is advisory rather than a decision-maker. It does not, however, name a competing sibling or state when to prefer score_team/score_compatibility instead, so it stops short of full when/when-not guidance.

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.

  1. 2 tool updates
    • Changedget_my_profile3 fields changed
      • changedOutput schema / properties / frameworks_withheld / description
        Previous value: -"Frameworks hidden in this context (e.g. personal-life signals at work)."New value: +"How many frameworks are hidden in this context (e.g. personal-life signals at work)."
      • removedOutput schema / properties / frameworks_withheld / items
        Removed value: -{}
      • changedOutput schema / properties / frameworks_withheld / type
        Previous value: -"array"New value: +"number"
    • Changedget_profile3 fields changed
      • changedOutput schema / properties / frameworks_withheld / description
        Previous value: -"Frameworks hidden in this context (e.g. personal-life signals at work)."New value: +"How many frameworks are hidden in this context (e.g. personal-life signals at work)."
      • removedOutput schema / properties / frameworks_withheld / items
        Removed value: -{}
      • changedOutput schema / properties / frameworks_withheld / type
        Previous value: -"array"New value: +"number"
  2. 16 tool updates
    • Changedadd_note1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "created_at": {
        +      "description": "When the note was saved (ISO 8601).",
        +      "type": "string"
        +    },
        +    "note_id": {
        +      "description": "Id of the saved note.",
        +      "type": "string"
        +    },
        +    "person": {
        +      "description": "Who the note is about.",
        +      "type": "string"
        +    },
        +    "profile_id": {
        +      "description": "Profile id of that person.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedcreate_profile1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "profile": {
        +      "additionalProperties": {},
        +      "description": "The newly created profile.",
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedgenerate_narrative1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "action_items": {
        +      "description": "Action items pulled from the narrative."
        +    },
        +    "audience": {
        +      "description": "Who the narrative is written for.",
        +      "type": "string"
        +    },
        +    "billing": {
        +      "additionalProperties": {
        +        "$ref": "#/properties/guardrails/additionalProperties"
        +      },
        +      "description": "Units billed.",
        +      "type": "object"
        +    },
        +    "compared_with": {
        +      "description": "Second person, for pair narratives.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "context": {
        +      "description": "Relationship context for pair narratives.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "disclaimer": {
        +      "description": "Decision-support disclaimer.",
        +      "type": "string"
        +    },
        +    "guardrails": {
        +      "additionalProperties": {},
        +      "description": "Safety check results.",
        +      "type": "object"
        +    },
        +    "narrative": {
        +      "description": "The written coaching narrative.",
        +      "type": "string"
        +    },
        +    "requires_confirmation": {
        +      "description": "True when the price must be confirmed before running.",
        +      "type": "boolean"
        +    },
        +    "scoring": {
        +      "description": "Scores the narrative is based on."
        +    },
        +    "sections": {
        +      "description": "Narrative split into sections."
        +    },
        +    "subject": {
        +      "description": "Person the narrative is about.",
        +      "type": "string"
        +    },
        +    "units": {
        +      "description": "Tool-call units this narrative costs.",
        +      "type": "number"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_my_profile1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "context": {
        +      "description": "Relationship context the profile was filtered for.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "framework_coverage": {
        +      "description": "How many of the 21 frameworks have data.",
        +      "type": "number"
        +    },
        +    "frameworks_total": {
        +      "description": "Total frameworks EQIQs uses (21).",
        +      "type": "number"
        +    },
        +    "frameworks_withheld": {
        +      "description": "Frameworks hidden in this context (e.g. personal-life signals at work).",
        +      "items": {},
        +      "type": "array"
        +    },
        +    "label_meanings": {
        +      "additionalProperties": {
        +        "$ref": "#/properties/profile/additionalProperties"
        +      },
        +      "description": "Plain-language meanings for the framework labels on the profile.",
        +      "type": "object"
        +    },
        +    "matched_by": {
        +      "description": "How the signed-in user's own profile was found.",
        +      "type": "string"
        +    },
        +    "profile": {
        +      "additionalProperties": {},
        +      "description": "The person's profile fields that are visible in this context.",
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_profile1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "context": {
        +      "description": "Relationship context the profile was filtered for.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "framework_coverage": {
        +      "description": "How many of the 21 frameworks have data.",
        +      "type": "number"
        +    },
        +    "frameworks_total": {
        +      "description": "Total frameworks EQIQs uses (21).",
        +      "type": "number"
        +    },
        +    "frameworks_withheld": {
        +      "description": "Frameworks hidden in this context (e.g. personal-life signals at work).",
        +      "items": {},
        +      "type": "array"
        +    },
        +    "label_meanings": {
        +      "additionalProperties": {
        +        "$ref": "#/properties/profile/additionalProperties"
        +      },
        +      "description": "Plain-language meanings for the framework labels on the profile.",
        +      "type": "object"
        +    },
        +    "profile": {
        +      "additionalProperties": {},
        +      "description": "The person's profile fields that are visible in this context.",
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedinvite_person1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "emailed": {
        +      "description": "Whether EQIQs emailed the invite.",
        +      "type": "boolean"
        +    },
        +    "invitee": {
        +      "description": "Who was invited.",
        +      "type": "string"
        +    },
        +    "link": {
        +      "description": "Private invite link.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "description": "Invite status.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedlist_invites1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "invites": {
        +      "description": "Sent invites with status (sent, opened, started, finished).",
        +      "items": {
        +        "additionalProperties": {},
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedlist_notes1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "notes": {
        +      "description": "Notes, newest first.",
        +      "items": {
        +        "additionalProperties": {},
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "person": {
        +      "description": "Who the notes are about.",
        +      "type": "string"
        +    },
        +    "profile_id": {
        +      "description": "Profile id of that person.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedlist_profiles1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "profiles": {
        +      "description": "Matching profiles.",
        +      "items": {
        +        "additionalProperties": {},
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedlist_relationships1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "relationships": {
        +      "description": "Saved pairings with their context.",
        +      "items": {
        +        "additionalProperties": {},
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedprep_meeting1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "goal": {
        +      "description": "Stated meeting goal.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "goal_tips": {
        +      "description": "Tips tied to the goal.",
        +      "items": {},
        +      "type": "array"
        +    },
        +    "people": {
        +      "description": "How to work with each attendee.",
        +      "items": {
        +        "additionalProperties": {},
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "watch_pairs": {
        +      "description": "Pairings that need care.",
        +      "items": {
        +        "$ref": "#/properties/people/items"
        +      },
        +      "type": "array"
        +    },
        +    "weakest_pair": {
        +      "description": "The pairing with the lowest score."
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedscore_compatibility1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "disclaimer": {
        +      "description": "Decision-support disclaimer.",
        +      "type": "string"
        +    },
        +    "donts": {
        +      "description": "Things to avoid with this person.",
        +      "items": {
        +        "$ref": "#/properties/strengths/items"
        +      },
        +      "type": "array"
        +    },
        +    "dos": {
        +      "description": "Things to do with this person.",
        +      "items": {
        +        "$ref": "#/properties/strengths/items"
        +      },
        +      "type": "array"
        +    },
        +    "drivers": {
        +      "description": "Frameworks that moved the score most.",
        +      "items": {
        +        "$ref": "#/properties/subscore_reasons/items"
        +      },
        +      "type": "array"
        +    },
        +    "frameworks_total": {
        +      "description": "Total frameworks considered.",
        +      "type": "number"
        +    },
        +    "frameworks_used": {
        +      "description": "Frameworks with data for both people.",
        +      "type": "number"
        +    },
        +    "friction_points": {
        +      "description": "Where the pair is likely to clash.",
        +      "items": {
        +        "$ref": "#/properties/strengths/items"
        +      },
        +      "type": "array"
        +    },
        +    "overall_score": {
        +      "description": "Overall compatibility score, 0-100.",
        +      "type": "number"
        +    },
        +    "strengths": {
        +      "description": "Where the pair works well together.",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "subscore_reasons": {
        +      "description": "Why each dimension scored as it did, with a tip.",
        +      "items": {
        +        "additionalProperties": {
        +          "$ref": "#/properties/subscores/additionalProperties"
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "subscores": {
        +      "additionalProperties": {},
        +      "description": "Score per dimension, 0-100.",
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedscore_team1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "anchor_pairs": {
        +      "description": "Strongest pairings.",
        +      "items": {
        +        "$ref": "#/properties/members/items"
        +      },
        +      "type": "array"
        +    },
        +    "cohesion_score": {
        +      "description": "Team cohesion, 0-100.",
        +      "type": "number"
        +    },
        +    "connector": {
        +      "description": "Best-connected member."
        +    },
        +    "context": {
        +      "description": "Relationship context used.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Decision-support disclaimer.",
        +      "type": "string"
        +    },
        +    "label": {
        +      "description": "Team or department name.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "member_count": {
        +      "description": "People in the team.",
        +      "type": "number"
        +    },
        +    "members": {
        +      "description": "Each member with their average fit.",
        +      "items": {
        +        "additionalProperties": {
        +          "$ref": "#/properties/subscore_averages/additionalProperties"
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "most_isolated": {
        +      "description": "Member furthest from the rest."
        +    },
        +    "pair_count": {
        +      "description": "Pairings scored.",
        +      "type": "number"
        +    },
        +    "pairs": {
        +      "description": "Every pairing and its score.",
        +      "items": {
        +        "$ref": "#/properties/members/items"
        +      },
        +      "type": "array"
        +    },
        +    "role_coverage": {
        +      "description": "Mix of working-style roles, counting each person once."
        +    },
        +    "subscore_averages": {
        +      "additionalProperties": {},
        +      "description": "Average score per dimension across the team.",
        +      "type": "object"
        +    },
        +    "thin_data": {
        +      "description": "Members with too little data for a reliable read."
        +    },
        +    "watch_pairs": {
        +      "description": "Pairings that need care.",
        +      "items": {
        +        "$ref": "#/properties/members/items"
        +      },
        +      "type": "array"
        +    },
        +    "weakest_subscore": {
        +      "description": "The team's weakest shared dimension."
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedstart_assessment1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "completed": {
        +      "description": "Frameworks already completed.",
        +      "items": {},
        +      "type": "array"
        +    },
        +    "framework": {
        +      "description": "Framework whose questions are returned.",
        +      "type": "string"
        +    },
        +    "missing": {
        +      "description": "Frameworks still to take.",
        +      "items": {
        +        "$ref": "#/properties/completed/items"
        +      },
        +      "type": "array"
        +    },
        +    "questions": {
        +      "description": "Questions with A/B options.",
        +      "items": {
        +        "additionalProperties": {},
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsubmit_assessment1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "framework": {
        +      "description": "Framework scored.",
        +      "type": "string"
        +    },
        +    "profile_id": {
        +      "description": "Profile the result was saved to.",
        +      "type": "string"
        +    },
        +    "result": {
        +      "description": "Resulting type or level.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsuggest_lead1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "considerations": {
        +      "description": "People to consider and why (not a ranking).",
        +      "items": {
        +        "additionalProperties": {},
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "kind": {
        +      "description": "Type of work being led.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
  3. 16 tool updates
    • Changedadd_note4 fields changed
      • addedInput schema / properties / note / description
        Added value: +"Note text (up to 4,000 characters)."
      • addedInput schema / properties / note / maxLength
        Added value: +4000
      • addedInput schema / properties / note / minLength
        Added value: +1
      • addedInput schema / properties / person / description
        Added value: +"Who the note is about. Accepts a profile id, an exact email, or a full name. If a name matches more than one person the tool asks which one instead of guessing."
    • Changedcreate_profile18 fields changed
      • addedInput schema / properties / attachment_style / description
        Added value: +"Optional. Personal data: never used in business context."
      • addedInput schema / properties / attachment_style / maxLength
        Added value: +40
      • addedInput schema / properties / date_of_birth / description
        Added value: +"Optional YYYY-MM-DD. Personal data: never used in business context."
      • addedInput schema / properties / date_of_birth / format
        Added value: +"date"
      • addedInput schema / properties / department / description
        Added value: +"Optional team or department, used by score_team, prep_meeting and suggest_lead."
      • addedInput schema / properties / department / maxLength
        Added value: +120
      • addedInput schema / properties / disc_type / description
        Added value: +"Optional DISC style: D, I, S, C or a blend such as DI."
      • addedInput schema / properties / email / description
        Added value: +"Optional email; used to match results if they later take the assessment."
      • addedInput schema / properties / email / format
        Added value: +"email"
      • addedInput schema / properties / enneagram_type / description
        Added value: +"Optional Enneagram type 1-9, with wing if known, e.g. 3w2."
      • addedInput schema / properties / eq_score / description
        Added value: +"Optional emotional-intelligence score 0-100."
      • addedInput schema / properties / eq_score / maximum
        Added value: +100
      • addedInput schema / properties / eq_score / minimum
        Added value: +0
      • addedInput schema / properties / mbti_type / description
        Added value: +"Optional four-letter MBTI type, e.g. INTJ."
      • addedInput schema / properties / mbti_type / maxLength
        Added value: +4
      • addedInput schema / properties / name / description
        Added value: +"Full name (required)."
      • addedInput schema / properties / name / maxLength
        Added value: +120
      • addedInput schema / properties / name / minLength
        Added value: +1
    • Changedgenerate_narrative12 fields changed
      • addedInput schema / properties / audience / default
        Added value: +"manager"
      • changedInput schema / properties / audience / description
        Previous value: -"Who the narrative is for. Hiring or candidate-screening audiences are intentionally not supported."New value: +"Who will read it. Hiring or candidate-screening audiences are intentionally not supported."
      • addedInput schema / properties / compare_with / description
        Added value: +"Optional second person for a pair narrative. Accepts a profile id, an exact email, or a full name. If a name matches more than one person the tool asks which one instead of guessing."
      • addedInput schema / properties / context / default
        Added value: +"business"
      • addedInput schema / properties / context / description
        Added value: +"Relationship context that sets framework weighting. 'business' (default) is work-safe and withholds personal-life signals (love language, attachment style, date of birth); the other contexts include them."
      • addedInput schema / properties / context / enum
        Added value: +[
        +  "business",
        +  "romantic",
        +  "friendship",
        +  "coparenting"
        +]
      • addedInput schema / properties / focus / description
        Added value: +"Optional topic to emphasize, e.g. 'giving feedback'."
      • addedInput schema / properties / focus / maxLength
        Added value: +200
      • addedInput schema / properties / length / default
        Added value: +"standard"
      • addedInput schema / properties / length / description
        Added value: +"Approximate length of the narrative."
      • addedInput schema / properties / length / enum
        Added value: +[
        +  "short",
        +  "standard",
        +  "deep"
        +]
      • addedInput schema / properties / person / description
        Added value: +"Who the narrative is about. Accepts a profile id, an exact email, or a full name. If a name matches more than one person the tool asks which one instead of guessing."
    • Changedget_my_profile2 fields changed
      • addedInput schema / properties / context / default
        Added value: +"business"
      • changedInput schema / properties / context / description
        Previous value: -"Relationship context. Business (default) withholds personal-life signals: love language, attachment style, date of birth."New value: +"Relationship context that sets framework weighting. 'business' (default) is work-safe and withholds personal-life signals (love language, attachment style, date of birth); the other contexts include them."
    • Changedget_profile6 fields changed
      • addedInput schema / properties / context / default
        Added value: +"business"
      • changedInput schema / properties / context / description
        Previous value: -"Relationship context. Business (default) withholds personal-life signals: love language, attachment style, date of birth."New value: +"Relationship context that sets framework weighting. 'business' (default) is work-safe and withholds personal-life signals (love language, attachment style, date of birth); the other contexts include them."
      • addedInput schema / properties / email / description
        Added value: +"The person's exact email."
      • addedInput schema / properties / email / format
        Added value: +"email"
      • addedInput schema / properties / name / description
        Added value: +"Full name. Ambiguous names return a list to choose from rather than a guess."
      • addedInput schema / properties / profile_id / description
        Added value: +"Profile id from list_profiles (preferred)."
    • Changedinvite_person7 fields changed
      • addedInput schema / properties / email / description
        Added value: +"Invitee's email, when they are not saved yet."
      • addedInput schema / properties / email / format
        Added value: +"email"
      • addedInput schema / properties / name / description
        Added value: +"Invitee's name, shown in the invite."
      • addedInput schema / properties / name / maxLength
        Added value: +120
      • addedInput schema / properties / person / description
        Added value: +"Existing saved person to invite (optional if email is given). Accepts a profile id, an exact email, or a full name. If a name matches more than one person the tool asks which one instead of guessing."
      • addedInput schema / properties / send_email / default
        Added value: +true
      • addedInput schema / properties / send_email / description
        Added value: +"true: EQIQs emails the link. false: only return the link."
    • Changedlist_invites8 fields changed
      • addedInput schema / properties / limit / default
        Added value: +20
      • addedInput schema / properties / limit / description
        Added value: +"Maximum rows to return (1-50, default 20)."
      • addedInput schema / properties / limit / maximum
        Added value: +50
      • addedInput schema / properties / limit / minimum
        Added value: +1
      • changedInput schema / properties / limit / type
        Previous value: -"number"New value: +"integer"
      • addedInput schema / properties / status / default
        Added value: +"all"
      • addedInput schema / properties / status / description
        Added value: +"Filter by status."
      • addedInput schema / properties / status / enum
        Added value: +[
        +  "all",
        +  "pending",
        +  "clicked",
        +  "started",
        +  "completed"
        +]
    • Changedlist_notes6 fields changed
      • addedInput schema / properties / limit / default
        Added value: +20
      • addedInput schema / properties / limit / description
        Added value: +"Maximum rows to return (1-100, default 20)."
      • addedInput schema / properties / limit / maximum
        Added value: +100
      • addedInput schema / properties / limit / minimum
        Added value: +1
      • changedInput schema / properties / limit / type
        Previous value: -"number"New value: +"integer"
      • addedInput schema / properties / person / description
        Added value: +"Whose notes to read. Accepts a profile id, an exact email, or a full name. If a name matches more than one person the tool asks which one instead of guessing."
    • Changedlist_profiles9 fields changed
      • addedInput schema / properties / context / default
        Added value: +"business"
      • changedInput schema / properties / context / description
        Previous value: -"Relationship context. Business (default) withholds personal-life signals: love language, attachment style, date of birth."New value: +"Relationship context that sets framework weighting. 'business' (default) is work-safe and withholds personal-life signals (love language, attachment style, date of birth); the other contexts include them."
      • addedInput schema / properties / limit / default
        Added value: +25
      • addedInput schema / properties / limit / description
        Added value: +"Maximum rows to return (1-100, default 25)."
      • addedInput schema / properties / limit / maximum
        Added value: +100
      • addedInput schema / properties / limit / minimum
        Added value: +1
      • changedInput schema / properties / limit / type
        Previous value: -"number"New value: +"integer"
      • addedInput schema / properties / search / description
        Added value: +"Optional case-insensitive filter on name or email."
      • addedInput schema / properties / search / maxLength
        Added value: +100
    • Changedlist_relationships7 fields changed
      • addedInput schema / properties / context / description
        Added value: +"Optional filter: only pairings scored in this context."
      • addedInput schema / properties / context / enum
        Added value: +[
        +  "business",
        +  "romantic",
        +  "friendship",
        +  "coparenting"
        +]
      • addedInput schema / properties / limit / default
        Added value: +25
      • addedInput schema / properties / limit / description
        Added value: +"Maximum rows to return (1-100, default 25)."
      • addedInput schema / properties / limit / maximum
        Added value: +100
      • addedInput schema / properties / limit / minimum
        Added value: +1
      • changedInput schema / properties / limit / type
        Previous value: -"number"New value: +"integer"
    • Changedprep_meeting7 fields changed
      • addedInput schema / properties / department / description
        Added value: +"Use everyone tagged with this department instead of naming members. Exact match first; refuses and asks for names if more than 12 people match or the name spans several departments."
      • addedInput schema / properties / department / maxLength
        Added value: +100
      • addedInput schema / properties / goal / description
        Added value: +"Optional meeting goal, e.g. 'agree the Q4 roadmap', used to tailor the advice."
      • addedInput schema / properties / goal / maxLength
        Added value: +300
      • addedInput schema / properties / members / description
        Added value: +"Profile ids or full names of attendees (1-12). Omit when using department."
      • addedInput schema / properties / members / maxItems
        Added value: +12
      • addedInput schema / properties / members / minItems
        Added value: +1
    • Changedscore_compatibility5 fields changed
      • addedInput schema / properties / context / default
        Added value: +"business"
      • addedInput schema / properties / context / description
        Added value: +"Relationship context that sets framework weighting. 'business' (default) is work-safe and withholds personal-life signals (love language, attachment style, date of birth); the other contexts include them."
      • addedInput schema / properties / context / enum
        Added value: +[
        +  "business",
        +  "romantic",
        +  "friendship",
        +  "coparenting"
        +]
      • addedInput schema / properties / person_a / description
        Added value: +"First person. Accepts a profile id, an exact email, or a full name. If a name matches more than one person the tool asks which one instead of guessing."
      • addedInput schema / properties / person_b / description
        Added value: +"Second person. Accepts a profile id, an exact email, or a full name. If a name matches more than one person the tool asks which one instead of guessing."
    • Changedscore_team9 fields changed
      • addedInput schema / properties / context / default
        Added value: +"business"
      • addedInput schema / properties / context / description
        Added value: +"Relationship context that sets framework weighting. 'business' (default) is work-safe and withholds personal-life signals (love language, attachment style, date of birth); the other contexts include them."
      • changedInput schema / properties / department / description
        Previous value: -"Score everyone in this department instead of naming members."New value: +"Use everyone tagged with this department instead of naming members. Exact match first; refuses and asks for names if more than 12 people match or the name spans several departments."
      • addedInput schema / properties / department / maxLength
        Added value: +100
      • addedInput schema / properties / label / description
        Added value: +"Optional group name echoed in the summary."
      • addedInput schema / properties / label / maxLength
        Added value: +80
      • changedInput schema / properties / members / description
        Previous value: -"Profile ids or names (2-12)."New value: +"Profile ids or full names of the people in the group (2-12). Omit when using department."
      • addedInput schema / properties / members / maxItems
        Added value: +12
      • addedInput schema / properties / members / minItems
        Added value: +2
    • Changedstart_assessment1 field changed
      • addedInput schema / properties / framework / description
        Added value: +"Framework key, e.g. 'mbti', 'disc', 'enneagram', 'big_five'. Omit to list remaining frameworks."
    • Changedsubmit_assessment3 fields changed
      • addedInput schema / properties / answers / additionalProperties
        Added value: +{
        +  "enum": [
        +    "A",
        +    "B"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / answers / description
        Added value: +"Map of question id to the user's answer, 'A' or 'B', for every question returned."
      • addedInput schema / properties / framework / description
        Added value: +"The same framework key passed to start_assessment."
    • Changedsuggest_lead9 fields changed
      • addedInput schema / properties / department / description
        Added value: +"Use everyone tagged with this department instead of naming members. Exact match first; refuses and asks for names if more than 12 people match or the name spans several departments."
      • addedInput schema / properties / department / maxLength
        Added value: +100
      • addedInput schema / properties / kind / default
        Added value: +"execution"
      • addedInput schema / properties / kind / description
        Added value: +"Kind of leadership the work needs."
      • addedInput schema / properties / members / description
        Added value: +"Profile ids or full names of the people in the group (2-12). Omit when using department."
      • addedInput schema / properties / members / maxItems
        Added value: +12
      • addedInput schema / properties / members / minItems
        Added value: +2
      • addedInput schema / properties / project / description
        Added value: +"Optional project description echoed in the ranking."
      • addedInput schema / properties / project / maxLength
        Added value: +300
  4. 6 tool updates
    • Addedinvite_person
    • Addedlist_invites
    • Addedprep_meeting
    • Addedstart_assessment
    • Addedsubmit_assessment
    • Addedsuggest_lead
  5. 2 tool updates
    • Addedadd_note
    • Addedlist_notes
  6. 1 tool update
    • Addedscore_team
  7. 4 tool updates
    • Changedgenerate_narrative2 fields changed
      • addedInput schema / properties / audience / description
        Added value: +"Who the narrative is for. Hiring or candidate-screening audiences are intentionally not supported."
      • addedInput schema / properties / audience / enum
        Added value: +[
        +  "manager",
        +  "self",
        +  "partner"
        +]
    • Changedget_my_profile1 field changed
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Relationship context. Business (default) withholds personal-life signals: love language, attachment style, date of birth.",
        +  "enum": [
        +    "business",
        +    "romantic",
        +    "friendship",
        +    "coparenting"
        +  ],
        +  "type": "string"
        +}
    • Changedget_profile1 field changed
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Relationship context. Business (default) withholds personal-life signals: love language, attachment style, date of birth.",
        +  "enum": [
        +    "business",
        +    "romantic",
        +    "friendship",
        +    "coparenting"
        +  ],
        +  "type": "string"
        +}
    • Changedlist_profiles1 field changed
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Relationship context. Business (default) withholds personal-life signals: love language, attachment style, date of birth.",
        +  "enum": [
        +    "business",
        +    "romantic",
        +    "friendship",
        +    "coparenting"
        +  ],
        +  "type": "string"
        +}
  8. 7 tool updates
    • First observedcreate_profile
    • First observedgenerate_narrative
    • First observedget_my_profile
    • First observedget_profile
    • First observedlist_profiles
    • First observedlist_relationships
    • First observedscore_compatibility

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Brings Enneagram, MBTI, Big Five and 18 more frameworks into Claude, ChatGPT and any MCP client. Includes whole-team reads, meeting prep, 'who should lead this?', an assessment you can take inside the chat, pair compatibility scores, private notes and invite links. Work-safe by default: details are withheld in business contexts. OAuth sign-in keeps every call safely scoped to your EQIQs account.
    16
    12 npm
    1
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides comprehensive psychological intelligence capabilities including persona analysis, attachment theory assessment, relationship compatibility evaluation, and autonomous workflow strategies through a complete graph database integration.
    -
  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    An open-source personality profiling system that enables users to record and analyze their decisions, emotions, and self-reflections through a structured set of 56 tools. It helps users build a digital persona and gain self-insight by tracking interactions, decision-making patterns, and emotional states.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources