@eqiqs/mcp-server
OfficialSummary: @eqiqs/mcp-server connects a consented EQIQs workspace to MCP clients so you can read 21-framework personality profiles, score compatibility and teams, prep meetings, and run coaching workflows from an AI client.
Profile reads:
get_my_profile(your own 21-framework results, labels, missing frameworks),list_profiles, andget_profile(full read for one saved person by id, email, or name).Profile creation:
create_profileto add someone with optional known traits (MBTI, DISC, Enneagram, EQ score, attachment style, department, DOB).Assessments:
start_assessmentto list/serve one framework's questions in chat andsubmit_assessmentto score and save the answers.Compatibility:
score_compatibilityfor a 0–100 read on two people (sub-scores, why, tips) andlist_relationshipsto recall saved pairings.Teams:
score_teamrolls up all pairings into a cohesion score, weakest dimension, best-connected/most isolated members, pairings to watch, and role mix.Communication prep:
prep_meetingbuilds a 1–12 attendee briefing with persuasion tips and sensitive pairings.Coaching workflows:
add_noteandlist_notesfor 1:1 notes/check-ins;invite_personandlist_invitesto send and track assessment invites.Narrative generation:
generate_narrative(premium, 5 units) for a plain-language coaching write-up on a person or pair.Discussion support:
suggest_leadranks 2–12 people for a leadership kind — for conversation only, not role assignment.Relationship contexts: every read takes
business(default, work-safe) orromantic,friendship,coparentingto change framework weighting.Deployment options: hosted OAuth 2.1 endpoint (per-user scoping) or a stdio bridge via
npx -y @eqiqs/mcp-serverwithEQIQS_MCP_URL/EQIQS_MCP_TOKENoverrides.Costs: 1 unit for most tools, 2 for
score_team/prep_meeting/suggest_lead, 5 forgenerate_narrative.Boundaries: consent-based coaching only — never for screening, hiring, promotion, compensation, discipline, performance ratings, or other high-stakes decisions; MBTI/DISC-style outputs are proprietary approximations.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@@eqiqs/mcp-serverHow compatible am I with John for a romantic relationship?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@eqiqs/mcp-server
EQIQs™ is a 21-framework personality and compatibility assessment for coaching, communication and team development.
@eqiqs/mcp-server connects a person's consented EQIQs workspace to MCP-compatible AI clients. It supports coaching, communication preparation, onboarding, and team-development conversations through a hosted MCP server secured with OAuth 2.1.
Connect to the hosted server
Get the connection address at https://www.eqiqs.com/mcp
Sign in with OAuth 2.1. Each tool call is scoped to the authenticated user's EQIQs data. Never share an access token or use another person's data without permission.
Related MCP server: MBTI MCP Server
Use a stdio bridge
For clients that support stdio MCP connections but not remote MCP, add:
{
"mcpServers": {
"eqiqs": {
"command": "npx",
"args": ["-y", "@eqiqs/mcp-server"]
}
}
}Environment variables
Variable | Purpose |
| Override the hosted MCP endpoint. |
| Provide a bearer token only for a client that cannot complete OAuth. |
Capabilities
The available tools operate on the authenticated user's workspace and may include:
get_my_profile,list_profiles, andget_profilefor consented profile data.create_profile,start_assessment, andsubmit_assessmentfor a person who is participating knowingly.add_note,list_notes,invite_person, andlist_invitesfor coaching and follow-up workflows.prep_meetingfor communication preparation andlist_relationshipsfor saved pairings.score_compatibilityfor a context-aware read between two people in a documented business, romantic, friendship, or coparenting context.score_teamfor group-level communication and collaboration discussion prompts.generate_narrativefor a plain-language coaching narrative on eligible tiers.suggest_leadfor discussion support only; it must not be used to select, rank, or assign people to leadership roles.
Compatibility outputs should be read with the returned data coverage. They are decision support, not a factual determination about a person's ability, potential, or fit.
Responsible use
Use EQIQs only for consent-based coaching, communication, self-reflection, onboarding after employment begins, and team development. Do not use it for employment screening, selection, termination, promotion, compensation, discipline, performance ratings, role assignment, or any other high-stakes decision.
EQIQs' MBTI-style and DISC-style results are proprietary approximations, not licensed MBTI® or DISC® administrations. The public methodology explains framework provenance, evidence status, and limitations.
References
Trust Center, privacy, and system status
License
MIT
Available Tools
16 toolsadd_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.
| Name | Required | Description | Default |
|---|---|---|---|
| note | Yes | Note text (up to 4,000 characters). | |
| person | Yes | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| person | No | Who the note is about. |
| note_id | No | Id of the saved note. |
| created_at | No | When the note was saved (ISO 8601). |
| profile_id | No | Profile id of that person. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Full name (required). | |
| No | Optional email; used to match results if they later take the assessment. | ||
| eq_score | No | Optional emotional-intelligence score 0-100. | |
| disc_type | No | Optional DISC style: D, I, S, C or a blend such as DI. | |
| mbti_type | No | Optional four-letter MBTI type, e.g. INTJ. | |
| department | No | Optional team or department, used by score_team, prep_meeting and suggest_lead. | |
| date_of_birth | No | Optional YYYY-MM-DD. Personal data: never used in business context. | |
| enneagram_type | No | Optional Enneagram type 1-9, with wing if known, e.g. 3w2. | |
| attachment_style | No | Optional. Personal data: never used in business context. |
Output Schema
| Name | Required | Description |
|---|---|---|
| profile | No | The newly created profile. |
TDQS
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.
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.
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.
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.
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.
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 narrativeARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| focus | No | Optional topic to emphasize, e.g. 'giving feedback'. | |
| length | No | Approximate length of the narrative. | standard |
| person | Yes | 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. | |
| context | No | 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. | business |
| audience | No | Who will read it. Hiring or candidate-screening audiences are intentionally not supported. | manager |
| compare_with | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| units | No | Tool-call units this narrative costs. |
| billing | No | Units billed. |
| context | No | Relationship context for pair narratives. |
| scoring | No | Scores the narrative is based on. |
| subject | No | Person the narrative is about. |
| audience | No | Who the narrative is written for. |
| sections | No | Narrative split into sections. |
| narrative | No | The written coaching narrative. |
| disclaimer | No | Decision-support disclaimer. |
| guardrails | No | Safety check results. |
| action_items | No | Action items pulled from the narrative. |
| compared_with | No | Second person, for pair narratives. |
| requires_confirmation | No | True when the price must be confirmed before running. |
TDQS
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.
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.
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.
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.
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.
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 profileARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| context | No | 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. | business |
Output Schema
| Name | Required | Description |
|---|---|---|
| context | No | Relationship context the profile was filtered for. |
| profile | No | The person's profile fields that are visible in this context. |
| matched_by | No | How the signed-in user's own profile was found. |
| label_meanings | No | Plain-language meanings for the framework labels on the profile. |
| frameworks_total | No | Total frameworks EQIQs uses (21). |
| framework_coverage | No | How many of the 21 frameworks have data. |
| frameworks_withheld | No | How many frameworks are hidden in this context (e.g. personal-life signals at work). |
TDQS
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.
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.
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.
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.
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.
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 profileARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Full name. Ambiguous names return a list to choose from rather than a guess. | |
| No | The person's exact email. | ||
| context | No | 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. | business |
| profile_id | No | Profile id from list_profiles (preferred). |
Output Schema
| Name | Required | Description |
|---|---|---|
| context | No | Relationship context the profile was filtered for. |
| profile | No | The person's profile fields that are visible in this context. |
| label_meanings | No | Plain-language meanings for the framework labels on the profile. |
| frameworks_total | No | Total frameworks EQIQs uses (21). |
| framework_coverage | No | How many of the 21 frameworks have data. |
| frameworks_withheld | No | How many frameworks are hidden in this context (e.g. personal-life signals at work). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Invitee's name, shown in the invite. | |
| No | Invitee's email, when they are not saved yet. | ||
| person | No | 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. | |
| send_email | No | true: EQIQs emails the link. false: only return the link. |
Output Schema
| Name | Required | Description |
|---|---|---|
| link | No | Private invite link. |
| status | No | Invite status. |
| emailed | No | Whether EQIQs emailed the invite. |
| invitee | No | Who was invited. |
TDQS
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.
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.
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.
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.
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.
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 invitesARead-onlyIdempotentInspect
List comparison invites the user has sent and each one's status: pending, clicked, started or completed. Read-only; costs 1 unit.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return (1-50, default 20). | |
| status | No | Filter by status. | all |
Output Schema
| Name | Required | Description |
|---|---|---|
| invites | No | Sent invites with status (sent, opened, started, finished). |
TDQS
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.
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.
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.
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.
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.
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 notesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return (1-100, default 20). | |
| person | Yes | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| notes | No | Notes, newest first. |
| person | No | Who the notes are about. |
| profile_id | No | Profile id of that person. |
TDQS
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.
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.
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.
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.
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.
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 peopleARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return (1-100, default 25). | |
| search | No | Optional case-insensitive filter on name or email. | |
| context | No | 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. | business |
Output Schema
| Name | Required | Description |
|---|---|---|
| profiles | No | Matching profiles. |
TDQS
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.
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.
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.
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.
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.
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 pairingsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return (1-100, default 25). | |
| context | No | Optional filter: only pairings scored in this context. |
Output Schema
| Name | Required | Description |
|---|---|---|
| relationships | No | Saved pairings with their context. |
TDQS
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.
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.
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.
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.
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.
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 meetingARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| goal | No | Optional meeting goal, e.g. 'agree the Q4 roadmap', used to tailor the advice. | |
| members | No | Profile ids or full names of attendees (1-12). Omit when using department. | |
| department | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| goal | No | Stated meeting goal. |
| people | No | How to work with each attendee. |
| goal_tips | No | Tips tied to the goal. |
| watch_pairs | No | Pairings that need care. |
| weakest_pair | No | The pairing with the lowest score. |
TDQS
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.
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.
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.
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.
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.
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 peopleARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| context | No | 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. | business |
| person_a | Yes | 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. | |
| person_b | Yes | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| dos | No | Things to do with this person. |
| donts | No | Things to avoid with this person. |
| drivers | No | Frameworks that moved the score most. |
| strengths | No | Where the pair works well together. |
| subscores | No | Score per dimension, 0-100. |
| disclaimer | No | Decision-support disclaimer. |
| overall_score | No | Overall compatibility score, 0-100. |
| frameworks_used | No | Frameworks with data for both people. |
| friction_points | No | Where the pair is likely to clash. |
| frameworks_total | No | Total frameworks considered. |
| subscore_reasons | No | Why each dimension scored as it did, with a tip. |
TDQS
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.
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.
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.
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.
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.
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 teamARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | Optional group name echoed in the summary. | |
| context | No | 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. | business |
| members | No | Profile ids or full names of the people in the group (2-12). Omit when using department. | |
| department | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| label | No | Team or department name. |
| pairs | No | Every pairing and its score. |
| context | No | Relationship context used. |
| members | No | Each member with their average fit. |
| connector | No | Best-connected member. |
| thin_data | No | Members with too little data for a reliable read. |
| disclaimer | No | Decision-support disclaimer. |
| pair_count | No | Pairings scored. |
| watch_pairs | No | Pairings that need care. |
| anchor_pairs | No | Strongest pairings. |
| member_count | No | People in the team. |
| most_isolated | No | Member furthest from the rest. |
| role_coverage | No | Mix of working-style roles, counting each person once. |
| cohesion_score | No | Team cohesion, 0-100. |
| weakest_subscore | No | The team's weakest shared dimension. |
| subscore_averages | No | Average score per dimension across the team. |
TDQS
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.
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.
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.
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.
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.
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 chatARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| framework | No | Framework key, e.g. 'mbti', 'disc', 'enneagram', 'big_five'. Omit to list remaining frameworks. |
Output Schema
| Name | Required | Description |
|---|---|---|
| missing | No | Frameworks still to take. |
| completed | No | Frameworks already completed. |
| framework | No | Framework whose questions are returned. |
| questions | No | Questions with A/B options. |
TDQS
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.
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.
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.
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.
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.
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 answersAIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| answers | Yes | Map of question id to the user's answer, 'A' or 'B', for every question returned. | |
| framework | Yes | The same framework key passed to start_assessment. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | Resulting type or level. |
| framework | No | Framework scored. |
| profile_id | No | Profile the result was saved to. |
TDQS
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.
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.
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.
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.
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.
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 leadARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Kind of leadership the work needs. | execution |
| members | No | Profile ids or full names of the people in the group (2-12). Omit when using department. | |
| project | No | Optional project description echoed in the ranking. | |
| department | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| kind | No | Type of work being led. |
| considerations | No | People to consider and why (not a ranking). |
TDQS
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.
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.
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.
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.
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.
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.
16 tool updates
v1.0.17- Changed
add_note1 field changed- changed
Output 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" +}
- Changed
create_profile1 field changed- changed
Output 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" +}
- Changed
generate_narrative1 field changed- changed
Output 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" +}
- Changed
get_my_profile1 field changed- changed
Output 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": "How many frameworks are hidden in this context (e.g. personal-life signals at work).", + "type": "number" + }, + "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" +}
- Changed
get_profile1 field changed- changed
Output 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": "How many frameworks are hidden in this context (e.g. personal-life signals at work).", + "type": "number" + }, + "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" +}
- Changed
invite_person1 field changed- changed
Output 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" +}
- Changed
list_invites1 field changed- changed
Output 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" +}
- Changed
list_notes1 field changed- changed
Output 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" +}
- Changed
list_profiles1 field changed- changed
Output 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" +}
- Changed
list_relationships1 field changed- changed
Output 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" +}
- Changed
prep_meeting1 field changed- changed
Output 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" +}
- Changed
score_compatibility1 field changed- changed
Output 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" +}
- Changed
score_team1 field changed- changed
Output 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" +}
- Changed
start_assessment1 field changed- changed
Output 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" +}
- Changed
submit_assessment1 field changed- changed
Output 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" +}
- Changed
suggest_lead1 field changed- changed
Output 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" +}
16 tool updates
v0.1.1- Changed
add_note4 fields changed- added
Input schema / properties / note / descriptionAdded value: +"Note text (up to 4,000 characters)." - added
Input schema / properties / note / maxLengthAdded value: +4000 - added
Input schema / properties / note / minLengthAdded value: +1 - added
Input schema / properties / person / descriptionAdded 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."
- Changed
create_profile18 fields changed- added
Input schema / properties / attachment_style / descriptionAdded value: +"Optional. Personal data: never used in business context." - added
Input schema / properties / attachment_style / maxLengthAdded value: +40 - added
Input schema / properties / date_of_birth / descriptionAdded value: +"Optional YYYY-MM-DD. Personal data: never used in business context." - added
Input schema / properties / date_of_birth / formatAdded value: +"date" - added
Input schema / properties / department / descriptionAdded value: +"Optional team or department, used by score_team, prep_meeting and suggest_lead." - added
Input schema / properties / department / maxLengthAdded value: +120 - added
Input schema / properties / disc_type / descriptionAdded value: +"Optional DISC style: D, I, S, C or a blend such as DI." - added
Input schema / properties / email / descriptionAdded value: +"Optional email; used to match results if they later take the assessment." - added
Input schema / properties / email / formatAdded value: +"email" - added
Input schema / properties / enneagram_type / descriptionAdded value: +"Optional Enneagram type 1-9, with wing if known, e.g. 3w2." - added
Input schema / properties / eq_score / descriptionAdded value: +"Optional emotional-intelligence score 0-100." - added
Input schema / properties / eq_score / maximumAdded value: +100 - added
Input schema / properties / eq_score / minimumAdded value: +0 - added
Input schema / properties / mbti_type / descriptionAdded value: +"Optional four-letter MBTI type, e.g. INTJ." - added
Input schema / properties / mbti_type / maxLengthAdded value: +4 - added
Input schema / properties / name / descriptionAdded value: +"Full name (required)." - added
Input schema / properties / name / maxLengthAdded value: +120 - added
Input schema / properties / name / minLengthAdded value: +1
- Changed
generate_narrative12 fields changed- added
Input schema / properties / audience / defaultAdded value: +"manager" - changed
Input schema / properties / audience / descriptionPrevious 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." - added
Input schema / properties / compare_with / descriptionAdded 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." - added
Input schema / properties / context / defaultAdded value: +"business" - added
Input schema / properties / context / descriptionAdded 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." - added
Input schema / properties / context / enumAdded value: +[ + "business", + "romantic", + "friendship", + "coparenting" +] - added
Input schema / properties / focus / descriptionAdded value: +"Optional topic to emphasize, e.g. 'giving feedback'." - added
Input schema / properties / focus / maxLengthAdded value: +200 - added
Input schema / properties / length / defaultAdded value: +"standard" - added
Input schema / properties / length / descriptionAdded value: +"Approximate length of the narrative." - added
Input schema / properties / length / enumAdded value: +[ + "short", + "standard", + "deep" +] - added
Input schema / properties / person / descriptionAdded 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."
- Changed
get_my_profile2 fields changed- added
Input schema / properties / context / defaultAdded value: +"business" - changed
Input schema / properties / context / descriptionPrevious 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."
- Changed
get_profile6 fields changed- added
Input schema / properties / context / defaultAdded value: +"business" - changed
Input schema / properties / context / descriptionPrevious 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." - added
Input schema / properties / email / descriptionAdded value: +"The person's exact email." - added
Input schema / properties / email / formatAdded value: +"email" - added
Input schema / properties / name / descriptionAdded value: +"Full name. Ambiguous names return a list to choose from rather than a guess." - added
Input schema / properties / profile_id / descriptionAdded value: +"Profile id from list_profiles (preferred)."
- Changed
invite_person7 fields changed- added
Input schema / properties / email / descriptionAdded value: +"Invitee's email, when they are not saved yet." - added
Input schema / properties / email / formatAdded value: +"email" - added
Input schema / properties / name / descriptionAdded value: +"Invitee's name, shown in the invite." - added
Input schema / properties / name / maxLengthAdded value: +120 - added
Input schema / properties / person / descriptionAdded 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." - added
Input schema / properties / send_email / defaultAdded value: +true - added
Input schema / properties / send_email / descriptionAdded value: +"true: EQIQs emails the link. false: only return the link."
- Changed
list_invites8 fields changed- added
Input schema / properties / limit / defaultAdded value: +20 - added
Input schema / properties / limit / descriptionAdded value: +"Maximum rows to return (1-50, default 20)." - added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / status / defaultAdded value: +"all" - added
Input schema / properties / status / descriptionAdded value: +"Filter by status." - added
Input schema / properties / status / enumAdded value: +[ + "all", + "pending", + "clicked", + "started", + "completed" +]
- Changed
list_notes6 fields changed- added
Input schema / properties / limit / defaultAdded value: +20 - added
Input schema / properties / limit / descriptionAdded value: +"Maximum rows to return (1-100, default 20)." - added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / person / descriptionAdded 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."
- Changed
list_profiles9 fields changed- added
Input schema / properties / context / defaultAdded value: +"business" - changed
Input schema / properties / context / descriptionPrevious 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." - added
Input schema / properties / limit / defaultAdded value: +25 - added
Input schema / properties / limit / descriptionAdded value: +"Maximum rows to return (1-100, default 25)." - added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / search / descriptionAdded value: +"Optional case-insensitive filter on name or email." - added
Input schema / properties / search / maxLengthAdded value: +100
- Changed
list_relationships7 fields changed- added
Input schema / properties / context / descriptionAdded value: +"Optional filter: only pairings scored in this context." - added
Input schema / properties / context / enumAdded value: +[ + "business", + "romantic", + "friendship", + "coparenting" +] - added
Input schema / properties / limit / defaultAdded value: +25 - added
Input schema / properties / limit / descriptionAdded value: +"Maximum rows to return (1-100, default 25)." - added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer"
- Changed
prep_meeting7 fields changed- added
Input schema / properties / department / descriptionAdded 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." - added
Input schema / properties / department / maxLengthAdded value: +100 - added
Input schema / properties / goal / descriptionAdded value: +"Optional meeting goal, e.g. 'agree the Q4 roadmap', used to tailor the advice." - added
Input schema / properties / goal / maxLengthAdded value: +300 - added
Input schema / properties / members / descriptionAdded value: +"Profile ids or full names of attendees (1-12). Omit when using department." - added
Input schema / properties / members / maxItemsAdded value: +12 - added
Input schema / properties / members / minItemsAdded value: +1
- Changed
score_compatibility5 fields changed- added
Input schema / properties / context / defaultAdded value: +"business" - added
Input schema / properties / context / descriptionAdded 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." - added
Input schema / properties / context / enumAdded value: +[ + "business", + "romantic", + "friendship", + "coparenting" +] - added
Input schema / properties / person_a / descriptionAdded 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." - added
Input schema / properties / person_b / descriptionAdded 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."
- Changed
score_team9 fields changed- added
Input schema / properties / context / defaultAdded value: +"business" - added
Input schema / properties / context / descriptionAdded 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." - changed
Input schema / properties / department / descriptionPrevious 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." - added
Input schema / properties / department / maxLengthAdded value: +100 - added
Input schema / properties / label / descriptionAdded value: +"Optional group name echoed in the summary." - added
Input schema / properties / label / maxLengthAdded value: +80 - changed
Input schema / properties / members / descriptionPrevious 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." - added
Input schema / properties / members / maxItemsAdded value: +12 - added
Input schema / properties / members / minItemsAdded value: +2
- Changed
start_assessment1 field changed- added
Input schema / properties / framework / descriptionAdded value: +"Framework key, e.g. 'mbti', 'disc', 'enneagram', 'big_five'. Omit to list remaining frameworks."
- Changed
submit_assessment3 fields changed- added
Input schema / properties / answers / additionalPropertiesAdded value: +{ + "enum": [ + "A", + "B" + ], + "type": "string" +} - added
Input schema / properties / answers / descriptionAdded value: +"Map of question id to the user's answer, 'A' or 'B', for every question returned." - added
Input schema / properties / framework / descriptionAdded value: +"The same framework key passed to start_assessment."
- Changed
suggest_lead9 fields changed- added
Input schema / properties / department / descriptionAdded 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." - added
Input schema / properties / department / maxLengthAdded value: +100 - added
Input schema / properties / kind / defaultAdded value: +"execution" - added
Input schema / properties / kind / descriptionAdded value: +"Kind of leadership the work needs." - added
Input schema / properties / members / descriptionAdded value: +"Profile ids or full names of the people in the group (2-12). Omit when using department." - added
Input schema / properties / members / maxItemsAdded value: +12 - added
Input schema / properties / members / minItemsAdded value: +2 - added
Input schema / properties / project / descriptionAdded value: +"Optional project description echoed in the ranking." - added
Input schema / properties / project / maxLengthAdded value: +300
16 tool updates
v0.1.0- First observed
add_note - First observed
create_profile - First observed
generate_narrative - First observed
get_my_profile - First observed
get_profile - First observed
invite_person - First observed
list_invites - First observed
list_notes - First observed
list_profiles - First observed
list_relationships - First observed
prep_meeting - First observed
score_compatibility - First observed
score_team - First observed
start_assessment - First observed
submit_assessment - First observed
suggest_lead
TDQS
Scored across 16 tools
Each tool targets a distinct resource+action: get_my_profile vs get_profile (self vs saved person), score_compatibility vs score_team (pair vs group), create_profile vs invite_person (add manually vs self-assessment). The list_* tools map to clearly separate resources (profiles, relationships, notes, invites), and descriptions explicitly guide selection (e.g. 'use score_team for three or more').
Consistent verb_noun snake_case throughout: get_/list_/create_/add_/score_/start_/submit_/prep_/suggest_/generate_. No convention mixing or casing deviations.
16 tools is a reasonable, well-scoped surface for a rich assessment/compatibility platform, covering profile management, scoring, notes, invites, assessments and coaching. It sits at the upper end of the comfortable range but each tool earns its place.
Core lifecycle is well covered: read (self/others/lists), create profile, invite, take/submit assessments, score pair/team, notes, and analysis outputs like prep_meeting, suggest_lead and generate_narrative. Minor gaps exist around updating/deleting profiles and notes, but agents can largely work around these.
Maintenance
Related MCP Connectors
EQIQs: 21-framework personality and compatibility for coaching, communication, and team development.
Access family personality profiles, relationship reports, and relational patterns via AI.
MCP-native notes and memory for ChatGPT, Claude, and other AI tools.
Persistent AI memory shared across Claude, ChatGPT, coding agents, and compatible MCP clients.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceProvides comprehensive psychological intelligence capabilities including persona analysis, attachment theory assessment, relationship compatibility evaluation, and autonomous workflow strategies through a complete graph database integration.-
- AlicenseAqualityDmaintenanceEnables AI assistants to guide users through MBTI personality tests with two modes (28-question simplified or 48-question cognitive functions), track progress, and provide detailed personality type analysis and results.421 npm2MIT
- AlicenseBqualityDmaintenanceProvides a universal AI personality layer that uses a scientifically-backed Big Five engine to apply consistent character traits and brand voices across MCP-compatible platforms. It allows users to inject custom personality profiles or presets into AI interactions to ensure behavioral consistency.716 npm76MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI models to administer personality tests, score responses, and provide personality type assessments, with optional integration with Ollama for personalized AI interactions.1ISC