MTG Copilot Docs
Your data

Feedback you send

The two tables behind tag corrections and smart search reports, what each row captures, and who can read it.

Two places in the app let you tell us something is wrong, and each writes a row you can point at later. Tag corrections go to tag_feedback, smart search reports to search_translation_feedback. Both rows carry only what you typed and what the app showed you.

Tag corrections

Suggesting a change to a card's tags from its card page writes one row to tag_feedback.

ColumnWhat it holds
card_idThe card you were looking at.
tagThe tag you are correcting.
suggestionWhat you wrote.
statuspending, accepted or rejected. New rows are pending.
user_idYou. Submitting requires being signed in.
created_atWhen you sent it.

You can read your own rows. Accounts on the maintainer list can read every row, set the status, and delete one. That list is a table the policies check, so it is the same answer everywhere.

Accepting a suggestion sets status and changes nothing else. The tags themselves come from the curated vocabulary and the detection rules described in taxonomy, and those are edited by hand, so an accepted suggestion turns into a tag change on a later pass rather than at the moment it is accepted.

Smart search reports

Smart search turns a plain-English question into query syntax. Reporting a bad translation writes one row to search_translation_feedback.

ColumnWhat it holds
input_textWhat you typed.
converted_queryThe query the model produced.
expected_queryThe query you say it should have produced. Optional.
commentAnything else you wrote. Optional.
statuspending, accepted or rejected.
user_idYou, or null when you were signed out.
created_atWhen you sent it.

Smart search works signed out, so reporting a translation does too. The insert policy accepts a row from anyone, and a report sent while signed out carries no user_id.

You can read your own rows. Accounts on the maintainer list can read every row and set the status. That includes the rows sent while signed out, which have no user_id for the ownership check to match.

status works the same way it does for tag corrections: rows start pending, and a review sets accepted or rejected.

What these rows are used for

Both tables exist so we can fix the tags and the translator, and both are read out of band when someone works through the backlog. Neither is shown to other users, and neither is sent to a model as part of answering a question.

On this page