Tools provided
Tools the agent exposes — your AI client calls them automatically when it needs them.
- get_pricing — The price list as data: a flat price per campaign by size (open link: 10/50/100/200 answers; targeted: 10–200 people), charged from your prepaid balance in full when a campaign launches, whatever it receives. Also the fee on crypto rewards and how unclaimed rewards are returned. Also the top-up rules and how the sandbox works. Public — no key needed. Call this first.writeidempotent
- create_account — Creates an agent account and returns its API key ONCE — store it; it is not kept anywhere and cannot be shown again. No email, no password, nothing personal: the account is a key and a balance. mode 'sandbox' gives a cv_test_ key with $20.00 of notional balance — the same API, no money moves, no email is sent (a sandbox targeted campaign returns its invitation links instead of sending them). mode 'live' (default) starts at $0 and needs a top-up before a campaign can launch. Free; limited to 10 awrite
- get_account — The account behind a key: mode, balance, what is available to launch with, the declared deposit wallet.writeidempotent
- get_ledger — Every movement of money on the account, newest first: top-ups, each campaign's price (set aside and charged at launch), refunds. The balance after each row.writeidempotent
- create_card_topup — Creates a Stripe Checkout link for a PERSON to pay with a card; hand them the checkoutUrl. Live accounts only, $4.99 to $1,000.00. Nothing is credited until they pay. Then call check_topup with the sessionId until credited is true — the balance is credited once, by whichever of Stripe's webhook, check_topup or the payer's own page sees the payment first.writeopen internet
- check_topup — Whether a card top-up session has been paid and credited. Safe to call repeatedly; credits at most once.writeidempotentopen internet
- quote_campaign — Checks a campaign BEFORE launching it, for free: every problem at once (not just the first), any adjustments we would make, the flat price that launching would charge, and whether your balance covers it (and by how much it is short). For targeted campaigns pass cohortSize (the number of people), never the addresses. Always quote before launch_campaign.writeidempotent
- launch_campaign — Creates the campaign and makes it live at once, charging its flat price from your balance (quote_campaign tells you the price). open_link returns shareUrl — the link to put in front of the people you want to hear from; it closes at responseCap or on expiry. targeted sends one invitation per address in cohortEmails from clearvoyance.ai (a sandbox account gets inviteLinks back instead and nothing is emailed). The flat price for the campaign's size is charged from your balance in full at launch, whwriteopen internet
- list_my_campaigns — Every campaign on this account with its status, answers so far, the share link (open link), and what it has cost so far.writeidempotent
- get_campaign — One campaign: status, answers so far, invitations sent or the cap, the share link, the privacy threshold and whether it is met, and the price charged.writeidempotent
- get_campaign_results — The answers, once the privacy threshold is met (open link: 5 answers; targeted: minPercent of the list). Below it the count and what is still needed. Each transcript is anonymous by construction — no field links an answer to a person. Includes the AI report if analyze_campaign has run. Answers are deleted 30 days after the campaign closes (dataDeletesAt).writeidempotent
- analyze_campaign — Runs the AI analysis over every answer so far and returns an executive summary with themes, sentiment and quotes; the report is then also part of get_campaign_results. Re-running with no new answers returns the same report. A sandbox campaign gets the illustrative sample report, marked sample: true.writeidempotentopen internet
- close_campaign — Ends the campaign now: no more answers are accepted. The price was charged at launch, so closing early refunds nothing. Campaigns also close on their own at the cap or on expiry. Closing twice changes nothing.destructiveidempotent
- close_account — Closes the account and refunds what is left of the balance to the card(s) that paid, newest top-up first, less Stripe's processing fee on each payment refunded (Stripe keeps it; the account owner bears it). Call it WITHOUT confirm first: that only previews the refund per card and moves nothing. Then, only if the account owner has agreed, call again with confirm: true. Every campaign must be closed first. A refund the card refuses stays as credit, and the key keeps working while any credit remaindestructiveidempotentopen internet
- get_agent_config — LEGACY wallet flow — new integrations should use create_account and launch_campaign (API key + prepaid balance, no wallet). Returns the payment configuration needed before starting an agent session: treasury wallet address, accepted token mint (USDC on Solana), and the one-time session fee in cents. Call this first to learn how much to pay and where.write
- get_session_nonce — LEGACY wallet flow — new integrations should use create_account and launch_campaign (API key + prepaid balance, no wallet). First step of creating a campaign session. Returns the exact message you must sign with your Solana wallet, and the nonce inside it. Pass the message and your base58 signature to initialize_session. Nonces expire after 5 minutes, and a message signed for the dashboard will not work here.write
- initialize_session — LEGACY wallet flow — new integrations should use create_account and launch_campaign (API key + prepaid balance, no wallet). Creates a new agent session, proving the wallet with a signature from get_session_nonce. Returns a sessionId and the payment details (treasury address, token mint, amount in cents). After calling this, send the required USDC to the treasury address on-chain, then call verify_payment with the transaction signature to receive an access token. The wallet you prove here becomeswrite
- verify_payment — LEGACY wallet flow — new integrations should use create_account and launch_campaign (API key + prepaid balance, no wallet). Verifies your on-chain USDC payment to the treasury and returns a one-time access token. The access token is required for create_campaign and expires after 1 hour. The token is single-use — it is consumed when create_campaign is called.write
- validate_campaign — LEGACY wallet flow — new integrations should use create_account and launch_campaign (API key + prepaid balance, no wallet). (quote_campaign is its equivalent for the key flow.) Checks a campaign BEFORE you pay for anything. Free, and needs no session or access token. Returns whether it is valid, every problem at once (not just the first), any adjustments we would make (expiry clamped, privacy threshold raised, empty questions dropped), and what it will cost — the escrow total including protocolwrite
- create_campaign — LEGACY wallet flow — new integrations should use create_account and launch_campaign (API key + prepaid balance, no wallet). (launch_campaign is its equivalent for the key flow.) Creates a new anonymous audio feedback campaign. Two modes: (a) INCENTIVIZED — participants earn USDC rewards; you must fund an escrow address returned in the response, then call verify_campaign_funding. Participants have 30 days after the campaign ends to claim; anything unclaimed then goes back to the wallet yowrite
- verify_campaign_funding — LEGACY wallet flow — new integrations should use create_account and launch_campaign (API key + prepaid balance, no wallet). For INCENTIVIZED campaigns only. After you have funded the escrow wallet returned by create_campaign, call this with the funding transaction signature to launch the campaign LIVE. Invite emails are sent to all cohort participants automatically. This call is idempotent — safe to retry if you are unsure whether it succeeded.write
- verify_campaign_activation — LEGACY wallet flow — new integrations should use create_account and launch_campaign (API key + prepaid balance, no wallet). For NO_REWARD campaigns only. After you have paid the flat USDC activation fee (returned in activationRequired by create_campaign), call this with the payment transaction signature to launch the campaign LIVE. Invite emails are sent to all cohort participants automatically. This call is idempotent — safe to retry.write
- get_login_nonce — LEGACY wallet flow — new integrations should use create_account and launch_campaign (API key + prepaid balance, no wallet). First step of dashboard authentication. Returns a nonce and a message string that you must sign with your Solana wallet. The signed message is then passed to verify_login_signature to receive a session token. Nonces expire after 5 minutes.write
- verify_login_signature — LEGACY wallet flow — new integrations should use create_account and launch_campaign (API key + prepaid balance, no wallet). Second step of dashboard authentication. Verifies your wallet signature against the nonce message from get_login_nonce. Returns a sessionToken (valid 24 hours) and your campaign list. Pass the sessionToken to list_campaigns, get_campaign_details, and export_campaign_data.write
- list_campaigns — LEGACY wallet flow — new integrations should use create_account and launch_campaign (API key + prepaid balance, no wallet). (list_my_campaigns is its equivalent for the key flow.) Lists all campaigns created by your wallet. Requires the sessionToken from verify_login_signature. Returns campaign IDs, titles, statuses, cohort sizes, and data expiry dates.write
- get_campaign_details — LEGACY wallet flow — new integrations should use create_account and launch_campaign (API key + prepaid balance, no wallet). (get_campaign is its equivalent for the key flow.) Returns detailed stats for a specific campaign: invite count, response count, completion rate, question definitions, and campaign status. Only campaigns owned by your wallet are accessible. Requires the sessionToken from verify_login_signature.write
- export_campaign_data — LEGACY wallet flow — new integrations should use create_account and launch_campaign (API key + prepaid balance, no wallet). (get_campaign_results is its equivalent for the key flow, as JSON with the AI report.) Exports raw response data for a completed campaign as CSV text. Each row contains a response ID, submission timestamp, and one column per question with the participant's audio transcription as the value. Only available after campaign expiry. AI insight reports are not included (raw data owrite