Feedback about Gitmoap
Overview
When something in Gitmoap gets in your way — a page that breaks, a capability you needed and could not find, a result you could not use, an error that did not say what to do — you can tell us in a sentence or two. You send a report from the web app, an AI agent working through Gitmoap's MCP server sends one with the gitmoap_feedback tool, and a script sends one over the API. Reports go to the people who build Gitmoap, and they are how it gets better.
A report is about Gitmoap, never about your work. Nobody in your organisation can read it, and it changes nothing anywhere — which is why an agent can send one even on a read-only connection. A bug report also tells our support desk that it arrived, so a person looks at it soon; the notice says what kind of report it is and where to read it, never what it says.
Before you start
- A signed-in session, or an access token carrying
feedback:create.In the web app you are already signed in. Both agent bundles,mcp_agentandmcp_agent_write, include the scope, so an agent you connected through either can report without anything extra. - A person or a service account.A pipeline's own run credential cannot send feedback; send it as the person or service account the pipeline acts for.
How it works
A report records:
| What | Where it comes from |
|---|---|
Its kind — bug, missing_capability, confusing_result, error, wrong_tool or other | you, or the agent |
| A summary of at most 500 characters | you, or the agent |
| Details of at most 5000 characters | you, when you have more to say |
The path of the page it is about, such as /acme/api/-/merge_requests/87 — the path alone, never what follows a ? or a # | you, from the web app |
| The tool it is about, and the reference an error gave | the agent, when it has them |
| Who sent it | the session or token that sent it |
| How it arrived — from the web app, through the MCP server, or directly over the API — and the client that sent it: your browser's own description of itself, or the agent's client name | Gitmoap, from the request itself; a caller cannot claim either |
| When | Gitmoap |
The page is a path and nothing more because an address bar can carry a sign-in code or a search you did not mean to send; a report refuses one rather than keep it.
An agent decides when something got in its way. It is prompted in three places: the tool's description says when to use it, every error a Gitmoap tool returns ends with a reference and a one-line pointer to the tool, and the server's instructions mention it once. It is not asked to report after every task — a report nobody needed is noise, and reading noise is how real reports get missed.
Gitmoap keeps a report for 90 days and then deletes it. Deleting the account or service account that sent it deletes it sooner.
Note
A report should describe the problem, never the data: no code, no file content, no secrets, nothing about a person. The web app says so beside the details, the tool's description tells an agent so, and the limits leave no room to paste a file — but if you send reports from a script, the same rule is yours to keep.
How to
Report a problem from the web app
Open the help panel from the help button in the top bar of any page, select Report a problem, pick what kind of problem it is, say what happened, and send. The page you were on comes with it, and you can leave it out before you send. When an error shows a reference, Report this beside it opens the same form with the reference attached. To write to a person instead — about your account, a privacy request or anything that needs a reply — use the contact form.
gitmoap feedback create-feedback \ --kind bug|missing_capability|confusing_result|error|wrong_tool|other \ --summary <summary>curl -X POST https://api.gitmoap.example/feedback \ -H "Authorization: Bearer $GITMOAP_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "kind": "<one of bug | confusing_result | error | missing_capability | other | wrong_tool>", "summary": "<string>" }'Pass the reference from an error message as about when the report is about one: it lets us find the exact call in our records without you describing it.
Let an agent report
Nothing to set up. Connect the agent with either agent bundle — see AI agents and the MCP server — and gitmoap_feedback is in its tool list, on read-only connections included.
Review the reports
The queue is for Gitmoap's own administrators, in the admin console. Nobody in your organisation can read your reports, and you cannot read anyone else's.
gitmoap feedback list-feedbackcurl -X GET https://api.gitmoap.example/admin/feedback \ -H "Authorization: Bearer $GITMOAP_TOKEN"A single report, as the support desk's notice of a bug links to it. For Gitmoap's own administrators only.
gitmoap feedback get-feedback --feedback-id <id>curl -X GET https://api.gitmoap.example/admin/feedback/{feedback_id} \ -H "Authorization: Bearer $GITMOAP_TOKEN"Reference
3 endpoints
POST/feedbackfeedback:create
Send feedback about Gitmoap itself: a bug, a missing capability, a confusing result, an unhelpful error
Token scope
feedback:create
Counts against
feedback_per_day
Send
Body
- aboutobjectoptional
- detailsobjectoptional
- kindbugconfusing_resulterrormissing_capabilityotherwrong_toolWhat a report is about.
- pageobjectoptional
- summarystring
- toolobjectoptional
Refuses
400The report is not valid401Unauthorized403Forbidden — the caller's access level or token scope is insufficient429You have sent as much feedback as you may in a day
Receive
- created_atstringWhen the report arrived.
- feedback_iduuid
GET/admin/feedbackfeedback:read
The feedback people and agents have sent, newest first (platform admin)
Token scope
feedback:read
Send
Query
- kindbugconfusing_resulterrormissing_capabilityotherwrong_tooloptionalOnly reports of this kind
- toolstringoptionalOnly reports about this MCP tool
- sincestringoptionalOnly reports sent after this instant (RFC 3339)
- limitint32optionalPage size (1-100)
- next_tokenstringoptionalPagination cursor
Refuses
400A filter is not valid401Unauthorized403Platform administrators only
Receive
items[]object16 fields
- aboutobjectoptional
- channelmcprestwebHow a report arrived. Decided by the platform from the request, never claimed by the caller.
- clientobjectoptionalThe client application: the name an MCP client gave itself, or the
User-Agentthe request carried. - created_atstringWhen it arrived.
- deliveryobjectoptional
- detailsobjectoptional
- feedback_iduuid
- kindbugconfusing_resulterrormissing_capabilityotherwrong_toolWhat a report is about.
- oauth_client_idobjectoptionalThe app the person approved, when the token came from connecting it by signing in.
- pageobjectoptional
senderobject4 fields
- avatar_urlobjectoptional
- emailstring
- idstring
- usernamestring
- summarystring
- toolobjectoptional
- next_tokenobjectoptional
GET/admin/feedback/{feedback_id}feedback:read
One report (platform admin) — what the support desk's notice of a bug links to
Token scope
feedback:read
Send
Path
- feedback_iduuidThe report's reference
Refuses
400Bad request — a path parameter is not a well-formed value of its type401Unauthorized403Platform administrators only404No such report: it may have been deleted
Receive
- aboutobjectoptional
- channelmcprestwebHow a report arrived. Decided by the platform from the request, never claimed by the caller.
- clientobjectoptionalThe client application: the name an MCP client gave itself, or the
User-Agentthe request carried. - created_atstringWhen it arrived.
- deliveryobjectoptional
- detailsobjectoptional
- feedback_iduuid
- kindbugconfusing_resulterrormissing_capabilityotherwrong_toolWhat a report is about.
- oauth_client_idobjectoptionalThe app the person approved, when the token came from connecting it by signing in.
- pageobjectoptional
senderobject4 fields
- avatar_urlobjectoptional
- emailstring
- idstring
- usernamestring
- summarystring
- toolobjectoptional
Limits
| What | Limit |
|---|---|
| Reports per person or service account | 50 in any 24 hours |
| Summary | 1 to 500 characters |
| Details | 1 to 5000 characters |
| Page | a path starting with /, at most 2048 characters, with no ? or # |
| Tool name | 1 to 64 characters, a Gitmoap tool's name |
| Reference | 1 to 128 characters |
| How long a report is kept | 90 days |
The limit is the same on every plan. At 50 reports in a day, the next is refused with 429 TOO_MANY_REQUESTS and nothing is recorded; the window moves, so the first report of the day stops counting 24 hours after it was sent.
Troubleshooting
403 INSUFFICIENT_SCOPE
- Cause
- The token was minted without
feedback:create - What to do
- Mint a token with an agent bundle, or name
feedback:create
400— summary must be at most 500 characters
- Cause
- The summary is too long
- What to do
- Say what got in the way in a sentence, and put the rest in the details
400— summary must not contain control characters
- Cause
- The summary carries a control character other than a newline or a tab
- What to do
- Remove it. The MCP tool drops these for you
400— page must be the path alone
- Cause
- The page carried a query string or a fragment
- What to do
- Send the path without
?or#and what follows
400— tool must be a tool name
- Cause
toolis not spelled the way Gitmoap names its tools- What to do
- Use the name as the tool list shows it, such as
gitmoap_issue_get, or leave it out
400— A pipeline run cannot send feedback
- Cause
- The request carried a pipeline's own run credential
- What to do
- Send it as the person or service account the pipeline acts for
429 TOO_MANY_REQUESTS
- Cause
- 50 reports were sent in the last 24 hours
- What to do
- Wait. If an agent is reporting in a loop, its instructions are asking it to report too often
gitmoap_feedback is missing from an agent's tools
- Cause
- The token lacks
feedback:create, or the connection excludes the tool by name - What to do
- Mint the token with an agent bundle; check the connection's tool selection
Related
- Contact Gitmoapwriting to a person, with a reply by email
- AI agents and the MCP serverconnecting an agent, and the tools it can use
- Access tokensthe agent bundles, and minting a token with
feedback:create - Connect an AI app by signing inthe other way an agent's token can be issued