Echo/Docs

CLI command

content consent

Consent to be tagged or shown: a person's consent per handle and platform, the people a queued post's media shows, and the checks that keep a post tagging or showing someone without consent from being scheduled.

Invocation#

Shell
echo-cli content consent list
echo-cli content consent record --platform <platform> --handle <@handle> --person <who> --evidence <what it rests on> --by <name>
echo-cli content consent revoke --id <consent-id> --by <name>
echo-cli content consent erase --id <consent-id>
echo-cli content consent check --platform <platform> --caption <text>
echo-cli content consent people --post <post-id>
echo-cli content consent shown --post <post-id> --handles <h,...> --by <name>
echo-cli content consent unshow --post <post-id> --handle <h>

Inputs and output#

list writes every consent, newest first: id, platform, handle (without @, in lower case), person, evidence, recorded_by, recorded_at, revoked_by and revoked_at. record, revoke and erase write the consent. check writes each handle the caption tags with @, once, with state (own_account, consented or no_consent) and the consent in force. people writes post_id, platform, media (per address of the post's media and thumbnail: people as the vision model counted them, description, or unreadable with why, model and checked_at), people (the most any one shows), declared (each handle declared shown with its state and consent), undeclared and refusal (why scheduling it would be refused, or null). shown writes every handle the post now declares (post_id, handle, declared_by, declared_at); unshow writes the one removed.

State effect#

The verbs call Echo Web's authenticated /api/analytics/tagging-consents and /api/analytics/people-shown with ECHO_INTERNAL_BEARER at ECHO_WEB_BASE_URL; the Consent to be tagged and People shown in media sections of the content queue (/calendar) and of Echo Desktop's GEO screen do the same, and echo-mcp runs them as echo_tagging_consents, echo_tagging_consent_record, echo_tagging_consent_revoke, echo_tagging_consent_erase, echo_tagging_consent_check, echo_people_shown, echo_people_shown_declare and echo_people_shown_remove. Consents are stored in tagging_consents. A handle of one of Echo's own social accounts on the platform needs none. Queuing a post with a schedule, or moving a queued post to scheduled or published, is refused as a conflict while its caption tags a handle with no consent in force: "not scheduled: @<handle>, … on <platform> without tagging consent in force; record it with echo-cli content consent record first". The same moves read the people the post's media and thumbnail show: each address is fetched, and one whose content type is an image the vision model reads (JPEG, PNG, GIF, WebP) is shown to Echo's vision profile (STADO_ECHO_VISION_MODEL through Brama), which counts the people in it; the count, or why the address was not an image, is kept in media_people_checks and never asked again. A post whose media shows more people than the handles it declares shown (post_people_shown), or declares a handle with no consent in force, is refused as a conflict naming why; a post queued straight as scheduled declares nobody, so one showing anybody is refused until it is queued as a draft and declared. A video without a thumbnail is not read and so shows nobody counted. revoke keeps a consent that was given and withdrawn; erase deletes one recorded in error.

Refusals#

  • A wrong invocation is refused before anything is sent: "content consent takes …; got <word>", "content consent <verb> does not take <flag>; …", "<flag> needs a value" and "content consent <verb> needs <flag>".
  • Echo Web answers a bad request with "platform is required: the platform the handle is on, as the social accounts name it", "handle is required: the handle the person is tagged by", "person is required: who the handle belongs to", "evidence is required: what the consent rests on, such as a signed release or the message giving it", "recorded_by is required: an internal caller has no signed-in user, so it names who is acting" (and revoked_by, declared_by), "platform is required to check a caption: the platform the post goes out on", "id is required: the consent to revoke, as echo-cli content consent list shows it", "id is required: the consent recorded in error, as echo-cli content consent list shows it", "consent <id> was already revoked by <who> at <time>", "post_id is required: the queued post whose media shows the people", "handles is required: …" or "handles names nobody; remove a declared handle with DELETE instead"; not found with "no tagging consent has id <id>", "no queued post has id <id>" or "post <id> does not declare @<handle> shown"; and a conflict with "@<handle> on <platform> has consent <id> in force since <time>". A media address that cannot be fetched is answered "the media <url> could not be read to check the people it shows: it answered <status>" and a vision model that does not answer by its tool with the model's own sentence; nothing is kept then, and the post is not scheduled until the check runs. The command prints Echo Web's sentence and exits 1.