Shareflo
Server Details
Read and update your UK cap table: instruments, stakeholders, holdings and account representatives.
- Status
- Healthy
- Uptime
- 34.5% over 25 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- richard-shareflo/shareflo-mcp-public
- GitHub Stars
- 0
TDQS
Scored across 10 tools
Each tool maps to a distinct resource+action: create_* for stakeholders/instruments/holdings, get_* reads for holdings/instruments/representatives/stakeholders, add_representative for user assignment, and unlock_shareflo as a mandatory gate. The create_holding vs confirm_action proposal/commit split is clearly explained and complementary rather than overlapping.
Strict verb_noun snake_case pattern holds throughout (create_holding, get_stakeholders, add_representative), with only unlock_shareflo as the sole special name, which still follows verb_noun. No mixed conventions or casing styles.
Ten tools is well-scoped for a cap table server, with read/write pairs across four entities plus a session-unlock step. Each tool earns its place with no redundancy.
Create and read coverage exists for stakeholders, instruments, holdings, and representatives, plus a confirm workflow for committing change proposals. However, there are no explicit update/delete or revoke operations (e.g. remove_representative, delete_instrument), leaving some lifecycle gaps an agent must work around.
Available Tools
10 toolsadd_representativeADestructiveInspect
Adds a representative (user) to manage a stakeholder's account. If the stakeholder field is omitted, the representative is added as a company-level cap table administrator. Requires unlock_shareflo to have been called first.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Email address of the representative. | ||
| job_title | No | Job title. Company representatives only. | |
| last_name | Yes | Last name of the representative. | |
| telephone | No | Telephone number. Company representatives only. | |
| first_name | Yes | First name of the representative. | |
| stakeholder | No | Stakeholder to add the representative for. Omit to add a company-level representative. | |
| co_permission | No | Permission level for a company representative. Omit for stakeholder representatives. | |
| sh_permission | No | Permission level for a stakeholder representative. Omit for company representatives. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only supply destructiveHint=true, so the description carries most of the burden and does add real value: the unlock_shareflo prerequisite and the fallback behavior when stakeholder is omitted. It does not explain why the operation is flagged destructive, what permissions are needed, or whether the addition is reversible, leaving some gaps.
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 conditional behavior and the prerequisite. No filler or redundancy; every sentence carries distinct 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 an 8-parameter mutation tool with no output schema, the description covers the essential prerequisite and the key branching behavior. It stops short of describing permissions, the meaning of the destructive hint, or side effects on the stakeholder's existing representatives, which would round out a write operation.
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 all eight parameters, including the omit-behavior for stakeholder and the mutually exclusive co_permission/sh_permission fields. The description's note that omission yields a 'company-level cap table administrator' adds minor nuance but largely restates what the schema says; 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 ('Adds a representative (user)') plus the object of management ('a stakeholder's account'), which clearly distinguishes it from siblings like create_stakeholder or get_representatives. An agent can identify the operation without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a hard precondition ('Requires unlock_shareflo to have been called first') and a conditional usage rule ('If the stakeholder field is omitted, the representative is added as a company-level cap table administrator'). It does not name alternative tools for adding users, but the context and exclusions it does provide are clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confirm_actionADestructiveInspect
Commits one existing action proposal to the cap table. Call this only after the user has actively confirmed the exact proposal shown to them. The confirmation may get rejected if the user does not have adequate permission. Requires unlock_shareflo to have been called first.
| Name | Required | Description | Default |
|---|---|---|---|
| proposal_uid | Yes | The proposal UID returned by the tool call which created the proposal (e.g. create_holding). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only supply destructiveHint=true, and the description adds real context beyond that: it is a commit/mutation step gated on human confirmation, it can fail on insufficient permission, and it depends on a prior unlock call. It does not say whether the commit is reversible or what a success response looks like, but the safety-relevant behavior is well covered and consistent with destructiveHint.
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 short sentences that each carry distinct load: purpose, confirmation precondition, permission failure mode, and unlock prerequisite. The purpose is front-loaded with 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 single-parameter destructive tool with no output schema, the definition covers purpose, precondition, failure mode, and dependency. The only real gap is that it never hints at the return/result of a successful commit, which an agent may want when chaining calls.
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 proposal_uid comes from the tool call that created the proposal (e.g. create_holding). The description adds no format or sourcing detail beyond that, so the baseline of 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 ('Commits one existing action proposal to the cap table'), which separates it from the create_* siblings that generate proposals in the first place. The word 'existing' plus the required prior unlock makes the two-step flow unmistakable.
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 states the triggering condition ('only after the user has actively confirmed the exact proposal shown to them') and the prerequisite ('Requires unlock_shareflo to have been called first'), naming the sibling tool by name. There is nothing left to infer about when to call it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_holdingAInspect
The first step of allotting/awarding shares or options to a stakeholder. The tool creates an award proposal for the user, including filling in any default fields. You must then present the returned proposal to the user. Call confirm_action only after the user has actively approved that exact proposal. Or create a new one if they want further alterations. Requires unlock_shareflo to have been called first.
| Name | Required | Description | Default |
|---|---|---|---|
| cliff | No | Vesting cliff in months. Leave empty to accept the instrument default. With cliff_override=yes, use 0 for no cliff. | |
| notes | No | Optional notes for the award. | |
| quantity | Yes | Number of shares or options to award; must be greater than zero. | |
| tax_scheme | No | Tax scheme for this award. EMI and CSOP are Option-only; SEIS and EIS are Share-only. Omit to accept the instrument default. | |
| date_acquired | Yes | Award date in YYYY-MM-DD format. | |
| cliff_override | No | Include only when explicitly overriding the instrument's default cliff. With yes, cliff is required; use 0 for no cliff. | |
| exercise_price | No | Exercise price per option. Leave empty to accept the instrument default unless exercise_price_override is yes. | |
| purchase_price | No | Price paid for each unit. Leave empty to accept the instrument default unless purchase_price_override is yes. | |
| vesting_period | No | Vesting duration in months. Leave empty to accept the instrument default. With vesting_period_override=yes, use 0 for no vesting. | |
| instrument_name | Yes | Exact name of the instrument to award. | |
| instrument_type | Yes | Type of the named instrument. | |
| stakeholder_name | Yes | Stakeholder name in UPPER CASE; use FIRSTNAME LASTNAME for an individual. | |
| exercise_currency | No | ISO 4217 currency for exercise_price. Leave empty to accept the instrument default unless exercise_currency_override is yes. | |
| purchase_currency | No | ISO 4217 currency for purchase_price. Leave empty to accept the instrument default unless purchase_price_override is yes. | |
| vesting_start_date | No | Vesting start date in YYYY-MM-DD format. Required when the resolved vesting period is greater than zero; leave empty when it is zero. | |
| replaces_proposal_uid | No | Optional UID of an Open proposal being corrected. A successful new proposal supersedes it; it is not deleted. | |
| exercise_price_override | No | Include only when explicitly overriding the instrument's default exercise price. With yes, exercise_price is required; use 0 only for a zero-price exercise. | |
| purchase_price_override | No | Include only when explicitly overriding the instrument's default purchase price/currency. With yes, include purchase_price (use 0 for no purchase price) and purchase_currency when the price is greater than 0. | |
| vesting_period_override | No | Include only when explicitly overriding the instrument's default vesting period. With yes, vesting_period is required; use 0 for no vesting. | |
| quantity_vested_at_start | No | Units vested immediately at the vesting start. Omit for 0. | |
| exercise_currency_override | No | Include only when explicitly overriding the instrument's default exercise currency. With yes, exercise_currency is required. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only destructiveHint=false and a title in annotations, the description carries the burden well: it discloses that the output is a proposal (not a committed award), requires prior unlock_shareflo, and must be human-approved before confirm_action. This is exactly the behavioral context an agent needs to avoid prematurely finalizing an award.
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 sentences, each earning its place, with the workflow front-loaded (create proposal → present → confirm). No filler or redundancy.
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 21-param, no-output-schema, mutation-style tool, the description covers the dependency (unlock_shareflo), the human-in-the-loop requirement, and the correction path (replaces/new proposal). The 'present the returned proposal' line also implicitly covers how to use the return value.
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 each of the 21 params is already documented in-schema, including the override pattern. The description only adds the meta-point that defaults are filled in automatically, which is a modest addition over the schema baseline.
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 action ('creates an award proposal') and frames it as the first step of allotting/awarding shares or options. This clearly distinguishes it from create_instrument, create_stakeholder, and confirm_action in the sibling 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 explicit sequencing: call only after unlock_shareflo, present the returned proposal to the user, call confirm_action only after active approval of that exact proposal, and create a new proposal if alterations are wanted. When-to-use and the flow relative to alternatives are fully specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_instrumentADestructiveInspect
Creates a new instrument (share class, option class, or other) for the company. Requires unlock_shareflo to have been called first.
| Name | Required | Description | Default |
|---|---|---|---|
| tax_scheme | No | Whether awards of this instrument benefits from tax benefits by default (can be overridden for individual awards) - defaults to None if no parameter provided | |
| cliff_period | No | Default cliff period in months. | |
| nominal_value | No | Nominal value per unit. Mandatory for Shares. | |
| exercise_price | No | Default exercise price. Mandatory for Options. | |
| vesting_period | No | Default vesting period in months. | |
| instrument_name | Yes | Instrument name without type suffix, e.g. "Ordinary" not "Ordinary Share". | |
| instrument_type | Yes | Type of instrument. | |
| nominal_currency | No | ISO 4217 currency code for nominal value. Mandatory for Shares. | |
| exercise_currency | No | ISO 4217 currency code for exercise price. Mandatory for Options. | |
| has_voting_rights | Yes | Whether the instrument has voting rights. | |
| underlying_share_class | No | Share class the options purchase. Mandatory for Options. Use exact case-sensitive name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare destructiveHint=true, and the description usefully adds the unlock_shareflo gating requirement, which is real behavioral context beyond the structured fields. However, it never explains what the operation alters or why a creation is flagged destructive, nor what matters about the unlocked session, so the added value is modest.
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, zero filler. The core purpose leads and the prerequisite follows immediately, so both facts an agent needs are front-loaded and no sentence is 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?
For an 11-parameter mutation with no output schema, the description covers purpose and the unlock prerequisite but omits what is returned (e.g. the new instrument identifier) and any hint about the destructive flag's implication. Combined with 100% schema coverage the gaps are not fatal, but they are visible for a create operation.
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% with 11 documented parameters, 3 enums, and conditional mandatory rules (nominal_value/currency for Shares, exercise_price/currency/underlying_share_class for Options), so the schema carries the semantics. The description contributes nothing parameter-specific beyond the subtype vocabulary, which is the correct baseline of 3.
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 ('Creates') and resource ('a new instrument') and scopes it ('for the company'), then enumerates the concrete subtypes (share class, option class, or other) that mirror the instrument_type enum. This clearly separates it from sibling creators like create_holding and create_stakeholder without naming them.
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 prerequisite: unlock_shareflo must have been called first, which directly ties it to a named sibling tool and prevents a failed invocation. It stops short of stating when NOT to use it or naming alternatives such as get_instruments for inspection, so it falls short of the full when/when-not bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_stakeholderADestructiveInspect
Creates a new stakeholder (holder of an instrument) for the company. After creation, ask whether a representative user should be registered to administer the stakeholder. Requires unlock_shareflo to have been called first.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | First name (individuals) or entity name. | |
| type | Yes | Type of stakeholder. | |
| No | Email address. Individuals only. If provided, auto-creates the first representative. | ||
| address | Yes | Residential address (individual) or registered address (entity). | |
| last_name | No | Last name. Individuals only. | |
| company_reg | No | Company registration number. | |
| joining_date | No | Date the employee joined in YYYY-MM-DD. Employees only. | |
| is_individual | No | Whether the stakeholder is an individual or an entity. | |
| residence_country | Yes | ISO 3166-1 alpha-3 country code (e.g. GBR, USA). | |
| national_insurance | No | NI number. Employees only. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only supply destructiveHint=true plus a title, so the description carries real weight and delivers: the unlock_shareflo precondition, the required follow-up prompt, and the downstream representative path. It does not disclose duplicate-handling, idempotency, or what identifier/response comes back after creation, which matters for chaining into add_representative.
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 short sentences, zero filler, and the operation description is front-loaded before the prerequisite and the follow-up instruction. Every clause carries actionable information for the caller.
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 no output schema, the description would ideally say what a successful call returns (e.g. the new stakeholder identifier needed by add_representative), but it does cover the precondition and the immediate next step. For a 10-parameter creation tool this is close to complete, with the response contract as the only notable gap.
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 all ten parameters including the enum values, employee-only fields, and the email auto-representative behavior. The description adds no parameter-level detail beyond what the schema states, making the baseline 3 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 ('Creates a new stakeholder') and goes further by defining the domain term in parentheses ('holder of an instrument'). It is clearly distinguishable from read-oriented siblings like get_stakeholders, though it never names a sibling directly to route between competing creation tools such as create_holding or add_representative.
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 hard prerequisite ('Requires unlock_shareflo to have been called first') and a post-call workflow step (ask about registering a representative user). It lacks explicit when-not guidance, e.g. when to use add_representative directly instead of relying on the email auto-creation path, so it stops short of the top band.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_holdingsARead-onlyInspect
Returns holdings for a specific stakeholder, or all holdings for every stakeholder in the company if no stakeholder is specified. Results include holding status. Requires unlock_shareflo to have been called first.
| Name | Required | Description | Default |
|---|---|---|---|
| stakeholder | No | Stakeholder name to filter by. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safety is covered. The description adds genuinely useful context beyond the annotations: the sequencing dependency on unlock_shareflo and the fact that results carry holding status. No pagination or volume behavior is mentioned, keeping it out of the top band.
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 short sentences, zero waste, with the primary behavior and its two modes front-loaded ahead of the prerequisite. Every sentence carries distinct 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?
No output schema exists, so the description carries some return-value burden; it mentions holding status but not the broader shape of a holding record. Prerequisite, scope, and parameter behavior are all covered, so only return-format detail 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 coverage is 100% so the baseline is 3, and the description goes further by explaining the semantic effect of omitting the optional stakeholder parameter (returns every stakeholder's holdings). That is real added meaning, though it adds no format or matching-syntax detail.
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 (returns) and resource (holdings) with two clearly delineated modes: filtered by stakeholder or all stakeholders. This distinguishes it from siblings like get_stakeholders and get_instruments at a glance.
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 states the condition for each mode (specify stakeholder to filter, omit to get all) and gives a hard prerequisite: unlock_shareflo must have been called first. It stops short of naming alternative tools, but the usage condition is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instrumentsARead-onlyInspect
Returns all share instruments (share classes) for this company. Requires unlock_shareflo to have been called first.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, so safety is covered; the description adds genuinely useful behavioral context beyond that by disclosing the unlock_shareflo sequencing dependency. It does not describe failure behavior when the prerequisite is missing, nor pagination or return format.
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 short sentences, zero filler, with the scope statement front-loaded and the prerequisite immediately after. Every sentence 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?
No output schema exists, so the description carries some burden for return values; it does characterize the result as all share instruments/share classes, which is adequate for a zero-parameter read. The only gap is the absence of failure/pagination behavior, which is minor for this tool's simplicity.
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?
The tool takes zero parameters, so the baseline is 4. There are no parameters for the description to explain, and it correctly uses its words on scope and prerequisites instead.
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 (returns) and resource (all share instruments / share classes) scoped to 'this company', with a clarifying parenthetical. It does not explicitly contrast itself with siblings like get_holdings or create_instrument, but the resource is distinctive enough that an agent can identify it.
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?
Provides a concrete prerequisite: 'Requires unlock_shareflo to have been called first', naming a sibling tool and the condition for calling it. It stops short of stating when NOT to use it or what happens if the prerequisite is unmet (error vs empty result).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_representativesARead-onlyInspect
Returns representatives (authorised users) and their permission levels for a given stakeholder. If no stakeholder is specified, returns company-level cap table administrators. Requires unlock_shareflo to have been called first.
| Name | Required | Description | Default |
|---|---|---|---|
| stakeholder | No | Stakeholder name to filter by. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true, and the description adds meaningful behavior beyond that: the default scoping when the parameter is omitted and the mandatory unlock_shareflo prerequisite. It does not describe return structure or pagination, but the added operational context is substantive.
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 short sentences, each front-loaded and earning its place: what is returned, the omitted-parameter default, and the prerequisite. No filler or redundancy.
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 no output schema, the description carries the return-value burden and does state the returned content (representatives and permission levels). Combined with the default-scoping note, prerequisite, and readOnly annotation, an agent has enough to call it correctly; only finer return-format detail is absent, which is minor for a simple read tool.
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 'stakeholder' filter is already documented; baseline is 3. The description goes beyond the schema by explaining the semantics of omitting the parameter (falls back to company-level cap table administrators), which is not captured anywhere in 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 ('Returns') and resource ('representatives (authorised users) and their permission levels'), making the output content clear. It is distinguishable from the get_* siblings by resource, but does not explicitly name or contrast any sibling tool.
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?
Provides a clear usage condition ('If no stakeholder is specified, returns company-level cap table administrators') and a hard prerequisite ('Requires unlock_shareflo to have been called first'). It stops short of naming alternative tools, but the context for calling it is explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stakeholdersARead-onlyInspect
Returns all stakeholders (investors, employees, founders, etc.) for the company. Requires unlock_shareflo to have been called first.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, so the safe-read profile is already covered. Beyond that, the description adds the stateful prerequisite (unlock_shareflo must run first), which is exactly the kind of sequencing context annotations cannot express. It does not describe return shape or pagination.
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 short sentences, no filler. The purpose is front-loaded and the prerequisite follows immediately; each sentence carries distinct 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 zero-parameter, read-only list operation with no output schema, the description covers what is returned and the required setup step. It would be slightly stronger with a note about ordering/pagination or volume, but nothing essential is missing for a correct call.
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?
The tool takes zero parameters, so there is no parameter syntax for the description to add and the baseline of 4 applies. Nothing misleading is stated about inputs.
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 (Returns) and resource (all stakeholders) and even enumerates examples of stakeholder types, so the agent knows exactly what data comes back. It does not explicitly differentiate itself from the closely-named sibling get_representatives, which is the only gap.
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 concrete precondition for use: unlock_shareflo must have been called first, naming the sibling tool by name. It does not state when-not to use it or which sibling to pick instead of get_representatives, so it stops short of full routing 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.
10 tool updates
- First observed
add_representative - First observed
confirm_action - First observed
create_holding - First observed
create_instrument - First observed
create_stakeholder - First observed
get_holdings - First observed
get_instruments - First observed
get_representatives - First observed
get_stakeholders - First observed
unlock_shareflo
Related MCP Connectors
UK company data: profiles, iXBRL financials, directors, PSC chains, ECCTA. Hosted, no key.
911UK public-record company intelligence: Companies House, payments, contracts, registers, watch lists
191Read-only tokenized stock data: issuers, chains, contract addresses and corporate actions.
Related MCP Servers
- FlicenseBqualityDmaintenanceProvides access to UK Companies House public data, enabling search and retrieval of company profiles, officers, filing history, and more through natural language queries.12-
- AlicenseNot gradedqualityDmaintenanceEnables querying UK company data including search, profiles, officers, filings, and persons with significant control via Companies House API.338 npmMIT
- FlicenseNot gradedqualityBmaintenanceProvides instant access to verified, enriched business intelligence for any UK company, including legal identity, financial health, web presence, and hiring activity in a single call.-
- AlicenseNot gradedqualityBmaintenanceEnables querying UK Companies House data via natural language, including company profiles, officers, filing history, and other statutory records.223 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.