Skip to main content
Glama

Record an external assessment result

set_assessment_result
Destructive

[Results] Record the result of a candidate's external assessment step (status, score, pass / fail, report link). The step then waits for the recruiter's decision. A completed result replaces the recorded score, pass / fail and label, a report link or note replaces the recorded one, and a cancelled assessment ignores it. Nobody is notified.

Every argument in full, with examples: get_tool_reference.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "position_result_step_id": "<position_result_step_id>",
      "status": "<status>"
    },
    "name": "set_assessment_result"
  }
}

Input Schema

NameRequiredDescriptionDefault
noteNoNote for the recruiter.
scoreNoScore (completed).
passedNoPass / fail as the assessment reports it.
statusYesstarted, completed (a result), expired (not taken in time) or cancelled.
llm_modelNoYour model id, e.g. "claude-opus-4-8"; "unknown" if unsure. For analytics.
score_maxNoMaximum score.
report_urlNoLink to the full report (https).
result_labelNoResult label, for example a language level.
conversation_idNoThe conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics.
position_result_step_idYesThe external assessment step of the application (an application step `id` from get_candidate (or a multi-stage list_interview_results row)).

Output Schema

NameRequiredDescriptionDefault
scoreNo
passedNo
statusNo
outcomeYes
score_maxNo
_mcp_instructionsNoServer-issued metadata for this conversation.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / properties / position_result_step_id / description
      Previous value: -"The external assessment step of the application (position_result_step id)."New value: +"The external assessment step of the application (an application step `id` from get_candidate (or a multi-stage list_interview_results row))."
    • changedInput schema / properties / score_max / exclusiveMinimum
      Previous value: -1New value: +0
    • removedInput schema / properties / score_max / minimum
      Removed value: -0
  2. Changed9 schema fields changed
    • addedInput schema / properties / llm_model
      Added value: +{
      +  "description": "Your model id, e.g. \"claude-opus-4-8\"; \"unknown\" if unsure. For analytics.",
      +  "type": "string"
      +}
    • changedInput schema / properties / passed / description
      Previous value: -"Pass / fail as the assessment reports it. Without it the step's pass mark decides it from the score."New value: +"Pass / fail as the assessment reports it."
    • removedInput schema / properties / position_result_step_id / example
      Removed value: -"6a0f2d4e-1c3b-4e5f-8a7b-9c0d1e2f3a4b"
    • removedInput schema / properties / result_label / example
      Removed value: -"B2"
    • removedInput schema / properties / score / example
      Removed value: -78
    • removedInput schema / properties / score_max / example
      Removed value: -100
    • removedOutput schema / description
      Removed value: -"The recorded result. The step now waits for the recruiter's decision."
    • removedOutput schema / properties / outcome / description
      Removed value: -"applied, or ignored_final for a cancelled assessment."
    • removedOutput schema / properties / status / description
      Removed value: -"Status of the assessment after the call."
  3. Changed10 schema fields changed
    • changedInput schema / properties / conversation_id / description
      Previous value: -"Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request."New value: +"The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics."
    • changedInput schema / properties / note / type
      Previous value: -[
      -  "string",
      -  "null"
      -]New value: +"string"
    • changedInput schema / properties / passed / type
      Previous value: -[
      -  "boolean",
      -  "null"
      -]New value: +"boolean"
    • changedInput schema / properties / position_result_step_id / type
      Previous value: -[
      -  "string",
      -  "null"
      -]New value: +"string"
    • changedInput schema / properties / report_url / type
      Previous value: -[
      -  "string",
      -  "null"
      -]New value: +"string"
    • changedInput schema / properties / result_label / type
      Previous value: -[
      -  "string",
      -  "null"
      -]New value: +"string"
    • changedInput schema / properties / score / type
      Previous value: -[
      -  "number",
      -  "null"
      -]New value: +"number"
    • changedInput schema / properties / score_max / type
      Previous value: -[
      -  "number",
      -  "null"
      -]New value: +"number"
    • changedInput schema / properties / status / enum
      Previous value: -[
      -  "started",
      -  "completed",
      -  "expired",
      -  "cancelled",
      -  null
      -]New value: +[
      +  "started",
      +  "completed",
      +  "expired",
      +  "cancelled"
      +]
    • changedInput schema / properties / status / type
      Previous value: -[
      -  "string",
      -  "null"
      -]New value: +"string"
  4. Added

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, and the description earns credit by explaining exactly why: a completed result replaces the recorded score, pass/fail and label, and a report link or note replaces the recorded one. It also discloses that nobody is notified, which is real behavioral context an agent cannot get from the annotations. It stops short of stating permission or step-state requirements.

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?

A bracketed category tag, one dense paragraph covering effect, state and side effects, then a pointer to the reference tool — no filler. The overwrite sentence is long but every clause carries distinct information. Slight cost from the stacked clauses making the middle harder to scan.

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 10-parameter mutation with full schema coverage and an output schema, the description covers effect, overwrite scope, notification behavior and the follow-on state, and routes argument detail to get_tool_reference. Missing only permissions and error/precondition behavior, which are modest gaps given the structured fields already present.

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?

Schema coverage is 100%, so the baseline is 3, but the description adds conditional meaning the schema does not: which fields are overwritten on a completed result versus ignored on a cancelled one. That helps the agent decide which of the 10 optional parameters actually matter for a given status. It still defers all per-argument detail to get_tool_reference.

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?

States a specific verb and resource — 'Record the result of a candidate's external assessment step' — and enumerates the payload it carries (status, score, pass/fail, report link). That is clearly distinct from read-oriented siblings such as get_interview_result_details or list_interview_results, which an agent could otherwise confuse it with.

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?

Usage is implied rather than stated: the agent learns the step 'then waits for the recruiter's decision' and that a cancelled assessment ignores the result, which hints at the post-assessment context. However, no sibling is named as an alternative and no precondition (e.g. the step must already be started) is spelled out, so the when-to-use decision is left to inference.

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.