Skip to main content
Glama
InfiniteRoomLabs

gunio-mcp

gunio-mcp

A local-only, Docker-packaged MCP server (and a thin read CLI) for gun.io, authenticated with your own browser session — the same host-side cookie-broker + wrapper pattern as claudesync. It lets an MCP client (Claude Code, etc.) read your gun.io freelancer data — interviews, applications, jobs, profile — and perform a small set of gated writes.

Unofficial. No affiliation with gun.io. This talks to gun.io's private, undocumented API using your logged-in session. It is a personal automation tool; use it at your own risk and within gun.io's Terms of Service. No gun.io code is included in this repo.

How it works

Firefox session ──(host-side broker: rookie-cli)──▶ GUNIO_COOKIE ──▶ docker run ──▶ FastMCP server ──▶ app.gun.io/api/v2
  • A cookie broker (scripts/lib/harvest-cookie.sh) reads your gun.io session (sessionid + csrftoken) from the browser, host-side. Nothing leaves your machine.

  • A thin wrapper passes that cookie into a container via the GUNIO_COOKIE env var and docker runs it per invocation.

  • Inside the container, a Python/FastMCP server (gunio_mcp) calls gun.io's /api/v2 through a safety-guarded client (gunio_broker).

Related MCP server: Upwork MCP Server

Security model

  • Reads need only the cookies. Writes echo the csrftoken as X-CSRFToken (Django CSRF), and are double-gated: a call previews unless confirm=true and the server env has GUNIO_MCP_WRITE_SCOPE set.

  • Hard denylist in the client, enforced regardless of tool: auth/logout (a GET that kills your session), the entire /staff/ tree, DELETE on a freelancer (account deletion), complete-screening, and telemetry writes.

  • Cookies are never logged or placed in exceptions.

  • Local only. No data is sent anywhere except gun.io itself.

Install (once Docker image + installer land)

# bootstrap the broker + wrappers, pull the image
scripts/gunio-setup.sh install

# register the MCP server with Claude Code
claude mcp add --scope user gunio ~/.local/share/gunio/gunio-mcp-wrapper.sh

To enable writes, set GUNIO_MCP_WRITE_SCOPE=writes in the server env (see the wrapper). Without it, write tools only ever return a dry-run preview.

Remote mode (--serve)

By default gunio-mcp speaks MCP over stdio for a local client. With --serve it instead runs FastMCP's streamable HTTP transport as a long-lived service:

gunio-mcp --serve                      # http://127.0.0.1:8000/mcp
gunio-mcp --serve --host 0.0.0.0 --port 9000

Configuration (flags win over env vars):

Flag

Env var

Default

Meaning

--host

GUNIO_MCP_HOST

127.0.0.1

bind host

--port

GUNIO_MCP_PORT

8000

bind port

n/a

GUNIO_MCP_AUTH_TOKEN

unset

static bearer token required from clients

n/a

GUNIO_MCP_INSECURE

unset

1 allows a non-loopback bind without a token

Naming convention: GUNIO_MCP_* vars configure the server process itself; GUNIO_* vars (today just GUNIO_COOKIE) configure the gun.io account/session.

Endpoint security

GUNIO_COOKIE authenticates the server TO gun.io; nothing inherent authenticates clients TO this server. Anyone who can reach the HTTP endpoint can act as your gun.io account, including gated writes if the write scope is set. Therefore:

  • Set GUNIO_MCP_AUTH_TOKEN to require Authorization: Bearer <token> on every request (compared in constant time; never logged).

  • Binding a non-loopback host without that token refuses to start, unless you explicitly set GUNIO_MCP_INSECURE=1 because the network layer (e.g. Tailscale or an authenticating proxy) already provides access control.

  • Do NOT set GUNIO_MCP_WRITE_SCOPE on a remote deployment unless GUNIO_MCP_AUTH_TOKEN is configured.

Bearer auth applies only to serve mode; the stdio default ignores these vars.

Docker

docker run -e GUNIO_COOKIE=... -e GUNIO_MCP_AUTH_TOKEN=... -p 8000:8000 \
  gunio-mcp:local --serve --host 0.0.0.0

Inside a container, binding 0.0.0.0 with the token set is the expected pattern.

In remote mode there is no host-side broker refreshing the session: the GUNIO_COOKIE you deploy with is it. When gun.io expires that session, reads start failing until the deployment is updated with a fresh cookie. The auth_status tool (or gunio auth status on the CLI) is how you detect this: it performs one lightweight authenticated read and reports

{"mode": "cookie", "authenticated": false, "checked_at": "...", "error": "gun.io returned HTTP 401"}

without ever raising raw errors or leaking cookie material. Phase 2 will add credential-based login; this release is transport + visibility only.

Develop

uv sync --extra dev
uv run --extra dev pytest -q          # full suite
uv run gunio me                       # thin CLI (needs GUNIO_COOKIE or a logged-in browser)
uv run gunio-mcp                      # run the MCP server over stdio

GUNIO_COOKIE is a sessionid=...; csrftoken=... string; the broker produces it, or set it by hand for local dev.

Layout

Path

Role

src/gunio_broker/client.py

Safety-guarded HTTP client for /api/v2

src/gunio_mcp/tools.py

Pure tool helpers (reads + gated writes), unit-tested

src/gunio_mcp/server.py

FastMCP wrappers + main() (stdio)

src/gunio_cli/main.py

Thin read-only CLI

scripts/

Cookie broker, wrappers, installer (lifted from claudesync)

License

MIT.

Available Tools

24 tools
cancel_interviewB

Cancel an interview. Previews unless confirm=true and writes are enabled.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNo
confirmNo
interview_idYes

TDQS

B3.1/5.0
Behavior3/5

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

Without annotations, the description must disclose behavioral traits. It reveals the preview behavior (read-only by default), which is critical for an agent. However, it does not disclose other important aspects like whether the cancellation is reversible, permissions required, or notifications triggered. The partial disclosure earns a 3.

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

Conciseness4/5

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

The description is very short, with only 11 words. It is front-loaded and contains no unnecessary text. However, the brevity trades off clarity, particularly in explaining 'previews' and parameter roles.

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

Completeness2/5

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

Given the complexity of a cancellation operation (no output schema, no annotations, missing parameter details), the description is incomplete. It does not clarify what 'previews' means exactly (e.g., what output is returned?), the impact of cancellation, or error conditions. More context is needed for an agent to use it correctly.

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

Parameters2/5

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

With 0% schema description coverage, the description must compensate by explaining parameter meanings. It hints at the 'confirm' parameter role ('unless confirm=true'), but does not explain 'interview_id' or 'reason'. The description adds minimal value beyond the schema itself.

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

Purpose4/5

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

The description clearly states 'Cancel an interview.' The verb 'Cancel' and resource 'interview' are specific. The phrase 'Previews unless confirm=true' hints at a preview mode, but the primary action is clear. It is distinct from sibling tools like schedule_interview or reschedule_interview.

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

Usage Guidelines3/5

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

The description provides some usage guidance: 'Previews unless confirm=true and writes are enabled.' This implies that by default it is a preview, and actual cancellation requires confirm=true and writes enabled. However, it does not explicitly state when to use this tool versus alternatives (e.g., rescheduling), nor does it mention any prerequisites or side effects.

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

get_applicationB

Get a single job application by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
application_idYes

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It only says 'Get' which implies read-only, but does not disclose error handling, authentication requirements, or data freshness. For a simple getter, more transparency could be added.

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?

The description is a single, concise sentence that is front-loaded with the action. It contains no unnecessary words. However, it could be slightly expanded to include key context without losing conciseness.

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

Completeness3/5

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

Given the tool is a simple getter with one parameter and no output schema, the description is minimally adequate. It does not mention return format, error cases, or typical usage context. More details would improve completeness.

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

Parameters3/5

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

Schema description coverage is 0%, so the description does not add meaning beyond the schema. However, the only parameter 'application_id' is self-explanatory in the context of getting an application. The description adds no extra details but the schema suffices.

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

Purpose5/5

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

The description clearly states the tool retrieves a single job application by its ID. It uses a specific verb ('Get') and resource ('job application'), and distinct from siblings like list_applications (returns multiple) or update_application (mutates).

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

Usage Guidelines3/5

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

The description implies usage when needing a specific application by ID, but provides no explicit guidance on when to use this tool versus alternatives like list_applications. No when-not-to-use or prerequisites mentioned.

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

get_availabilityB

Freelancer availability / seeking state.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden of behavioral disclosure. It only implies a read operation but does not explicitly state that it is read-only, nor does it mention any side effects, authentication requirements, or rate limits. The description is too minimal for safe agent usage.

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

Conciseness5/5

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

The description is extremely concise and front-loaded with the key purpose. It wastes no words and every character contributes to meaning.

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

Completeness3/5

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

For a zero-parameter tool with no output schema, the description is adequate but incomplete. It tells what resource is returned but does not describe the structure or format of the response (e.g., boolean, object, string). An agent may need to infer or test to understand the exact output.

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

Parameters4/5

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

The tool has zero parameters, and the schema coverage is 100% (since there are no params). The description adds no parameter information, but that is acceptable because there are no parameters to document. Baseline for 0 params is 4.

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

Purpose4/5

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

The description clearly states that the tool returns freelancer availability and seeking state, which distinguishes it from sibling tools like get_me or get_freelancer_profile that cover broader profile information. However, it could be more explicit about what 'availability' entails (e.g., time slots or a boolean).

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, such as when to use get_me or get_freelancer_profile instead. There is no mention of context, prerequisites, or exclusion criteria.

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

get_freelancer_profileB

Full freelancer profile: bio, experiences, skills, rates.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It mentions what fields are included but does not disclose behavioral traits like read-only nature, authentication requirements, or whether it returns the authenticated user's profile or a specific freelancer's profile (given no parameter for ID).

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

Conciseness5/5

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

The description is a single sentence that is both concise and informative. It clearly communicates the tool's purpose without any wasted words.

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

Completeness2/5

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

Given the absence of an output schema and annotations, the description is too brief. It fails to clarify important context such as the identity of the profile owner (e.g., does it always return the authenticated user's profile?), the output format, or any rate limits. With many sibling tools, more context is needed.

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

Parameters4/5

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

There are 0 parameters, and schema coverage is 100%. The description adds value by specifying the content of the profile (bio, experiences, skills, rates), which goes beyond the empty schema. Baseline 4 is appropriate.

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

Purpose4/5

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

The description clearly states the tool returns a full freelancer profile listing specific fields (bio, experiences, skills, rates). However, it does not differentiate from the sibling tool 'get_me', which might also return profile information, thus lacking sibling distinction.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus the many sibling tools, such as 'get_me' or 'list_interviews'. There is no mention of prerequisites, when-not-to-use, or alternatives.

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

get_interviewC

Get a single interview by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
interview_idYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations provided, and description does not disclose behavioral traits such as read-only nature, authorization needs, or potential errors. Simply states 'Get' but with no indication of side effects or restrictions.

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

Conciseness3/5

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

The description is a single sentence, which is concise, but it sacrifices clarity and completeness. It is under-specified rather than efficiently conveying necessary information.

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

Completeness2/5

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

Given the simplicity of the tool (1 param, no output schema), the description is insufficient. It should at least mention what is returned (e.g., interview details) or any prerequisites (e.g., interview must exist).

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

Parameters1/5

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

The only parameter, interview_id, has no schema description (0% coverage) and the tool description adds no meaning beyond its name. No guidance on format or where to obtain the ID.

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

Purpose4/5

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

The description clearly states the action (Get) and resource (single interview) and the identifier (by id). It distinguishes from list_interviews which returns multiple, but could be more specific about the output.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives like list_interviews or cancel_interview. Given many sibling tools, explicit directions would be helpful.

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

get_jobA

Get a single job listing by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It indicates a read operation ('Get') but does not disclose potential errors, authentication needs, rate limits, or confirm it is non-destructive. The tool is simple, so the description is adequate but not thorough.

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

Conciseness5/5

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

The description is a single sentence with no unnecessary words. It is front-loaded and efficient.

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

Completeness3/5

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

The tool is simple (1 param, no output schema, no annotations). The description covers the action but omits return value expectations or error conditions. It is somewhat complete for basic use.

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

Parameters2/5

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

Schema coverage is 0% with no parameter descriptions. The description only mentions 'by id' without explaining the job_id format, example, or constraints. It adds minimal semantic value beyond the schema.

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

Purpose5/5

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

The description clearly states the verb 'Get', the resource 'a single job listing', and the method 'by id'. This directly addresses what the tool does and distinguishes it from sibling tools like search_jobs.

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

Usage Guidelines3/5

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

No guidance on when to use this tool versus alternatives like search_jobs or list_applications. The description implies usage for retrieving a specific job by ID, but lacks explicit context or exclusions.

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

get_meA

Current gun.io user: identity, contact, flags, embedded freelancer summary.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It lists returned data but does not disclose authentication requirements, rate limits, or side effects.

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

Conciseness5/5

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

Single, front-loaded sentence with no waste. Every word is essential.

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

Completeness4/5

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

For a parameterless tool with no output schema, the description is adequately complete, listing the data categories. Could mention authentication but not required given low complexity.

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

Parameters4/5

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

No parameters exist, and schema coverage is 100%. Description adds meaningful context about the returned fields beyond the empty schema.

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

Purpose5/5

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

The description clearly states the tool returns the current user's identity, contact, flags, and embedded freelancer summary. It distinguishes from sibling tools like get_freelancer_profile by specifying 'current' user.

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?

Implies usage for the current user's own info, but no explicit when-to-use or alternatives mentioned. Sibling tools suggest other contexts but guidance is lacking.

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

get_subscriptionsB

The user's notification subscription settings.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose behavioral traits such as whether it is read-only, requires authentication, or has any side effects. The description carries the full burden but only states the resource.

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?

The description is a single, efficient sentence that communicates the resource without redundancy. It earns its place but could be slightly more informative about what the tool does (e.g., 'retrieve').

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

Completeness2/5

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

Given the lack of output schema and annotations, the description should clarify what is returned (e.g., list of subscriptions, statuses). It only mentions 'settings', which is vague for an agent.

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

Parameters4/5

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

The tool has no parameters, so the schema fully covers this aspect. The description adds context by specifying that it concerns 'notification subscription settings', which is sufficient for a parameterless tool.

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

Purpose4/5

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

The description clearly indicates the tool retrieves notification subscription settings for the user. It distinguishes from sibling tools like get_me or list_interviews by specifying 'subscription settings'. However, it uses a noun phrase instead of a verb.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. Even though it's straightforward, the description does not mention prerequisites or typical use cases.

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

get_workstyleC

The user's work-style preferences.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.7/5.0
Behavior1/5

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

No annotations and no behavioral details beyond the noun phrase. The description fails to disclose that it is a read-only operation or any side effects. Fully reliant on agent inference.

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

Conciseness5/5

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

Extremely concise, one sentence, no wasted text. Front-loaded and efficient.

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

Completeness2/5

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

For a tool with no output schema, the description provides insufficient context about the return format or behavior. It fulfills the bare minimum but leaves agents uninformed.

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

Parameters3/5

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

Schema coverage is 100% (no parameters), baseline is 3. The description adds minimal meaning by specifying 'user's work-style preferences,' which aligns with the empty schema.

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

Purpose4/5

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

The description clearly states it returns the user's work-style preferences, distinguishing it from siblings like get_me or get_freelancer_profile. However, it could be more explicit about the verb (e.g., 'retrieves').

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like get_me or get_freelancer_profile. The agent is left guessing the appropriate context.

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

job_statsB

Platform job stats (e.g. jobs published last week).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries full burden. It only says 'stats' without disclosing behavioral traits such as read-only nature, data freshness, or potential performance impact.

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

Conciseness5/5

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

Single sentence, no wasted words. Front-loaded with key information.

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

Completeness3/5

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

Adequate for a simple stats tool with no parameters, but lacks details on what stats exactly are returned, time range, or access permissions. Could be more complete given the number of sibling tools.

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

Parameters4/5

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

Zero parameters, so baseline is 4. The description adds implicit context via the example, though no explicit parameter documentation is needed.

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

Purpose4/5

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

The description states the tool provides platform job stats with an example (jobs published last week). It is clear but does not explicitly distinguish from sibling tools like search_jobs or get_job.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. The description does not mention context, prerequisites, or exclusions.

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

list_applicationsC

List the freelancer's job applications (with status and embedded job info).

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It mentions that results include status and embedded job info, but fails to disclose pagination behavior, ordering, or read-only nature. This leaves significant gaps for an agent.

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

Conciseness3/5

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

The description is a single sentence, which is concise. However, it omits important details that could be included without significant length, such as pagination behavior. It is not optimally informative.

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

Completeness2/5

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

For a simple list tool with one optional parameter and no output schema, the description is incomplete. It does not explain how pagination works, what the output structure looks like, or how to interpret the status and embedded job info. More context is needed for an agent to use it effectively.

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

Parameters1/5

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

Schema description coverage is 0%, yet the description does not mention the 'page' parameter at all. It adds no meaning beyond the schema, failing to compensate for the lack of parameter documentation.

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

Purpose4/5

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

The description clearly states the verb 'List' and the resource 'the freelancer's job applications', with additional detail about status and embedded job info. It distinguishes from similar tools like get_application and list_interviews, but could be slightly more explicit about the scope (freelancer-specific).

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like list_hires or list_invites. The description does not mention when not to use it or provide context for selection among siblings.

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

list_hiresC

List the freelancer's active/past engagements (hires).

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided, and description gives minimal behavioral context: lists active/past engagements, but nothing about side effects, authentication, rate limits, or pagination behavior.

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

Conciseness3/5

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

Extremely concise (7 words) but omits crucial parameter information, making it incomplete despite brevity.

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

Completeness2/5

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

For a listing tool with optional pagination and no output schema, the description is too sparse. It doesn't clarify output format, pagination limits, or how to use the page parameter, leaving significant gaps for agent use.

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

Parameters1/5

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

Schema has one parameter 'page' with 0% schema description coverage. Description fails to mention or explain the page parameter, leaving the agent without guidance on its semantics.

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

Purpose5/5

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

Description clearly states verb 'list' and resource 'engagements (hires)', including scope 'active/past'. It effectively distinguishes from sibling tools like list_interviews or list_applications.

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?

Implies usage for viewing hires, but no explicit when-to-use or when-not-to-use guidance is provided. Sibling tools exist but no comparison given.

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

list_interviewsB

List the freelancer's interviews, optionally filtered by status.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoOptional status filter, e.g. ['PENDING','SCHEDULED'].

TDQS

B3.1/5.0
Behavior2/5

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

The description indicates a read-only operation ('List'), but provides no additional behavioral details such as pagination, ordering, authentication requirements, or rate limits. With no annotations available, more context would be beneficial.

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

Conciseness5/5

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

The description is a single concise sentence with no unnecessary words. It is front-loaded and efficient.

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

Completeness3/5

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

For a simple list tool with one optional parameter, the description is mostly adequate. However, it lacks details about the return format, ownership (e.g., authenticated freelancer), and default behavior (e.g., all statuses if filter omitted). Given the lack of output schema, more completeness would help.

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

Parameters3/5

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

The only parameter 'status' already has a clear description in the input schema (100% coverage). The description redundantly mentions filtering by status but adds no new semantic information beyond what the schema provides.

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

Purpose4/5

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

The description clearly states the action ('List') and the resource ('freelancer's interviews'), and mentions optional filtering by status. However, it does not differentiate from sibling tools like 'list_mission_interviews' or 'get_interview', which might have overlapping scope.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as 'list_mission_interviews' or 'get_interview'. The description implies listing all interviews for the freelancer, but does not clarify prerequisites or contexts.

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

list_invitesB

List inbound invites for the freelancer.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations exist, and the description does not disclose any behavioral traits such as pagination, authentication requirements, or whether it returns only pending invites. The description adds minimal context beyond the tool's basic function.

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?

The description is very concise: a single sentence with no unnecessary words. It is front-loaded and efficient, though it could include a bit more detail without bloating.

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

Completeness2/5

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

Given no output schema and no annotations, the description should ideally mention what the response contains (e.g., a list of invite objects). It fails to provide this context, leaving the agent uncertain about the return format.

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

Parameters3/5

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

The tool has zero parameters, so schema coverage is effectively 100%. The baseline for 0 parameters is 4, but given the simplicity, a 3 is appropriate as the description does not add any parameter-specific information, which is acceptable.

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

Purpose5/5

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

The description clearly states the verb 'List', the resource 'inbound invites', and specifies scope 'for the freelancer'. It is distinct from sibling tools like list_interviews or list_applications.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. No exclusions or context provided, leaving the agent to infer usage solely from the name and description.

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

list_mission_interviewsB

List the freelancer's mission interviews.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3/5.0
Behavior2/5

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

No annotations are present, and the description does not disclose any behavioral traits such as read-only nature, authentication requirements, or side effects. For a listing operation, it is reasonable to assume idempotency but it is not stated.

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?

The description is a single sentence that is to the point, but it could benefit from additional context about what 'mission interviews' are, without becoming verbose. It is concise but slightly under-specified.

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

Completeness2/5

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

Given the existence of sibling tools like 'list_interviews', the description fails to distinguish this specific tool's purpose. There is no output schema, and the return value is not described. The tool is simple with no parameters, but the lack of context about the scope ('mission' vs general interviews) makes it incomplete.

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

Parameters4/5

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

There are no parameters in the schema, so the description does not need to add parameter information. The baseline score for zero parameters is 4, and the description is adequate though it adds no extra semantic context.

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

Purpose4/5

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

The description clearly states the action (list) and the resource (the freelancer's mission interviews), but it fails to differentiate this tool from its sibling 'list_interviews', which likely lists all interviews without the 'mission' qualifier.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'list_interviews' or other listing tools. An explicit when-to-use or when-not-to-use statement is absent.

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

list_presentationsC

List client presentations for the freelancer.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior1/5

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

With no annotations provided, the description bears full responsibility for behavioral disclosure. It merely states the action without any details on permissions, side effects, rate limits, or what the response contains. This is severely lacking.

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

Conciseness5/5

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

The description is a single sentence, concise and front-loaded. Every word adds value, with no superfluous content.

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

Completeness2/5

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

For a list tool with no parameters, no output schema, and no annotations, the description is too minimal. It does not explain what 'client presentations' are, how they are returned (e.g., list, paginated?), or any ordering. More context is needed for completeness.

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

Parameters4/5

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

The input schema has zero parameters (100% coverage), so the description does not need to add parameter meaning. The baseline for no parameters is 4, and the description is adequate in this dimension.

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

Purpose4/5

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

The description states 'List client presentations for the freelancer,' which clearly identifies the verb and resource. However, it does not differentiate this tool from sibling list tools such as list_interviews or list_applications, leaving some ambiguity about scope.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives (e.g., when a filter or specific criteria is needed). It lacks any when-to-use or when-not-to-use context.

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

list_reviewsC

List reviews the freelancer has received.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description should disclose behavioral traits like read-only nature or scope, but it only says 'reviews the freelancer has received' without specifying whether they are only the freelancer's own reviews or all reviews involving the freelancer.

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

Conciseness3/5

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

The description is very short, but lacks necessary detail; it is concise but at the expense of completeness.

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

Completeness2/5

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

Given no output schema and a simple parameter, the description fails to explain pagination, sorting, or what types of reviews are included, making it incomplete.

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

Parameters1/5

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

The single parameter 'page' is not mentioned in the description, and schema description coverage is 0%. The description adds no value over the schema.

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

Purpose5/5

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

The description clearly states the verb 'list' and resource 'reviews the freelancer has received', distinguishing it from sibling tools like list_interviews or list_applications.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., for filtering or specific review types) or prerequisites.

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

reschedule_interviewB

Reschedule an interview. Previews unless confirm=true and writes are enabled.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
confirmNo
interview_idYes

TDQS

B3.4/5.0
Behavior3/5

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

No annotations provided, but the description reveals preview behavior and the confirm flag. However, it does not disclose side effects on the original interview, required permissions, or error conditions.

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?

The description is remarkably concise with two sentences, front-loading the action. However, the phrase 'and writes are enabled' is ambiguous, slightly reducing clarity.

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

Completeness2/5

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

Given the lack of annotations, output schema, and the presence of a nested object parameter, the description fails to explain what the body contains, what a preview yields, or the overall mutation effect. Significant gaps remain.

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

Parameters2/5

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

Schema coverage is 0% with no parameter descriptions. The description only clarifies the confirm parameter, leaving interview_id and the nested body object undefined. Insufficient compensation for low schema coverage.

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

Purpose5/5

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

The description clearly states the verb 'Reschedule' and the resource 'interview', distinguishing it from sibling tools like schedule_interview and cancel_interview.

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

Usage Guidelines3/5

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

The description implies usage via the preview vs. write behavior, but lacks explicit guidance on when to use this tool versus alternatives or prerequisites (e.g., interview must be scheduled).

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

respond_to_inviteC

Respond to an invite. Previews unless confirm=true and writes are enabled.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
confirmNo
invite_idYes

TDQS

C2.4/5.0
Behavior2/5

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

The description mentions preview behavior unless confirm=true and writes enabled, but lacks details about effects of preview, what writes occur, or what enables writes. No annotations to supplement.

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

Conciseness3/5

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

The description is extremely short (two sentences), which is concise but sacrifices necessary detail. It vaguely communicates the core action but omits parameter semantics and usage context.

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

Completeness1/5

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

Given 3 parameters (one complex), no output schema, and no annotations, the description is gravely incomplete. It doesn't explain return values, errors, or the full range of behavior.

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

Parameters1/5

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

With 0% schema description coverage, the description should clarify parameters. It only indirectly references confirm. No explanation of invite_id or body (which is a freeform object). This is insufficient for an agent.

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

Purpose4/5

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

The description clearly identifies the action (respond to an invite) and hints at a two-phase process (preview vs confirm). However, it does not specify what 'respond' entails (e.g., accept/decline or send a message) nor differentiate from similar actions like updating an application.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool over siblings like list_invites or update_application. No context about prerequisites or alternatives.

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

schedule_interviewB

Schedule an interview. Previews unless confirm=true and writes are enabled.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
confirmNo
interview_idYes

TDQS

B3/5.0
Behavior4/5

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

Since no annotations are provided, the description carries full burden. It discloses that the tool previews by default and only writes when confirm=true and writes are enabled. This is a key behavioral trait, though it omits other side effects like idempotency or error cases.

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

Conciseness3/5

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

The description is very short (one sentence), which is front-loaded with purpose and key condition. However, it is under-specified for a tool with three parameters, one being a complex nested object.

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

Completeness2/5

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

Given the tool has three parameters, no output schema, and a nested body object, the description is incomplete. It lacks parameter descriptions, return value details, error states, and context relative to sibling tools.

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

Parameters2/5

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

Schema coverage is 0%, so description must add meaning. It explains the confirm parameter's role, but provides no information about the interview_id (required) or the body (required nested object with additionalProperties), leaving significant ambiguity.

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

Purpose4/5

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

The description clearly states it schedules an interview, using the verb 'schedule' and resource 'interview'. It distinguishes from siblings like reschedule_interview and cancel_interview, but the conditional preview behavior adds slight ambiguity.

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

Usage Guidelines2/5

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

The description only explains when the preview vs actual write occurs via the confirm parameter, but provides no guidance on when to use this tool versus alternatives like reschedule_interview or list_interviews.

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

search_jobsC

Search open gun.io job listings.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoFree-text search query.
pageNo

TDQS

C2.5/5.0
Behavior1/5

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

With no annotations, the description carries full burden. It only states 'search' with no disclosure of return format, pagination behavior, authentication needs, or rate limits. This is a significant gap for a search tool.

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

Conciseness3/5

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

The single-sentence description is concise but under-specified. It is not front-loaded with critical details; the brevity sacrifices utility. An adequate length for a minimal description but lacks substance.

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

Completeness2/5

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

Given two parameters, no output schema, and 22 sibling tools, the description is insufficient. It does not explain return values, pagination, or how 'q' filters results, leaving the agent with too many unknowns for reliable use.

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

Parameters1/5

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

Schema description coverage is 50% (q described, page not). The description adds no meaning beyond the schema; it does not clarify how to use 'q' (e.g., fields searched) or 'page' (e.g., starting from 1? 0?). Fails to compensate for the missing schema descriptions.

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

Purpose5/5

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

The description 'Search open gun.io job listings' clearly identifies the verb (search) and resource (job listings), and distinguishes this tool from siblings like get_job (single job) or list_applications (applications) by focusing on searching open listings.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., get_job, list_interviews). No mention of prerequisites or typical scenarios, leaving the agent to infer usage from the name alone.

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

update_applicationB

Patch a job application. Previews unless confirm=true and writes are enabled.

ParametersJSON Schema
NameRequiredDescriptionDefault
patchYes
confirmNo
application_idYes

TDQS

B3.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses the preview-before-write behavior and the conditional write, which are key behavioral traits. Lacks details about what gets destroyed or error handling.

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

Conciseness5/5

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

Two sentences, minimal waste. Verb and resource are front-loaded. Every sentence adds value.

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

Completeness2/5

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

The description omits important context: what fields the patch object accepts, the response format, conditions for 'writes enabled,' and error scenarios. A more complete description would help agents use the tool correctly.

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

Parameters1/5

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

Schema coverage is 0%, and the description adds no meaning to any parameter. The patch object with additionalProperties: true is left completely unexplained, making it hard for an agent to know what values to provide.

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?

Clearly states the action (Patch) and resource (job application). The phrase 'Previews unless confirm=true and writes are enabled' adds context that distinguishes it from other application tools like withdraw_application.

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?

Implies usage context: preview by default, write only when confirm=true and writes enabled. However, no explicit guidance on when to choose this over other tools or prerequisites.

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

update_profileA

Patch the freelancer profile. Previews unless confirm=true and writes are enabled.

ParametersJSON Schema
NameRequiredDescriptionDefault
patchYes
confirmNo

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description discloses key behavioral traits: default preview mode, write only when confirm=true and writes enabled. This provides useful context beyond basic mutation.

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?

The description is single-sentence and front-loaded with the key action. It is concise but could add a brief note on patch format without becoming verbose.

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

Completeness3/5

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

The description covers preview/write behavior and confirm parameter but omits details on the patch object structure, which is critical given no output schema and nested objects.

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

Parameters3/5

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

Schema coverage is 0%, so description must compensate. It explains the confirm parameter but does not describe the structure or permissible keys of the patch object, leaving ambiguity.

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

Purpose5/5

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

The description clearly states the verb 'Patch' and the resource 'freelancer profile', distinguishing it from sibling tools like get_freelancer_profile (read) and update_application (different resource).

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

Usage Guidelines3/5

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

The description implies usage for patching profiles and mentions confirmation behavior but does not provide explicit when-to-use or when-not-to-use guidelines nor contrast with alternatives.

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

withdraw_applicationB

Withdraw a job application. Previews unless confirm=true and writes are enabled.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNo
confirmNo
application_idYes

TDQS

B3/5.0
Behavior3/5

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

With no annotations, the description bears full burden. It discloses the preview-first behavior and the need for confirm=true to execute, which is helpful. However, it fails to mention whether the operation is reversible, permission requirements, or effects on related data.

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?

The description is concise at two sentences, with the key action front-loaded. However, it sacrifices parameter details that could be included without significant verbosity.

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

Completeness2/5

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

Given 3 parameters, no output schema, and no annotations, the description is insufficient. It does not explain return values, error handling, or parameter roles, leaving significant gaps for the agent.

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

Parameters1/5

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

Schema coverage is 0% and the description does not explain any of the three parameters (application_id, reason, confirm). It only references confirm indirectly via 'confirm=true', leaving the agent with no semantic context for the other parameters.

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

Purpose5/5

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

The description clearly states 'Withdraw a job application' with a specific verb and resource. It distinguishes from siblings like update_application and cancel_interview by the action type.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives like update_application or cancel_interview. The description implies that actual withdrawal requires confirm=true and writes enabled, but does not clarify when preview mode is appropriate.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 24 tool updatesv0.1.0
    • First observedcancel_interview
    • First observedget_application
    • First observedget_availability
    • First observedget_freelancer_profile
    • First observedget_interview
    • First observedget_job
    • First observedget_me
    • First observedget_subscriptions
    • First observedget_workstyle
    • First observedjob_stats
    • First observedlist_applications
    • First observedlist_hires
    • First observedlist_interviews
    • First observedlist_invites
    • First observedlist_mission_interviews
    • First observedlist_presentations
    • First observedlist_reviews
    • First observedreschedule_interview
    • First observedrespond_to_invite
    • First observedschedule_interview
    • First observedsearch_jobs
    • First observedupdate_application
    • First observedupdate_profile
    • First observedwithdraw_application

TDQS

B3.2/5.0

Scored across 24 tools

Disambiguation4/5

Most tools target distinct resources (user, profile, interviews, applications, etc.), but 'list_interviews' and 'list_mission_interviews' could cause confusion; descriptions help clarify.

Naming Consistency4/5

Predominantly uses verb_noun pattern (list_, get_, update_, etc.), with minor deviations like 'get_me' and 'job_stats' being slightly off-pattern.

Tool Count4/5

24 tools is above the typical range but still reasonable for a comprehensive freelance platform client; each tool serves a distinct purpose without being excessive.

Completeness4/5

Covers core freelancer workflows (profile, applications, interviews, invites, hires, job search), but lacks tools for messaging or payment tracking which might be relevant.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    D
    maintenance
    A local job-hunting MCP server for discovering jobs across pluggable web sources, tracking applications through a status lifecycle, and managing profiles/resumes, with geo/map-region search.
    12
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Local-first MCP server for research on AI-assisted browsing of a user-owned professional-network account (e.g., LinkedIn), providing read-focused tools such as profile, company, search, and feed reads.
    MIT