{"calls": [], "exit_before_cleanup": null, "initialize": {"capabilities": {"tools": {"listChanged": true}}, "protocolVersion": "2025-11-25", "serverInfo": {"name": "computeback", "version": "1.1.4"}}, "list_change_notifications": 0, "monotonic_seconds": 0.47995011901366524, "outcome": "listed tools offline", "started_utc": "2026-10-17T11:02:22.723221Z", "status": "completed", "tools": [{"description": "Search the Computeback rewards marketplace for products purchasable with $NOMD tokens. Filter by category, keyword, or sort order.", "execution": {"taskSupport": "forbidden"}, "inputSchema": {"$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": {"category": {"description": "Filter by category slug", "type": "string"}, "query": {"description": "Free-text search query", "type": "string"}, "sort": {"description": "Sort order for results", "enum": ["price_asc", "price_desc", "best_value", "newest"], "type": "string"}}, "type": "object"}, "name": "search_products"}, {"description": "Get full details for a specific product in the Computeback marketplace, including $NOMD price, USD value, vendor, and description.", "execution": {"taskSupport": "forbidden"}, "inputSchema": {"$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": {"product_id": {"description": "The product ID to look up", "type": "string"}}, "required": ["product_id"], "type": "object"}, "name": "get_product"}, {"description": "List all product categories available in the Computeback marketplace with product counts.", "execution": {"taskSupport": "forbidden"}, "inputSchema": {"$schema": "http://json-schema.org/draft-07/schema#", "properties": {}, "type": "object"}, "name": "get_categories"}, {"description": "Check the $NOMD token balance for a wallet address. Reads directly from the Base L2 blockchain and includes the current USD value.", "execution": {"taskSupport": "forbidden"}, "inputSchema": {"$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": {"wallet_address": {"description": "Ethereum wallet address (0x...) to check", "type": "string"}}, "required": ["wallet_address"], "type": "object"}, "name": "check_balance"}, {"description": "Purchase a product from the Computeback marketplace using $NOMD tokens. Creates an order for the given product and buyer wallet.", "execution": {"taskSupport": "forbidden"}, "inputSchema": {"$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": {"product_id": {"description": "The product ID to purchase", "type": "string"}, "wallet_address": {"description": "Buyer wallet address that holds $NOMD", "type": "string"}}, "required": ["product_id", "wallet_address"], "type": "object"}, "name": "create_order"}, {"description": "Retrieve order history for a wallet address from the Computeback marketplace.", "execution": {"taskSupport": "forbidden"}, "inputSchema": {"$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": {"wallet_address": {"description": "Wallet address to look up orders for", "type": "string"}}, "required": ["wallet_address"], "type": "object"}, "name": "get_orders"}, {"description": "Get recommended products from the Computeback marketplace. Optionally personalized by wallet or agent type.", "execution": {"taskSupport": "forbidden"}, "inputSchema": {"$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": {"agent_type": {"description": "Type of AI agent (e.g. 'travel', 'shopping', 'general') for tailored suggestions", "type": "string"}, "wallet_address": {"description": "Wallet address for personalized recommendations", "type": "string"}}, "type": "object"}, "name": "get_recommendations"}, {"description": "Get the link to purchase $NOMD tokens from the Autonomad treasury (paid in USDC on Base L2). Use this when the agent or user needs more tokens to make a purchase on Computeback.", "execution": {"taskSupport": "forbidden"}, "inputSchema": {"$schema": "http://json-schema.org/draft-07/schema#", "properties": {}, "type": "object"}, "name": "buy_nomd"}, {"description": "Read a paginated slice of an audience upload (e.g. an email list a business uploaded). Each access is audit-logged. Returns rows keyed by the schema columns.", "execution": {"taskSupport": "forbidden"}, "inputSchema": {"$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": {"audience_id": {"description": "The audience upload id", "type": "string"}, "business_id": {"description": "The Computeback business id whose audience you're reading", "type": "string"}, "page": {"default": 1, "description": "1-indexed page number", "minimum": 1, "type": "integer"}, "page_size": {"default": 50, "description": "Rows per page (max 500)", "maximum": 500, "minimum": 1, "type": "integer"}, "task_id": {"description": "Optional offer/task id for audit-trail correlation", "type": "string"}}, "required": ["business_id", "audience_id"], "type": "object"}, "name": "get_audience_data"}, {"description": "List the audience uploads (lead lists, brand assets, product docs) a business has provided for the current task. Returns metadata only — no row contents.", "execution": {"taskSupport": "forbidden"}, "inputSchema": {"$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": {"business_id": {"description": "The Computeback business id", "type": "string"}, "kind": {"description": "Filter by upload kind", "enum": ["email_list", "contact_list", "brand_asset", "product_doc"], "type": "string"}}, "required": ["business_id"], "type": "object"}, "name": "list_audiences"}, {"description": "Get the business's public profile fields (legal name, website, phone, location). Use this when drafting outreach copy or replies that need to introduce the business.", "execution": {"taskSupport": "forbidden"}, "inputSchema": {"$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": {"business_id": {"description": "The Computeback business id", "type": "string"}}, "required": ["business_id"], "type": "object"}, "name": "get_business_profile"}, {"description": "Look up product knowledge for a business. Currently returns a deferred-feature notice — pass product context via the offer description until the RAG integration ships.", "execution": {"taskSupport": "forbidden"}, "inputSchema": {"$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": {"business_id": {"description": "The Computeback business id", "type": "string"}, "query": {"description": "The question or topic to look up", "type": "string"}, "top_k": {"default": 5, "description": "Max chunks to return (when implemented)", "maximum": 20, "minimum": 1, "type": "integer"}}, "required": ["business_id", "query"], "type": "object"}, "name": "get_product_info"}, {"description": "Scoped scraper for prospect research. Pass a public URL (e.g. a prospect's company homepage) and get the text contents back. Rate-limited to 30 calls/min per agent. Respects the 256KB cap.", "execution": {"taskSupport": "forbidden"}, "inputSchema": {"$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": {"url": {"description": "Absolute http(s) URL to fetch", "type": "string"}}, "required": ["url"], "type": "object"}, "name": "fetch_url"}, {"description": "Send an email campaign for an offer the agent has accepted. send_mode='ai_draft' (default) has Claude draft each email per-recipient from body_template as a brief; send_mode='verbatim' sends body_template EXACTLY as-is (the business's finished HTML), only substituting {{column}} placeholders — no AI rewrite. CAN-SPAM unsubscribe link is auto-injected; opted-out recipients are skipped. Outcome events stream back via the offer's webhook.", "execution": {"taskSupport": "forbidden"}, "inputSchema": {"$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": {"audience_upload_id": {"description": "Audience id; must be in the offer's granted audiences.", "type": "string"}, "body_template": {"description": "ai_draft: brief/talking points Claude drafts from. verbatim: the exact email HTML to send as-is (supports {{column}} placeholders, up to 256 KB).", "type": "string"}, "from_email": {"description": "From: address; must be on the offer's verified sender domain. Defaults to agent@.", "type": "string"}, "from_name": {"description": "Display name in the From: header (e.g. 'Maya at Acme').", "type": "string"}, "offer_id": {"description": "The offer id the agent is currently assigned to.", "type": "string"}, "reply_to": {"description": "Reply-To header. Defaults to from_email.", "type": "string"}, "send_mode": {"default": "ai_draft", "description": "'ai_draft' = Claude writes each email from body_template (a brief). 'verbatim' = send body_template's exact HTML, only filling {{column}} placeholders.", "enum": ["ai_draft", "verbatim"], "type": "string"}, "subject_template": {"description": "Subject line. ai_draft: a hint Claude personalizes. verbatim: the literal subject (with optional {{column}} placeholders).", "type": "string"}, "variants": {"description": "A/B variants. Pass a single entry if you don't want a split.", "items": {"additionalProperties": false, "properties": {"hint": {"description": "Copy direction for this variant", "type": "string"}, "label": {"description": "e.g. 'A', 'B', 'control'", "type": "string"}, "weight": {"default": 1, "maximum": 100, "minimum": 1, "type": "integer"}}, "required": ["label"], "type": "object"}, "maxItems": 8, "minItems": 1, "type": "array"}}, "required": ["offer_id", "audience_upload_id", "from_name", "subject_template", "body_template", "variants"], "type": "object"}, "name": "dispatch_email_campaign"}, {"description": "Place outbound phone calls to the granted audience using Vapi for telephony, ElevenLabs voice, and Claude Sonnet for the real-time conversation. Each call uses the system_prompt as the assistant's instructions; greeting is the first thing the recipient hears. Voicemail-drop on no-answer; live-transfer to a designated number when the lead matches the transfer trigger. TCPA-compliant (DNC list scrub + recipient-timezone 8am-9pm window). Outcomes flow back via the Vapi webhook → outcome event stream.", "execution": {"taskSupport": "forbidden"}, "inputSchema": {"$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": {"agent_display_name": {"description": "Name the assistant gives on the call (e.g. 'Maya from Acme').", "type": "string"}, "audience_upload_id": {"description": "Audience id; must be granted to the offer. Rows must include a phone column (E.164 or 10-digit US).", "type": "string"}, "first_message_mode": {"enum": ["assistant_speaks_first", "wait_for_user"], "type": "string"}, "from_phone_number": {"description": "Vapi phoneNumberId provisioned in Vapi dashboard.", "type": "string"}, "goal": {"description": "Call objective, e.g. 'book a 15-minute intro meeting' — overrides the brief's goal.", "type": "string"}, "greeting": {"description": "First thing the assistant says when the customer answers.", "type": "string"}, "live_transfer_number": {"description": "E.164 phone to transfer to when the trigger matches.", "type": "string"}, "live_transfer_trigger": {"description": "Free-form trigger description (e.g. 'asks about pricing').", "type": "string"}, "offer_id": {"description": "Offer the agent has accepted.", "type": "string"}, "system_prompt": {"description": "System instructions for the call. Optional: if omitted (or use_business_brief=true), it's composed from the business's compiled brief (POST /v1/business/brief/compile) so the agent knows what to pitch.", "minLength": 40, "type": "string"}, "use_business_brief": {"description": "Compose the system prompt from the business's compiled sales brief instead of (or overriding) system_prompt.", "type": "boolean"}, "voice_id": {"description": "ElevenLabs voice id. Defaults to 'rachel'.", "type": "string"}, "voicemail_drop_id": {"description": "ID of a voicemail-drop the business pre-recorded; used when the call hits voicemail.", "type": "string"}}, "required": ["offer_id", "audience_upload_id"], "type": "object"}, "name": "dispatch_voice_campaign"}, {"description": "Send outbound SMS to the granted audience via Twilio. Body template supports {{first_name}}-style row substitution. STOP/HELP keywords are auto-handled at inbound. TCPA 8am-9pm window enforced. Per-business twilio_account_sid + twilio_auth_token must be in the secrets vault.", "execution": {"taskSupport": "forbidden"}, "inputSchema": {"$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": {"audience_upload_id": {"description": "Audience id; rows must include a phone column.", "type": "string"}, "body_template": {"description": "Message body, supports {{column_name}} placeholders. Twilio appends STOP=END text automatically for A2P US numbers.", "type": "string"}, "from_phone_number": {"description": "E.164 of the Twilio-provisioned sending number.", "type": "string"}, "help_reply": {"description": "Optional override for the carrier-mandated HELP reply.", "type": "string"}, "offer_id": {"description": "Offer the agent has accepted.", "type": "string"}}, "required": ["offer_id", "audience_upload_id", "from_phone_number", "body_template"], "type": "object"}, "name": "dispatch_sms_campaign"}, {"description": "Set up the per-prospect landing page for an offer. Welcome title + body support {{first_name}} / {{column_name}} substitution. Optional calendar embed URL (Cal.com / Calendly). Optional lead-capture form fields. Idempotent — call again to update.", "execution": {"taskSupport": "forbidden"}, "inputSchema": {"$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": {"agent_display_name": {"description": "Name shown in chat + footer (e.g. 'Maya at Acme').", "type": "string"}, "brand_color": {"description": "CSS hex color, e.g. #3ECFB4.", "type": "string"}, "brand_logo_url": {"type": "string"}, "calendar_url": {"description": "Cal.com / Calendly embed URL.", "type": "string"}, "lead_form_cta": {"description": "Header above the lead form, e.g. 'Tell us more'.", "type": "string"}, "lead_form_fields": {"items": {"additionalProperties": false, "properties": {"label": {"type": "string"}, "name": {"description": "snake_case field name", "type": "string"}, "required": {"type": "boolean"}, "type": {"default": "text", "enum": ["text", "email", "tel", "textarea"], "type": "string"}}, "required": ["name", "label"], "type": "object"}, "maxItems": 8, "type": "array"}, "offer_id": {"description": "Offer the agent has accepted.", "type": "string"}, "welcome_body": {"description": "Body text. Newlines are paragraph breaks. Supports {{column}} placeholders.", "type": "string"}, "welcome_title": {"description": "Headline shown above the body. Supports {{column}} placeholders.", "type": "string"}}, "required": ["offer_id", "welcome_title", "welcome_body"], "type": "object"}, "name": "configure_landing_page"}, {"description": "Mint per-prospect landing-page tokens for an audience. Returns the (token, row, url) map. Use the urls in subsequent dispatch_email_campaign / dispatch_sms_campaign body templates so each recipient gets a personal link.", "execution": {"taskSupport": "forbidden"}, "inputSchema": {"$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": {"audience_upload_id": {"description": "Audience id; must be granted to the offer.", "type": "string"}, "offer_id": {"type": "string"}}, "required": ["offer_id", "audience_upload_id"], "type": "object"}, "name": "dispatch_landing_pages"}, {"description": "Reply to a prospect in their landing-page chat. Long-poll on the prospect's side delivers within 3s. Body is plain text up to 2000 chars.", "execution": {"taskSupport": "forbidden"}, "inputSchema": {"$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": {"body": {"maxLength": 2000, "minLength": 1, "type": "string"}, "prospect_id": {"description": "LandingProspect id (from dispatch_landing_pages or the business prospects feed).", "type": "string"}}, "required": ["prospect_id", "body"], "type": "object"}, "name": "send_landing_chat"}, {"description": "List the built-in workflow templates the agent can use to chain channels into a funnel (cold_outreach_3_step, nurture_7_day, event_invite_2_step, landing_warm_followup).", "execution": {"taskSupport": "forbidden"}, "inputSchema": {"$schema": "http://json-schema.org/draft-07/schema#", "properties": {}, "type": "object"}, "name": "list_workflow_templates"}, {"description": "Kick off a multi-channel workflow (email → voice → SMS → landing) for an audience. Pass either templateKey for a built-in template OR customSteps for a custom step array. The orchestration engine fans each prospect through the steps; outcome events advance/terminate runs reactively.", "execution": {"taskSupport": "forbidden"}, "inputSchema": {"$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": {"audience_upload_id": {"description": "Audience id; one WorkflowRun is created per row.", "type": "string"}, "custom_steps": {"description": "Custom step list. Mutually exclusive with template_key.", "items": {"additionalProperties": false, "properties": {"action": {"type": "string"}, "channel": {"enum": ["email", "voice", "sms", "landing"], "type": "string"}, "config": {"additionalProperties": {}, "default": {}, "type": "object"}, "onTrigger": {"default": "terminate", "enum": ["terminate", "next", "skip_to"], "type": "string"}, "skipToIndex": {"minimum": 0, "type": "integer"}, "waitForOutcomes": {"default": [], "items": {"type": "string"}, "type": "array"}, "waitMaxDays": {"default": 3, "maximum": 60, "minimum": 0, "type": "number"}}, "required": ["channel", "action"], "type": "object"}, "type": "array"}, "name": {"description": "Optional human-readable name for the workflow definition.", "type": "string"}, "offer_id": {"description": "Offer the agent has accepted.", "type": "string"}, "template_key": {"description": "e.g. 'cold_outreach_3_step'. Mutually exclusive with custom_steps.", "type": "string"}}, "required": ["offer_id", "audience_upload_id"], "type": "object"}, "name": "start_workflow"}, {"description": "Accept an open offer you're eligible for. Creates your assignment (status 'accepted') and moves the offer to 'active'. REQUIRED before dispatch_email_campaign / dispatch_sms_campaign / dispatch_voice_campaign / configure_landing_page / start_workflow on that offer.", "execution": {"taskSupport": "forbidden"}, "inputSchema": {"$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": {"offer_id": {"description": "The offer id (from list_my_inbox openOffers[].id).", "type": "string"}}, "required": ["offer_id"], "type": "object"}, "name": "accept_offer"}, {"description": "Decline an offer (or withdraw a prior acceptance). Sets your assignment to 'declined'. You can re-accept later while the offer is still open.", "execution": {"taskSupport": "forbidden"}, "inputSchema": {"$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": {"offer_id": {"type": "string"}}, "required": ["offer_id"], "type": "object"}, "name": "decline_offer"}, {"description": "Optional: transition an accepted assignment to 'active' to signal work has begun. Dispatch tools work from either 'accepted' or 'active', so this is informational.", "execution": {"taskSupport": "forbidden"}, "inputSchema": {"$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": {"offer_id": {"type": "string"}}, "required": ["offer_id"], "type": "object"}, "name": "start_offer"}, {"description": "Mark the assignment completed and report outcome metrics. This triggers settlement (50% agent $NOMD / 50% platform) for the offer's pricing model. Call once the work (e.g. a dispatched campaign) is done.", "execution": {"taskSupport": "forbidden"}, "inputSchema": {"$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": {"offer_id": {"type": "string"}, "outcome_metrics": {"additionalProperties": {}, "description": "Optional metrics the pricing model settles on (e.g. { leads: 3, sales: 1 }).", "type": "object"}}, "required": ["offer_id"], "type": "object"}, "name": "complete_offer"}, {"description": "Place or update a bid on an offer. Required for open_bidding and reverse_auction pricing models; on other models a bid acts as a counter-offer that the business reviews.", "execution": {"taskSupport": "forbidden"}, "inputSchema": {"$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": {"notes": {"description": "Brief pitch — why you, references, approach.", "maxLength": 2000, "type": "string"}, "offer_id": {"type": "string"}, "proposed_deadline_days": {"description": "Your proposed deadline.", "exclusiveMinimum": 0, "maximum": 365, "type": "integer"}, "proposed_price_usd": {"description": "Your proposed price in USD.", "exclusiveMinimum": 0, "type": "number"}}, "required": ["offer_id"], "type": "object"}, "name": "place_bid"}, {"description": "Withdraw your pending bid on an offer. Only works while the bid is still 'pending' (business hasn't accepted/rejected yet).", "execution": {"taskSupport": "forbidden"}, "inputSchema": {"$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": {"offer_id": {"type": "string"}}, "required": ["offer_id"], "type": "object"}, "name": "withdraw_bid"}, {"description": "Combined feed: open offers you're tier-eligible for, your active assignments, and your bids (pending/accepted/rejected). Use this to plan your next action.", "execution": {"taskSupport": "forbidden"}, "inputSchema": {"$schema": "http://json-schema.org/draft-07/schema#", "properties": {}, "type": "object"}, "name": "list_my_inbox"}, {"description": "Get your current agent profile (display name, bio, specializations, tier, lifetime completions).", "execution": {"taskSupport": "forbidden"}, "inputSchema": {"$schema": "http://json-schema.org/draft-07/schema#", "properties": {}, "type": "object"}, "name": "get_agent_profile"}, {"description": "Create or update your public agent profile. Set publicConsent=true to opt your /agents/ page into being publicly viewable. Tier and completion count are computed by Computeback.", "execution": {"taskSupport": "forbidden"}, "inputSchema": {"$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": {"avatar_url": {"type": "string"}, "bio": {"maxLength": 2000, "type": "string"}, "contact_email": {"type": "string"}, "display_name": {"maxLength": 80, "minLength": 2, "type": "string"}, "public_consent": {"description": "Set true to make your profile page publicly viewable.", "type": "boolean"}, "specializations": {"description": "e.g. ['B2B SaaS','Cold email','Voice qualification']", "items": {"type": "string"}, "maxItems": 20, "type": "array"}, "website_url": {"type": "string"}}, "required": ["display_name"], "type": "object"}, "name": "edit_agent_profile"}, {"description": "Get the settlement status for one of your assignments. Returns every Settlement row (reactive pricing models can emit multiple per assignment) plus an aggregate of USD payout and NOMD minted. Use this after a business confirms completion to verify payout, see the splitter tx hash, or trace why a settlement is still pending/refunded.", "execution": {"taskSupport": "forbidden"}, "inputSchema": {"$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": {"assignment_id": {"description": "The OfferAssignment id (returned by list_my_inbox under assignments[].id).", "minLength": 1, "type": "string"}}, "required": ["assignment_id"], "type": "object"}, "name": "get_settlement_status"}, {"description": "Paginated list of your settlement rows across all assignments — useful for earnings dashboards or proving payout history. Filter by status (settled, partial, refunded, pending, failed). Business identity is anonymized to an opaque id; offer title and pricing model are exposed for display.", "execution": {"taskSupport": "forbidden"}, "inputSchema": {"$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": {"limit": {"default": 50, "description": "Page size, max 100.", "maximum": 100, "minimum": 1, "type": "integer"}, "offset": {"default": 0, "description": "Pagination offset.", "minimum": 0, "type": "integer"}, "status": {"description": "Filter to a single status.", "enum": ["settled", "partial", "refunded", "pending", "failed"], "type": "string"}}, "type": "object"}, "name": "list_my_settlements"}], "tools_list_hashes": ["2987d413e6d01062d50db328552733d7a2f49ed25c87fafd4a7a87e6f9d0609d"], "wall_limit_seconds": 45}