Skip to main content
Glama

Reading a Nansen feedback receipt

get_feedback
Read-only

Read a Nansen feedback receipt for the same authenticated account. Costs zero credits.

Lookup uses feedback_id, consumes no report slot, and returns fresh status. Received means saved; reviewed means triaged; closed has a public disposition. No fix or delivery date is promised. Unknown, expired, and other-account IDs return the same not-found response. Never create a replacement report or use another account or an internal server key when lookup fails. Do not redirect failed lookups to unrelated feedback channels.

Input Schema

NameRequiredDescriptionDefault
requestYes

Output Schema

NameRequiredDescriptionDefault
errorNo
receiptNo
successYes
next_actionYes
preferencesNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / error / anyOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "code": {
      -        "title": "Code",
      -        "type": "string"
      -      },
      -      "quota": {
      -        "anyOf": [
      -          {
      -            "properties": {
      -              "limit": {
      -                "const": 7,
      -                "title": "Limit",
      -                "type": "integer"
      -              },
      -              "remaining": {
      -                "maximum": 7,
      -                "minimum": 0,
      -                "title": "Remaining",
      -                "type": "integer"
      -              },
      -              "resets_at": {
      -                "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:\\d{2})$",
      -                "title": "Resets At",
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "limit",
      -              "remaining",
      -              "resets_at"
      -            ],
      -            "title": "FeedbackQuota",
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null
      -      },
      -      "reason": {
      -        "title": "Reason",
      -        "type": "string"
      -      },
      -      "request_id": {
      -        "anyOf": [
      -          {
      -            "maxLength": 128,
      -            "minLength": 1,
      -            "pattern": "^[A-Za-z0-9_-]+$",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "title": "Request Id"
      -      },
      -      "retry_after": {
      -        "anyOf": [
      -          {
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "title": "Retry After"
      -      },
      -      "status": {
      -        "anyOf": [
      -          {
      -            "type": "integer"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "title": "Status"
      -      },
      -      "submission_id": {
      -        "anyOf": [
      -          {
      -            "maxLength": 128,
      -            "minLength": 1,
      -            "pattern": "^[A-Za-z0-9_-]+$",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "title": "Submission Id"
      -      }
      -    },
      -    "required": [
      -      "code",
      -      "reason"
      -    ],
      -    "title": "FeedbackError",
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "code": {
      +        "title": "Code",
      +        "type": "string"
      +      },
      +      "errors": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "description": "One field that failed validation. It never contains the field value.",
      +              "properties": {
      +                "code": {
      +                  "title": "Code",
      +                  "type": "string"
      +                },
      +                "field": {
      +                  "title": "Field",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "field",
      +                "code"
      +              ],
      +              "title": "FeedbackFieldError",
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "title": "Errors"
      +      },
      +      "quota": {
      +        "anyOf": [
      +          {
      +            "properties": {
      +              "limit": {
      +                "const": 7,
      +                "title": "Limit",
      +                "type": "integer"
      +              },
      +              "remaining": {
      +                "maximum": 7,
      +                "minimum": 0,
      +                "title": "Remaining",
      +                "type": "integer"
      +              },
      +              "resets_at": {
      +                "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:\\d{2})$",
      +                "title": "Resets At",
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "limit",
      +              "remaining",
      +              "resets_at"
      +            ],
      +            "title": "FeedbackQuota",
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null
      +      },
      +      "reason": {
      +        "title": "Reason",
      +        "type": "string"
      +      },
      +      "request_id": {
      +        "anyOf": [
      +          {
      +            "maxLength": 128,
      +            "minLength": 1,
      +            "pattern": "^[A-Za-z0-9_-]+$",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "title": "Request Id"
      +      },
      +      "retry_after": {
      +        "anyOf": [
      +          {
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "title": "Retry After"
      +      },
      +      "status": {
      +        "anyOf": [
      +          {
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "title": "Status"
      +      },
      +      "submission_id": {
      +        "anyOf": [
      +          {
      +            "maxLength": 128,
      +            "minLength": 1,
      +            "pattern": "^[A-Za-z0-9_-]+$",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "title": "Submission Id"
      +      }
      +    },
      +    "required": [
      +      "code",
      +      "reason"
      +    ],
      +    "title": "FeedbackError",
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  2. Added

TDQS

A4.4/5.0
Behavior5/5

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

Annotations only declare readOnly/non-destructive; the description adds material behavior the annotations can't: zero credit cost, no report slot consumption, and a uniform not-found response for unknown, expired, and other-account IDs (an important information-disclosure/anti-enumeration trait). It also explicitly declines to promise a fix or delivery date, which sets correct expectations for the returned status.

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

Conciseness4/5

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

Front-loads the cost and lookup mechanics, then the status semantics, then the guardrails – a sensible order with no filler sentences. The two closing sentences about not creating replacements / not redirecting overlap somewhat, but each adds a distinct prohibition.

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?

With an output schema present, the description needn't document return shape, and annotations already cover the safety profile. What remains – status meaning (received/reviewed/closed), cost, slot consumption, and not-found behavior – is all supplied, so nothing an agent needs 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.

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 carries the burden for the single feedback_id parameter. It confirms the lookup is by feedback_id, but never says where the ID comes from (presumably the submit_feedback response) or anything about the accepted format constraints already expressed only as a regex in the schema, so it doesn't fully compensate for the coverage gap.

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 opening sentence states a specific verb (read) and resource (Nansen feedback receipt) and scopes it to the authenticated account, which clearly separates it from the write-side submit_feedback and from get_feedback_preferences. It stops short of naming a sibling tool explicitly, so the differentiation is implied by the read/write split rather than stated.

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

Usage Guidelines5/5

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

Goes well beyond a generic 'use this to look up feedback': it says the lookup is keyed on feedback_id, consumes no report slot, and gives explicit negative guidance for the failure path (do not create a replacement report, do not use another account or an internal server key, do not redirect to unrelated feedback channels). An agent knows both what to call this for and what not to do when it fails.

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