CrowTerminal
MARKETING · MARKETING
Influencer clients, engagement predictions, and niche benchmarks in that account.
Acts as the person, not as itself
Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.
Credentials never touch the agent
Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.
Every call on the record
Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.
What an agent can do
Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.
crowterminal_delete_api_desktop_sync_transcripts_by_idWRITEDelete a transcript via DELETE /api/desktop-sync/transcripts/{id}. DESTRUCTIVE. A soft delete at CrowTerminal -- the record stops appearing in the listing and stops counting, and this API offers nothing that restores it. Measured 2026-09-17: the first call answers 200 {"success":true} and the second answers 404 "Transcript not found", so a repeat is not idempotent.
crowterminal_get_api_auth_meREADGet the current user via GET /api/auth/me. The account the connection acts as: id, email, name, avatar, plan (FREE/STARTER/GROWTH/AGENCY/ENTERPRISE), auth provider and counts of related records.
crowterminal_get_api_benchmarks_client_by_clientidREADCompare a client against its niche via GET /api/benchmarks/client/{clientId}. Percentiles and vs-average figures for one client against the benchmark for its niche.
crowterminal_get_api_benchmarks_client_by_clientid_historyREADGet a client's benchmark history via GET /api/benchmarks/client/{clientId}/history. Percentile snapshots over time, newest first; `limit` defaults to 12.
crowterminal_get_api_benchmarks_niche_by_nicheREADGet benchmarks for a niche via GET /api/benchmarks/niche/{niche}. `niche` is matched loosely -- "Fashion & Lifestyle" resolves to the `fashion` benchmark. A niche with too little data answers 404 with "Benchmarks require at least 5 accounts and 20 videos", which is a data condition rather than a bad path.
crowterminal_get_api_benchmarks_nichesREADList niches with benchmark data via GET /api/benchmarks/niches. Each entry carries the niche key to pass to the per-niche tool, a display name, how many accounts back it and a confidence figure.
crowterminal_get_api_benchmarks_summaryREADGet a benchmark summary across all clients via GET /api/benchmarks/summary. Per-client percentiles plus agency-wide totals (client count, average percentile, top performers, clients needing attention).
crowterminal_get_api_clientsREADList clients via GET /api/clients. Paginated. `search` matches the client name and `isActive` filters on the active flag; both were measured working 2026-09-17. Unknown query parameters are ignored rather than refused.
crowterminal_get_api_clients_by_idREADGet a client via GET /api/clients/{id}. `id` must be a UUID; any other shape answers 400 "Invalid client ID" from the request validator rather than 404.
crowterminal_get_api_desktop_sync_countREADCount synced transcripts via GET /api/desktop-sync/count. The number of transcripts held in the cloud for this account, excluding soft-deleted ones.
crowterminal_get_api_desktop_sync_sessionsREADList desktop sessions via GET /api/desktop-sync/sessions. Registered desktop installations for this account: device id, platform, app version and when each was last seen.
crowterminal_get_api_desktop_sync_transcriptsREADList synced transcripts via GET /api/desktop-sync/transcripts. Transcripts uploaded by the CrowTerminal desktop app, newest first; `limit` defaults to 50 and `clientId` narrows to one client. Soft-deleted transcripts are excluded.
crowterminal_get_api_predictions_accuracy_summaryREADGet prediction accuracy summary via GET /api/predictions/accuracy/summary. Aggregate error between predicted and recorded actuals across every client. Answers 200 with a null summary and an explanatory message while no actuals have been recorded.
crowterminal_get_api_predictions_by_clientid_historyREADGet a client's prediction history via GET /api/predictions/{clientId}/history. Stored predictions for one client, newest first, each with its id, predicted figures and any recorded actuals. This is where the id for the single-prediction and record-actuals tools comes from.
crowterminal_get_api_predictions_by_idREADGet a prediction via GET /api/predictions/{id}. `id` is a prediction id, not a client id. An unknown one answers 404 RES_001 naming the resource; a non-UUID answers 400 VAL_001 "Invalid prediction ID".
crowterminal_get_api_usage_cost_projectionREADGet cost projection via GET /api/usage/cost-projection. This account's month-to-date cost and the projection for the full month, with the day counts the projection is built from.
crowterminal_get_api_usage_quotaREADGet usage quota via GET /api/usage/quota. Plan, monthly token limit, tokens used and remaining, reset date and whether overage is allowed. This is the budget the engagement-prediction tool spends.
crowterminal_get_api_usage_summaryREADGet usage summary via GET /api/usage/summary. This account's own usage over `days` (1-365, default 30): tokens, requests, success rate, latency, estimated cost, and breakdowns by feature and by day. `days` outside the range answers 400 "Days must be 1-365".
crowterminal_patch_api_auth_meWRITEUpdate the current user's profile via PATCH /api/auth/me. Accepts `name` and `avatarUrl` only. It cannot change the email or the password, so it cannot lock this connection out of the account.
crowterminal_patch_api_predictions_by_id_actualWRITERecord actual results for a prediction via PATCH /api/predictions/{id}/actual. `actualEngagement` (0-100) and `actualViews` are required. Returns the error between predicted and actual and feeds the accuracy summary.
crowterminal_post_api_auth_loginWRITELog in to an existing account via POST /api/auth/login. Exchanges any CrowTerminal email and password for a 7-day JWT and returns that token in the reply. This connection does NOT need it: Agentic Fabriq performs the same exchange itself from the login stored on the connection and attaches the result to every other tool. Rate limited by CrowTerminal to 5 attempts per hour per source IP (measured 2026-09-17: ratelimit-policy 5;w=3600), a budget shared with the connection's own automatic sign-in, so calling this tool can leave the connection unable to renew its session for up to an hour.
crowterminal_post_api_auth_registerWRITERegister a new user via POST /api/auth/register. Creates a NEW CrowTerminal account from an email, password and name -- it does not act on the account this connection holds, and the account it creates is not connected to Agentic Fabriq. The reply carries a 7-day JWT for the new account. Rate limited by CrowTerminal to 3 registrations per hour per source IP (measured 2026-09-17: ratelimit-policy 3;w=3600), which is shared by every connection on this deployment.
crowterminal_post_api_billing_checkoutWRITECreate a Stripe checkout session via POST /api/billing/checkout. PRIVILEGED. Starts a paid subscription purchase for the connected account and returns a live Stripe Checkout URL; anyone holding that URL can complete the purchase. `priceId` is a Stripe price id -- an unknown one answers 400 "Invalid price ID" (measured 2026-09-17).
crowterminal_post_api_billing_portalWRITECreate a Stripe billing portal session via POST /api/billing/portal. PRIVILEGED. Returns a live Stripe customer-portal URL for the connected account, carrying a session secret in the query string. Anyone holding that URL can change or cancel the subscription and see the stored payment methods. Measured 2026-09-17: answers 200 with such a URL on a FREE-plan account.
crowterminal_post_api_clientsWRITECreate a client via POST /api/clients. `name` is the only required field. The enumerated fields (`brandVoice`, `contentGoals`, `language`, `postingFrequency`, `region`, `targetGender`) accept only the listed values. Returns the created client including the `id` the benchmark and prediction tools take.
crowterminal_post_api_desktop_sync_sessionsWRITERegister a desktop session via POST /api/desktop-sync/sessions. `deviceId`, `platform` (darwin/win32/linux) and `appVersion` are required. Re-registering a known device updates its last-seen time rather than creating a second row.
crowterminal_post_api_desktop_sync_transcriptsWRITEUpload a transcript via POST /api/desktop-sync/transcripts. `fileName`, `text` and `language` are required; `clientId`, `duration`, `localId` and `createdAt` are optional. Returns the stored transcript's id.
crowterminal_post_api_predictions_engagementWRITEPredict engagement for planned content via POST /api/predictions/engagement. BILLED IN TOKENS against the account's monthly quota (see the usage-quota tool). Takes a `clientId` and a `content` object (caption, hashtags, posting time, video duration) and returns a predicted engagement rate with a range, a view range, an overall score and per-signal breakdowns. The prediction is stored and gets an id, which the prediction-history tool reads back.
Often connected alongside
Put CrowTerminal behind one governed endpoint.
Same permissions, same audit trail, whatever else you connect next.