Skip to main content
Glama
swiftyspiffy

Flighty MCP

by swiftyspiffy

link_account

Destructive

Links a Flighty account by submitting an approval token, authenticating the approving account. Requires write access enabled and a payload matching the user link request schema.

Instructions

link_account: POST /v1/user/link. Mutating; requires FLIGHTY_ALLOW_WRITES=true. Not live-validated. payload must match get_schema('UserLinkRequestProto'). No path parameters. Approving account authenticates; body token is the incoming approval token. Initiator token issuance/merge semantics remain unverified.

Input Schema

NameRequiredDescriptionDefault
pathNo
queryNo
payloadNo
confirm_destructiveNo

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A3.7/5.0
Behavior4/5

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

Adds real context beyond the annotations: it states the write flag requirement, warns 'Not live-validated', and flags that initiator token issuance/merge semantics are unverified — exactly the kind of caveat an agent needs before a destructive write. It stays consistent with destructiveHint=true and idempotentHint=false, though it never says what state is overwritten or what a merge does.

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

Conciseness4/5

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

Front-loads the endpoint and mutating/write-flag status, then adds caveats — every sentence carries signal. The closing 'merge semantics remain unverified' is slightly terse/cryptic, but it is not padding.

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

Completeness4/5

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

An output schema exists, so return values need not be explained; the description instead covers the risky parts — mutability, required write flag, auth model, validation status. The main residual gap is that it never explains how confirm_destructive should be used on this destructive call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema coverage across 4 params, the description does useful work: it explicitly negates the path parameter and points payload at get_schema('UserLinkRequestProto'), and explains the body token's role. It says nothing about 'query' or, more importantly, 'confirm_destructive', which is a notable omission for a destructive operation.

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

Purpose4/5

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

Names a specific verb+resource ('link_account') and pins it to a concrete endpoint (POST /v1/user/link), plus clarifies the auth/approval-token mechanic. It does not differentiate from nearby siblings like accept_friend_invite or register_anonymous_user, so an agent still has to infer the boundary.

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

Usage Guidelines3/5

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

Gives a hard precondition (FLIGHTY_ALLOW_WRITES=true) and distinguishes the approving account from the body token, which is genuine usage context. However, it never says when to prefer this over sibling flows such as accept_friend_invite or sync_account, and offers no exclusions.

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