Skip to main content
Glama

Send feedback or a bug report to the Neumann team

send_feedback

Sends a short report about Neumann to the team that builds it. They read every report and use it to fix problems and decide what to build, so honest feedback, good or bad, is useful. Use this when:

  • a Neumann tool returned an error (send it right away), behaved unexpectedly or gave a result that looks wrong;

  • the user needs something no Neumann tool can do, or an option that is missing;

  • a description, output or error message was confusing;

  • a session in which you used Neumann is ending: send one short report even if everything worked. Knowing which tools did the job for which kind of task is useful data, not noise. Do not send one after a routine successful call mid-session. Put several points in one report: a signed-in account may send 5 per hour and 20 per day, and callers without an account share 60 per hour and 300 per day. Only message is required. Fill in the other fields that apply so the team can act without guessing. Write in your own words. Never include personal data (names, email addresses, company names), the user's own numbers (inputs or results), secrets or keys, or the conversation transcript; describe the task and any wrong result in general terms instead. Tell the user you are sending it. Add sender_email only if the user wants a reply. If you are signed in, your account id is included. No account is needed. It returns status "sent". Cost: free; uses no credits and no free runs.

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": {
      "message": "<message>"
    },
    "name": "send_feedback"
  }
}

Input Schema

NameRequiredDescriptionDefault
impactNoHow much it cost the user. blocked: could not finish. workaround: finished another way. minor: an annoyance. none: no cost, for example praise.
run_idNoThe run_id the report is about, if a run was involved.
messageYesThe report, in your own words, 10 to 5,000 characters. Say what you tried, what happened and what you expected. Leave out names, companies, the user's numbers (inputs or results) and the conversation itself: write "a revenue forecast", not its figures.
expectedNoWhat you expected to happen instead.
tool_nameNoThe Neumann tool the report is about, for example run_monte_carlo_simulation.
user_goalNoWhat the user was trying to do, as a general task in a few words, for example "estimate a project budget". No names, company names or figures.
error_textNoThe error code and message the tool returned, if any. Remove any personal data or user figures it quotes.
suggestionNoWhat would have helped: a fix, a new feature or clearer wording.
sender_nameNoOptional name, up to 200 characters.
sender_emailNoOptional. The user's email address, only if they want a reply and gave it to you. Do not invent one. No copy is sent to it.
feedback_typeNoWhat kind of report this is. bug: a tool errored or broke. wrong_result: it ran but the numbers look wrong. unmet_use_case: the user needed something no tool does. feature_request: a missing option or parameter. confusing: a description, output or error was hard to understand. praise: something worked well. other: anything else (the default).other
what_happenedNoWhat actually happened, in general terms, without the user's numbers.

Output Schema

NameRequiredDescriptionDefault
statusYessent on success.
billingNoWho you are and what this call cost: principal, auth source, credits debited and balance, or the anonymous allowance left today.
messageYesConfirmation text, including whether the team can reply.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed29 schema fields changed
    • removedInput schema / properties / api_key
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "description": "Your Neumann API key. Optional. If given, your account id is added to the email.",
      -  "title": "Api Key"
      -}
    • addedInput schema / properties / error_text
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maxLength": 2000,
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "The error code and message the tool returned, if any. Remove any personal data or user figures it quotes.",
      +  "title": "Error Text"
      +}
    • addedInput schema / properties / expected
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maxLength": 2000,
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "What you expected to happen instead.",
      +  "title": "Expected"
      +}
    • addedInput schema / properties / feedback_type / default
      Added value: +"other"
    • changedInput schema / properties / feedback_type / description
      Previous value: -"feedback for general comments, feature_request for something new, or bug for something broken."New value: +"What kind of report this is. bug: a tool errored or broke. wrong_result: it ran but the numbers look wrong. unmet_use_case: the user needed something no tool does. feature_request: a missing option or parameter. confusing: a description, output or error was hard to understand. praise: something worked well. other: anything else (the default)."
    • changedInput schema / properties / feedback_type / enum
      Previous value: -[
      -  "feedback",
      -  "feature_request",
      -  "bug"
      -]New value: +[
      +  "bug",
      +  "unmet_use_case",
      +  "feature_request",
      +  "confusing",
      +  "wrong_result",
      +  "praise",
      +  "other"
      +]
    • addedInput schema / properties / impact
      Added value: +{
      +  "anyOf": [
      +    {
      +      "enum": [
      +        "blocked",
      +        "workaround",
      +        "minor",
      +        "none"
      +      ],
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "How much it cost the user. blocked: could not finish. workaround: finished another way. minor: an annoyance. none: no cost, for example praise.",
      +  "title": "Impact"
      +}
    • changedInput schema / properties / message / description
      Previous value: -"What to tell the team, 10 to 5,000 characters. Be specific: what you tried, what happened and what you expected."New value: +"The report, in your own words, 10 to 5,000 characters. Say what you tried, what happened and what you expected. Leave out names, companies, the user's numbers (inputs or results) and the conversation itself: write \"a revenue forecast\", not its figures."
    • changedInput schema / properties / message / examples
      Previous value: -[
      -  "rank_inputs_by_impact returned an empty list for a model with two inputs."
      -]New value: +[
      +  "rank_inputs_by_impact returned an empty list for a model with two inputs, so I could not tell the user which one mattered more."
      +]
    • addedInput schema / properties / run_id
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maxLength": 100,
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "The run_id the report is about, if a run was involved.",
      +  "title": "Run Id"
      +}
    • addedInput schema / properties / sender_email / anyOf
      Added value: +[
      +  {
      +    "format": "email",
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / sender_email / default
      Added value: +null
    • changedInput schema / properties / sender_email / description
      Previous value: -"Email address to send a copy to, so there is a record."New value: +"Optional. The user's email address, only if they want a reply and gave it to you. Do not invent one. No copy is sent to it."
    • removedInput schema / properties / sender_email / format
      Removed value: -"email"
    • removedInput schema / properties / sender_email / type
      Removed value: -"string"
    • addedInput schema / properties / suggestion
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maxLength": 2000,
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "What would have helped: a fix, a new feature or clearer wording.",
      +  "title": "Suggestion"
      +}
    • addedInput schema / properties / tool_name
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maxLength": 100,
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "The Neumann tool the report is about, for example run_monte_carlo_simulation.",
      +  "title": "Tool Name"
      +}
    • addedInput schema / properties / user_goal
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maxLength": 500,
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "What the user was trying to do, as a general task in a few words, for example \"estimate a project budget\". No names, company names or figures.",
      +  "title": "User Goal"
      +}
    • addedInput schema / properties / what_happened
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maxLength": 2000,
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "What actually happened, in general terms, without the user's numbers.",
      +  "title": "What Happened"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "feedback_type",
      -  "message",
      -  "sender_email"
      -]New value: +[
      +  "message"
      +]
    • changedOutput schema / $defs / BillingInfo / properties / auth_source / description
      Previous value: -"How you were identified: bearer (a signed-in connection token), api_key (the api_key argument) or anonymous."New value: +"How you were identified: bearer (a credential sent in the Authorization: Bearer header) or anonymous."
    • changedOutput schema / $defs / BillingInfo / properties / auth_source / enum
      Previous value: -[
      -  "bearer",
      -  "api_key",
      -  "anonymous"
      -]New value: +[
      +  "bearer",
      +  "anonymous"
      +]
    • changedOutput schema / $defs / BillingInfo / properties / charged_to / enum
      Previous value: -[
      -  "anonymous_allowance",
      -  "credits",
      -  "none"
      -]New value: +[
      +  "anonymous_allowance",
      +  "free_daily_run",
      +  "credits",
      +  "none"
      +]
    • addedOutput schema / $defs / BillingInfo / properties / free_run_limits
      Added value: +{
      +  "anyOf": [
      +    {
      +      "$ref": "#/$defs/SignedInLimits"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "The free signed-in tier's bounds. Null unless the account signed in with Kromatic."
      +}
    • addedOutput schema / $defs / BillingInfo / properties / free_runs_remaining_today
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Free signed-in runs left in the current UTC day, counting this call. Null unless the account signed in with Kromatic.",
      +  "title": "Free Runs Remaining Today"
      +}
    • addedOutput schema / $defs / BillingInfo / properties / free_runs_reset_at
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "ISO-8601 instant the free signed-in runs next refill (the next UTC midnight). Null unless the account signed in with Kromatic.",
      +  "title": "Free Runs Reset At"
      +}
    • addedOutput schema / $defs / SignedInLimits
      Added value: +{
      +  "description": "The free signed-in tier's bounds (neumann#334), rendered from ``Settings``.",
      +  "properties": {
      +    "max_nodes": {
      +      "description": "Maximum nodes in a free run's graph.",
      +      "title": "Max Nodes",
      +      "type": "integer"
      +    },
      +    "max_trials": {
      +      "description": "Maximum trials in a free run.",
      +      "title": "Max Trials",
      +      "type": "integer"
      +    },
      +    "runs_per_day": {
      +      "description": "Free runs per UTC calendar day.",
      +      "title": "Runs Per Day",
      +      "type": "integer"
      +    }
      +  },
      +  "required": [
      +    "runs_per_day",
      +    "max_trials",
      +    "max_nodes"
      +  ],
      +  "title": "SignedInLimits",
      +  "type": "object"
      +}
    • changedOutput schema / description
      Previous value: -"Confirmation that the email was sent."New value: +"Confirmation that the report was sent."
    • changedOutput schema / properties / message / description
      Previous value: -"Confirmation text."New value: +"Confirmation text, including whether the team can reply."
  2. Added

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare readOnly=false, openWorld=true, idempotent=false, destructive=false; the description adds what the annotations cannot: concrete rate limits (5/hour and 20/day signed-in, 60/hour and 300/day anonymous), that it returns status "sent", that it costs no credits or free runs, and that the user should be told. It also discloses a privacy constraint (no names, figures, secrets, or transcript) that materially shapes how the call must be made.

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?

Purpose is front-loaded and the trigger bullets are easy to scan, with every item carrying distinct information. The closing paragraph is a dense run-on that bundles rate limits, privacy rules, account-id behavior, return value, and cost into one block, which slightly hurts readability but does not waste words.

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?

For a 12-parameter write tool with an output schema present, the description covers everything an agent needs: triggers, exclusions, rate limits, auth state, privacy redaction rules, user-notification obligation, and cost. Return values need not be explained further because the output schema exists.

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 already 100%, so the baseline is 3, but the description adds real guidance beyond the schema: only message is required, fill in the other fields that apply, and add sender_email only if the user wants a reply. It does not walk through the enum values or field-level distinctions, which the schema already handles well.

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 opening sentence gives a specific verb and resource ('Sends a short report about Neumann to the team that builds it') and makes clear this is a feedback channel, not a simulation tool. An agent can separate it from every sibling (run_monte_carlo_simulation, buy_credits, get_simulation_results) at a glance.

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?

Provides an explicit trigger list (tool errored, wrong-looking result, missing capability, confusing output, end of session) plus an explicit exclusion ('Do not send one after a routine successful call mid-session'). It also tells the agent to consolidate multiple points into one report, which is a routing decision, not just a use case.

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