Model Council v2
Usetpc council-v2 to ask a question, collect model responses, inspect the discovered narratives, assign share directions, and retrieve dashboard data. Every command is noninteractive.
Prerequisites
- Authenticate with a TPC session token, such as one obtained through
tpc auth loginortpc auth claim. Enterprise API keys are not supported. - Model Council v2 must be enabled for your organization.
- Pass
--scope <org-slug>/<product-slug>on every command. You can also pass the product’s dashboard URL as the scope. - Use
--format jsonto emit one structured result object. Text mode emits indented JSON; CSV is unsupported.
Agent workflow
1. Discover a question (optional)
text, topicId, and topicText. Missing suggestions are generated and cached. You can also supply your own question directly.
2. Create the question and start analysis
Generate and retain a UUID for this operation before issuing the command. The example UUID below is illustrative; use a new UUID for each new question.--source generated, its --topic-text, and --topic when its topicId is non-null. Defaults for custom questions are --source user, no topic ID, and --topic-text "Custom question".
If the question was saved but analysis could not start, the command prints status: "saved", the question ID, and recovery instructions, then exits with code 1. Recover with:
start also retries incomplete or failed analysis. An already-running workflow is reused; fully processed questions need no new run.
3. Inspect or wait for analysis
get returns the stored question, processing progress, state, and nextAction.
watch polls without starting or retrying analysis. It stops at awaiting_positions, ready, or failed. The default timeout is five minutes, measured after authentication and scope resolution; the default polling interval is three seconds, with a minimum of one second. Both flags accept Go durations such as 30s or 5m.
On timeout, watch prints the last observed state with timedOut: true and exits with code 1. If no status response arrived, the state is unknown. Resume with get or another watch invocation.
4. Inspect narratives and save positions
evidencePerModelLimit.
Create a positions file using the returned major narrative IDs:
mine means increase, opposing means reduce, and neutral means maintain. Choose directions using the product’s goals.
{"marks":[]} when there are no major narratives. Input is limited to 1 MiB.
5. Get the dashboard
framing), modelComparison, top cited URLs, current suggested actions, processing progress, and a dashboardUrl. Date filters are inclusive UTC dates and apply to the dashboard’s claim and citation data; suggested actions and processing progress describe the current question. Either date boundary can be omitted. Evidence and citation caps are included in the response.
To get the product question overview, omit --question:
--question.
Agent output and exit codes
Results includescope and dashboardUrl. When another step is available, nextAction names the command and nextCommand supplies an argv array including the question ID and scope. A positions command contains a <positions.json> placeholder that the agent must replace with its authored file path.
- 0: The operation succeeded.
watchreachingawaiting_positionsis successful because it needs agent input next. - 1: Validation, authentication, API, or filesystem error; creation saved but did not start; or
watchencountered failed analysis, cancellation, or timeout.
get and dashboard are reads: inspect their state rather than interpreting exit code 0 as analysis completion.