Skip to main content
Glama

NeverApply

Get your profile

get_profile
Read-onlyIdempotent

Read your career preferences, saved facts, completeness, plan, remaining usage, latest 20 resumes and the connected client send grant. Use before suggesting profile edits or paid actions. Unconfirmed facts are suggestions, not permission or truth. Never modifies anything.

Input Schema

NameRequiredDescriptionDefault

No arguments

Output Schema

NameRequiredDescriptionDefault
factsYes
resumesYes
residenceYesWhere the member lives, as one record. Null when no country is known. Change it with update_profile residence_*.
preferencesYes
citizenshipsYesNull when nothing is known. Change it with update_profile citizenships.
work_statusesYesNull when nothing is known. A country with no status and no citizenship needs a sponsor, except the country the member lives in, which waits. Change it with update_profile work_statuses.
plan_and_usageYes
standing_send_grantYes
profile_completenessYes
credit_unlock_messageYes
countries_without_sponsorYesISO alpha-2 codes where the member can work without a sponsor, read from the citizenships, the work statuses and the residence.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changed
    • addedOutput schema / properties / citizenships
      Added value: +{
      +  "description": "Null when nothing is known. Change it with update_profile citizenships.",
      +  "properties": {
      +    "codes": {
      +      "description": "ISO alpha-2 codes, primary first; empty for a stateless member.",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "confirmed": {
      +      "description": "False while the list is assumed from the resume or an earlier answer.",
      +      "type": "boolean"
      +    },
      +    "source": {
      +      "enum": [
      +        "cv",
      +        "earlier_answer",
      +        "default",
      +        null
      +      ],
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    }
      +  },
      +  "required": [
      +    "codes",
      +    "confirmed",
      +    "source"
      +  ],
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / countries_without_sponsor
      Added value: +{
      +  "description": "ISO alpha-2 codes where the member can work without a sponsor, read from the citizenships, the work statuses and the residence.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • removedOutput schema / properties / preferences / properties / visa_status
      Removed value: -{
      -  "type": [
      -    "string",
      -    "null"
      -  ]
      -}
    • addedOutput schema / properties / residence
      Added value: +{
      +  "description": "Where the member lives, as one record. Null when no country is known. Change it with update_profile residence_*.",
      +  "properties": {
      +    "city": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "confirmed": {
      +      "description": "False while the residence is assumed from an earlier answer.",
      +      "type": "boolean"
      +    },
      +    "country": {
      +      "description": "ISO alpha-2 code.",
      +      "type": "string"
      +    },
      +    "postal_code": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "source": {
      +      "enum": [
      +        "cv",
      +        "earlier_answer",
      +        "default",
      +        null
      +      ],
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "state": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "street_address": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    }
      +  },
      +  "required": [
      +    "country",
      +    "city",
      +    "state",
      +    "postal_code",
      +    "street_address",
      +    "confirmed",
      +    "source"
      +  ],
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / work_statuses
      Added value: +{
      +  "description": "Null when nothing is known. A country with no status and no citizenship needs a sponsor, except the country the member lives in, which waits. Change it with update_profile work_statuses.",
      +  "properties": {
      +    "confirmed": {
      +      "description": "False while the list is assumed from the resume or an earlier answer.",
      +      "type": "boolean"
      +    },
      +    "source": {
      +      "enum": [
      +        "cv",
      +        "earlier_answer",
      +        "default",
      +        null
      +      ],
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "statuses": {
      +      "description": "ISO alpha-2 code to work status: permanent_resident, open_permit, open_permit_that_ends, employer_tied or needs_sponsor. Only countries no citizenship covers.",
      +      "type": "object"
      +    }
      +  },
      +  "required": [
      +    "statuses",
      +    "confirmed",
      +    "source"
      +  ],
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "preferences",
      -  "facts",
      -  "profile_completeness",
      -  "credit_unlock_message",
      -  "plan_and_usage",
      -  "resumes",
      -  "standing_send_grant"
      -]New value: +[
      +  "preferences",
      +  "residence",
      +  "citizenships",
      +  "work_statuses",
      +  "countries_without_sponsor",
      +  "facts",
      +  "profile_completeness",
      +  "credit_unlock_message",
      +  "plan_and_usage",
      +  "resumes",
      +  "standing_send_grant"
      +]
  2. Changed1 schema field changed
    • changedOutput schema / properties / preferences / properties / prefer_stated_intent / description
      Previous value: -"True when matching weights the stated roles over the resume history (the rehomed D12 intent question, ADR 0069)."New value: +"True when matching weights the stated roles over the resume history (the rehomed D12 intent question)."
  3. Changed1 schema field changed
    • changedOutput schema / properties / facts / items / properties / source / description
      Previous value: -"user = typed/confirmed by the person; mined = AI suggestion; answer = promoted from a screening answer they gave; memory = AI suggestion drawn from their chat with Otto."New value: +"user = typed/confirmed by the person; mined = AI suggestion; answer = promoted from a screening answer they gave; memory = AI suggestion drawn from their chat with the NeverApply assistant."
  4. Changed2 schema fields changed
    • removedOutput schema / properties / plan_and_usage / properties / limits / properties / free_manual_applications_per_day
      Removed value: -{
      -  "type": "integer"
      -}
    • changedOutput schema / properties / plan_and_usage / properties / limits / required
      Previous value: -[
      -  "mcp_reads_per_day",
      -  "free_mcp_reads_per_day",
      -  "pro_auto_apply_per_day",
      -  "free_manual_applications_per_day"
      -]New value: +[
      +  "mcp_reads_per_day",
      +  "free_mcp_reads_per_day",
      +  "pro_auto_apply_per_day"
      +]
  5. First observed

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, and non-destructive, so the safety profile is covered. The description adds genuinely new context beyond them: results are bounded (latest 20 resumes) and unconfirmed facts are "suggestions, not permission or truth," which materially changes how an agent should treat the returned 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?

Front-loaded with the resource list, then the usage trigger, then the caveat — a sound ordering with no filler sentences. "Never modifies anything" is slightly redundant with readOnlyHint but is short and reinforces the read-only contract rather than wasting space.

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

Completeness5/5

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

A parameterless read tool with an output schema is a low-complexity case, and the description still covers trigger conditions, result bounds, and data-trust caveats. Nothing an agent needs in order to call this correctly is missing.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. The enumerated return contents are useful framing even though they belong to the output 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?

Specific verb ("Read") plus an enumerated resource list: career preferences, saved facts, completeness, plan, remaining usage, latest 20 resumes, and client send grant. An agent can distinguish this from siblings like get_application or get_job without opening any schema.

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

Usage Guidelines4/5

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

Explicitly says to call it "before suggesting profile edits or paid actions," which gives a concrete trigger condition. It does not name a sibling alternative outright, but combined with "Never modifies anything" it implicitly routes edits to update_profile.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources