# Overview

Welcome to MindStudio

In just a few minutes, you’ll learn how to launch, customize, and deploy your own intelligent tools—no coding needed.

{% embed url="<https://www.youtube.com/embed/JlDqei_-THY>" %}

***

## Explore MORE...

<table data-card-size="large" data-column-title-hidden data-view="cards" data-full-width="false"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td><h3>Video Courses</h3></td><td>Check out over 15 hours of video content covering everything you need to build advanced AI Agents.</td><td><a href="https://help.mindstudio.ai/video-courses">https://help.mindstudio.ai/video-courses</a></td><td><a href="/files/Fru2YzZ9J39qF0Je69wT">/files/Fru2YzZ9J39qF0Je69wT</a></td></tr><tr><td><h3>Newsroom</h3></td><td>Discover the lates updates and news about the company including partnerships, integrations, and success stories</td><td><a href="https://help.mindstudio.ai/newsroom">https://help.mindstudio.ai/newsroom</a></td><td><a href="/files/9SqXfOjriEr3iJiPHvNA">/files/9SqXfOjriEr3iJiPHvNA</a></td></tr></tbody></table>

***

## Capabilities

MindStudio offers powerful capabilities that enable you to create, test, and deploy sophisticated AI Agents with ease.

<table data-card-size="large" data-column-title-hidden data-view="cards" data-full-width="false"><thead><tr><th></th><th></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><h3>Build AI Agents</h3></td><td>Explore editor features involved in building AI Agents like prompts, blocks, functions, workflows and more. Learn how to combine these elements to create powerful AI Agents.</td><td><a href="/files/fPZ9AWv1ZWdRRTZlKvs5">/files/fPZ9AWv1ZWdRRTZlKvs5</a></td><td><a href="/pages/MIzBqRYaiS8UZPMcHPkb">/pages/MIzBqRYaiS8UZPMcHPkb</a></td></tr><tr><td><h3>Test &#x26; Evaluate</h3></td><td>Learn about the tools and techniques for testing AI Agents. Understand how to evaluate performance, debug issues, and ensure your AI Agents meet quality standards before deployment.</td><td><a href="/files/lVv6YpSYiwmhEyW8TlxY">/files/lVv6YpSYiwmhEyW8TlxY</a></td><td><a href="/pages/MTjE2OYQVwUbj6luo6Q4">/pages/MTjE2OYQVwUbj6luo6Q4</a></td></tr><tr><td><h3>Publish &#x26; Deploy</h3></td><td>Learn how to prepare an AI Agent for publishing. Explore various deployment options including integration with no-code automation platforms and deployment to custom applications.</td><td><a href="/files/etcLlNiR292JUbPtqcag">/files/etcLlNiR292JUbPtqcag</a></td><td><a href="/pages/Be2Wp5Q84ZRSL3AuwjSN">/pages/Be2Wp5Q84ZRSL3AuwjSN</a></td></tr><tr><td><h3>Workspace Management</h3></td><td>Discover how to effectively organize and manage your AI Agents, usage controls, billing settings and team members within the MindStudio workspace.</td><td><a href="/files/AKGJN8rfQtdk2uiSEPOQ">/files/AKGJN8rfQtdk2uiSEPOQ</a></td><td><a href="/pages/q9FoMfxJrCkvM8DILEs2">/pages/q9FoMfxJrCkvM8DILEs2</a></td></tr></tbody></table>

***

## For Developers

### API Reference

MindStudio has best-in-class developer tools to build scalable AI Agents for a variety of fuzzy computing tasks.

<table data-column-title-hidden data-view="cards" data-full-width="false"><thead><tr><th></th><th></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><h3>API Reference</h3></td><td>Integrate MindStudio's AI Agents into your applications. Leverage our API for serverless AI function calling.</td><td><a href="/files/BJ9ME4HWUKOuZlTCRPcG">/files/BJ9ME4HWUKOuZlTCRPcG</a></td><td><a href="/pages/RrOskm1hVrxLmxJZcMtl">/pages/RrOskm1hVrxLmxJZcMtl</a></td></tr><tr><td><h3>NPM Package</h3></td><td>Install the MindStudio NPM package for easy integration of MindStudio's AI Agent into your Node.js projects.</td><td><a href="/files/2B4dx3DGfD9U4ifXsQfI">/files/2B4dx3DGfD9U4ifXsQfI</a></td><td><a href="/pages/u2c3APV5globQmk8Khmz">/pages/u2c3APV5globQmk8Khmz</a></td></tr><tr><td><h3>Custom Functions</h3></td><td>Extend the capabilities of your workflows by running JavaScript or Python code directly within your AI Agents.</td><td><a href="/files/uZrRObTC0UuHxVOPvICH">/files/uZrRObTC0UuHxVOPvICH</a></td><td><a href="/pages/75MPHdrDrMqY88hOpVjJ">/pages/75MPHdrDrMqY88hOpVjJ</a></td></tr></tbody></table>

***

## Additional Resources

Find helpful resources to enhance your experience with MindStudio.

<table data-card-size="large" data-column-title-hidden data-view="cards" data-full-width="false"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><h3>Join the Community</h3></td><td>Need help or have questions? Reach out to us via the community forum for any questions you may have about MindStudio.</td><td><a href="https://community.mindstudio.ai/">https://community.mindstudio.ai/</a></td></tr><tr><td><h3>Glossary</h3></td><td>A comprehensive list of key terms and concepts used in MindStudio.</td><td><a href="/pages/jCKsUKWhpGJ2u2gS7wat">/pages/jCKsUKWhpGJ2u2gS7wat</a></td></tr></tbody></table>


# AI Agent Use Cases

Explore the diverse range of AI Agents you can build with MindStudio

MindStudio is a powerful and versatile platform that empowers you to create all kinds of AI Agents tailored to your unique needs. Whether you're streamlining operations, enhancing customer experiences, or boosting productivity, MindStudio provides the tools to design these intelligent solutions that fit neatly into your existing business or tech stack.

This article explores the diverse range of AI Agents you can build with MindStudio, showcasing real-world examples to spark inspiration and help you unlock the full potential of AI in your workflows.

<details>

<summary>AI Agents for Sales</summary>

### **Lead Scoring and Prioritization**

Use an AI Agent to score leads based on provided interaction data, helping sales prioritize follow-ups.

1. Import website interaction data and email engagement metrics (e.g., page views, clicks, replies).
2. Schedule AI Agent to run at regular intervals (e.g., hourly or daily).
3. Use AI to calculate a lead score based on predefined engagement criteria.
4. Output prioritized lead scores to the CRM system.
5. Notify the sales team with a summary of high-priority leads.

***

### **Personalized Follow-Up Email Suggestions**

Use an AI Agent to suggest personalized follow-up emails based on previous communication timing and context.

1. Import past communication data (e.g., email content, timestamps).
2. Schedule AI Agent to run after significant engagement events or missed follow-ups.
3. Use AI to generate email content suggestions based on timing and conversation context.
4. Output suggested emails to the sales team.
5. Notify reps with recommended follow-ups.

***

### **Lead Enrichment for Comprehensive Profiles**

Use an AI Agent to enrich leads by pulling public data like company size and social profiles.

1. Import existing lead data (e.g., names, email addresses).
2. Schedule AI Agent to run after lead creation or update.
3. Use AI to retrieve and enrich leads with public data (e.g., company size, industry, LinkedIn profiles).
4. Output enriched lead profiles to the CRM system.
5. Notify sales reps of updated lead information.

***

### **Sales Forecasting and Deal Prioritization**

Use an AI Agent to generate sales forecasts, helping focus teams on deals most likely to close.

1. Import sales pipeline data (e.g., deal stages, value, historical performance).
2. Schedule AI Agent to run weekly or monthly.
3. Use AI to analyze trends and predict deal closure probabilities.
4. Output forecast reports and prioritized deal lists to sales dashboards.
5. Notify sales teams with insights for action.

***

### **Product Bundling and Upselling Recommendations**

Use an AI Agent to recommend tailored product bundles and upsell opportunities based on customer engagement.

1. Import customer interaction data (e.g., purchase history, browsing behavior).
2. Schedule AI Agent to run after key engagement events (e.g., purchase, cart activity).
3. Use AI to generate personalized product bundle and upsell recommendations.
4. Output recommendations to the e-commerce platform or email campaigns.
5. Notify sales or marketing teams about high-value opportunities.

***

### **Automated Activity Logging**

Use an AI Agent to log emails, calls, and meetings, reducing manual data entry.

1. Import communication records from email, call logs, and calendars.
2. Schedule AI Agent to run periodically (e.g., daily or weekly).
3. Use AI to parse and categorize communication data.
4. Output logged activities to the CRM system.
5. Notify the CRM management team of updates.

***

### **Lead Routing by Territory or Expertise**

Use an AI Agent to route leads, matching sales reps to leads based on territory or expertise.

1. Import lead information and rep assignment rules (e.g., territory, skills).
2. Schedule AI Agent to run after lead generation or updates.
3. Use AI to match leads to the most suitable sales reps.
4. Output lead assignments to the CRM system.
5. Notify assigned reps of new leads.

***

### **Email Urgency Detection for High-Priority Leads**

Use an AI Agent to detect urgency in prospect emails and flag high-priority leads for follow-up.

1. Import prospect email content and metadata (e.g., sender, subject, timestamp).
2. Schedule AI Agent to run upon email receipt or at regular intervals.
3. Use AI to analyze email content for urgency indicators (e.g., keywords, tone).
4. Flag high-priority emails and assign priority labels.
5. Notify the lead management team via CRM or email alerts.

***

### **Proposal Content Suggestions**

Use an AI Agent to suggest content and case studies for proposals, aligning with prospect needs.

1. Import proposal requirements and prospect data.
2. Schedule AI Agent to run during proposal drafting.
3. Use AI to recommend tailored content, case studies, and value propositions.
4. Output suggestions to the proposal team’s document editor.
5. Notify team members with recommendations for review.

</details>

<details>

<summary>AI Agents for HR</summary>

### **Resume Screening for Key Qualifications**

Use an AI Agent to screen resumes for key qualifications, identifying the best candidates faster.

1. Import candidate resumes and job description criteria.
2. Schedule AI Agent to run upon resume submission.
3. Use AI to analyze resumes for matching qualifications and relevant experience.
4. Output a shortlist of qualified candidates to the recruitment dashboard.
5. Notify recruiters with the top candidates for review.

***

### **Candidate Ranking by Job Fit**

Use an AI Agent to rank candidates by job fit, streamlining focus on top prospects.

1. Import candidate profiles, resumes, and job requirements.
2. Schedule AI Agent to run during the candidate evaluation phase.
3. Use AI to score and rank candidates based on job fit criteria (e.g., skills, experience, cultural alignment).
4. Output ranked candidate lists to the recruitment system.
5. Notify recruiters with recommendations for interviews.

***

### **Inclusive Job Description Optimization**

Use an AI Agent to improve job descriptions, boosting inclusivity and appeal.

1. Import draft job descriptions.
2. Schedule AI Agent to run during job posting preparation.
3. Use AI to analyze language for inclusivity and suggest improvements.
4. Output revised job descriptions with inclusivity enhancements.
5. Notify HR with optimized versions for review and approval.

***

### **Candidate Engagement Scoring**

Use an AI Agent to score candidate engagement with job postings, emails, and interviews.

1. Import engagement data (e.g., application interactions, email responses, interview feedback).
2. Schedule AI Agent to run after key engagement milestones.
3. Use AI to calculate an engagement score for each candidate.
4. Output engagement scores to the recruitment dashboard.
5. Notify the talent acquisition team of highly engaged candidates.

***

### **Employee Role Matching**

Use an AI Agent to match employees to new roles, considering skills and performance data.

1. Import employee skills, performance metrics, and open role criteria.
2. Schedule AI Agent to run during role transition planning.
3. Use AI to match employees to roles based on skills and suitability.
4. Output role recommendations to the project management system.
5. Notify managers with suggested matches for review.

***

### **Bias Detection in Hiring Processes**

Use an AI Agent to check hiring processes and job descriptions for potential biases.

1. Import job descriptions, interview scripts, and hiring process data.
2. Schedule AI Agent to run before launching new hiring initiatives.
3. Use AI to identify and flag potential biases in language or processes.
4. Output recommendations to improve inclusivity and reduce bias.
5. Notify the diversity and inclusion team for further action.

***

### **Offer Letter Generation**

Use an AI Agent to generate offer letters, incorporating relevant candidate and policy details.

1. Import candidate details and HR policy templates.
2. Schedule AI Agent to run upon candidate selection for an offer.
3. Use AI to generate customized offer letters with appropriate terms.
4. Output finalized offer letters for review.
5. Notify HR generalists when letters are ready for distribution.

***

### **Post-Interview Feedback Analysis**

Use an AI Agent to analyze post-interview feedback, enhancing the hiring process.

1. Import interview feedback data (e.g., notes, ratings, comments).
2. Schedule AI Agent to run after interview completion.
3. Use AI to identify trends, strengths, and areas for improvement.
4. Output actionable insights to the recruiting team.
5. Notify hiring managers with suggestions to refine the process.

***

### **Tailored Interview Question Suggestions**

Use an AI Agent to suggest interview questions aligned with resumes and role requirements.

1. Import candidate resumes and job descriptions.
2. Schedule AI Agent to run during interview preparation.
3. Use AI to generate tailored interview questions based on candidate profiles and role needs.
4. Output suggested questions to the interview scheduling system.
5. Notify interviewers with recommended questions for use.

</details>

<details>

<summary>AI Agents for Marketing</summary>

### **Personalized Website and Email Content**

Use an AI Agent to personalize website and email content, enhancing user engagement.

1. Import user behavior and demographic data.
2. Schedule AI Agent to run in real-time for website interactions or prior to email sends.
3. Use AI to generate personalized content based on user preferences.
4. Output tailored content to the website CMS or email platform.
5. Notify the marketing team with engagement performance metrics.

***

### **Ad Copy Variations for A/B Testing**

Use an AI Agent to generate multiple ad copy variations for A/B testing across platforms.

1. Import campaign goals, target audience details, and base messaging.
2. Schedule AI Agent to run during ad copy planning.
3. Use AI to create multiple ad copy variations tailored to the audience.
4. Output variations to the ad platform for A/B testing.
5. Notify the creative team with performance insights for refinement.

***

### **Audience Segmentation for Campaigns**

Use an AI Agent to segment audiences by behavior and demographics, tailoring campaigns for greater impact.

1. Import audience data (e.g., website behavior, purchase history, demographics).
2. Schedule AI Agent to run before campaign creation.
3. Use AI to identify and segment audiences based on patterns and preferences.
4. Output audience segments to the marketing platform.
5. Notify the content team with tailored campaign recommendations.

***

### **Social Media Content Repurposing**

Use an AI Agent to break down long-form content into digestible pieces for social platforms.

1. Import long-form content (e.g., articles, videos, reports).
2. Schedule AI Agent to run during content planning.
3. Use AI to generate shorter, platform-optimized content snippets.
4. Output snippets to the social media scheduler or asset library.
5. Notify the social media team with recommendations for posting.

***

### **Visual Asset Categorization**

Use an AI Agent to categorize visual assets, making images and videos easier to find and repurpose.

1. Import visual asset metadata and file library.
2. Schedule AI Agent to run periodically for new uploads.
3. Use AI to categorize assets by type, theme, and relevance.
4. Output categorized assets to the media library system.
5. Notify the media team of updated asset organization.

***

### **Social Media Trend Monitoring**

Use an AI Agent to monitor social media trends, identifying emerging topics and keywords.

1. Import social media data streams (e.g., hashtags, posts, mentions).
2. Schedule AI Agent to run continuously or at regular intervals.
3. Use AI to analyze trends and identify emerging topics.
4. Output trend insights to the research dashboard.
5. Notify the market research team with actionable insights.

***

### **Email Send Time Optimization**

Use an AI Agent to optimize email send times, maximizing engagement per individual subscriber.

1. Import subscriber engagement data (e.g., open rates, click rates, time zones).
2. Schedule AI Agent to run before email campaign launches.
3. Use AI to determine optimal send times for each subscriber.
4. Output send-time recommendations to the email platform.
5. Notify the email team with a summary of expected engagement improvements.

***

### **Campaign Success Prediction**

Use an AI Agent to predict campaign success based on past data, adjusting strategies before launch.

1. Import past campaign data (e.g., performance metrics, audience engagement).
2. Schedule AI Agent to run during campaign planning.
3. Use AI to predict success probabilities and identify potential adjustments.
4. Output predictions and recommendations to the campaign planning tool.
5. Notify the insights team with suggestions for strategy refinement.

***

### **Social Media Sentiment Analysis**

Use an AI Agent to analyze social media sentiment, assessing public response to promotions.

1. Import social media mentions and comments data.
2. Schedule AI Agent to run during or after campaign launches.
3. Use AI to analyze sentiment trends (positive, neutral, negative).
4. Output sentiment insights to the brand team’s analytics dashboard.
5. Notify the brand team of key sentiment shifts or concern

</details>

<details>

<summary>AI Agents for Customer Service</summary>

### **Inquiry Categorization and Routing**

Use an AI Agent to categorize inquiries, ensuring they are routed to the right agents.

1. Import inquiry data (e.g., email content, chat transcripts, call summaries).
2. Schedule AI Agent to run in real-time as inquiries arrive.
3. Use AI to classify inquiries by type and urgency.
4. Output categorized inquiries to the ticketing or routing system.
5. Notify agents with assigned tickets.

***

### **Pre-Written Response Suggestions**

Use an AI Agent to suggest pre-written responses, enabling faster and more accurate replies.

1. Import past inquiry and response data.
2. Schedule AI Agent to run during live chat or email response drafting.
3. Use AI to recommend pre-written responses based on inquiry context.
4. Output response suggestions to the agent interface.
5. Notify agents of top response options for selection.

***

### **Interaction Summarization for Support Agents**

Use an AI Agent to summarize past customer interactions, giving agents valuable context for responses.

1. Import interaction histories (e.g., tickets, chats, calls).
2. Schedule AI Agent to run when a new ticket or chat is opened.
3. Use AI to generate a concise summary of past interactions.
4. Output the summary to the agent's CRM view.
5. Notify agents with key details for effective responses.

***

### **Real-Time Multilingual Support**

Use an AI Agent for real-time translation, allowing agents to assist customers in various languages.

1. Import incoming messages or transcripts requiring translation.
2. Schedule AI Agent to run in real-time during customer interactions.
3. Use AI to translate messages into the agent’s preferred language and vice versa.
4. Output translated text to the chat or ticketing interface.
5. Notify agents of available language options for customer assistance.

***

### **Ticket Prioritization for Urgent Issues**

Use an AI Agent to prioritize tickets, ensuring urgent issues are handled promptly.

1. Import ticket details (e.g., content, metadata, timestamps).
2. Schedule AI Agent to run as tickets are created or updated.
3. Use AI to assign priority scores based on urgency criteria.
4. Output prioritized tickets to the support queue.
5. Notify agents of high-priority tickets requiring immediate attention.

***

### **Complex Case Escalation**

Use an AI Agent to identify and escalate complex cases to the support escalation team.

1. Import case details (e.g., ticket content, resolution attempts).
2. Schedule AI Agent to run after initial support actions fail.
3. Use AI to flag cases with high complexity or repeated issues.
4. Output flagged cases to the escalation queue.
5. Notify escalation teams for resolution.

***

### **Customer Satisfaction Prediction**

Use an AI Agent to predict customer satisfaction, enabling proactive improvements before cases close.

1. Import ongoing case data (e.g., response times, sentiment analysis).
2. Schedule AI Agent to run periodically during case resolution.
3. Use AI to predict satisfaction levels based on historical trends.
4. Output satisfaction predictions and improvement recommendations.
5. Notify customer experience teams for proactive actions.

***

### **Automated Data Entry for CRM**

Use an AI Agent to automate data entry by extracting customer details from forms.

1. Import completed customer forms or inquiry details.
2. Schedule AI Agent to run upon form submission.
3. Use AI to extract and validate key customer information (e.g., name, email, issue type).
4. Output extracted data to the CRM fields.
5. Notify agents of updated customer profiles.

***

### **Customer History Monitoring for QA**

Use an AI Agent to monitor customer histories, identifying potential issues before they arise.

1. Import customer interaction histories and account data.
2. Schedule AI Agent to run periodically or before renewals or follow-ups.
3. Use AI to identify patterns indicating potential dissatisfaction or recurring issues.
4. Output flagged accounts to the QA or customer success team.
5. Notify teams of proactive actions to address concerns.

</details>

<details>

<summary>AI Agents for Operations</summary>

### **Maintenance Tracking and Equipment Scheduling**

Use an AI Agent to track maintenance schedules, automatically flagging upcoming equipment needs.

1. Import equipment details and maintenance schedules.
2. Schedule AI Agent to run daily or weekly.
3. Use AI to identify upcoming maintenance tasks based on schedules.
4. Output flagged equipment needs to the facilities management system.
5. Notify the facilities team with a list of upcoming tasks.

***

### **Inventory Forecasting**

Use an AI Agent to forecast inventory requirements based on seasonal trends and sales history.

1. Import sales history and seasonal trend data.
2. Schedule AI Agent to run weekly or monthly during inventory planning.
3. Use AI to predict inventory needs for each product category.
4. Output forecasts to the inventory management system.
5. Notify the operations team with actionable inventory recommendations.

***

### **Automated Daily Operational Reports**

Use an AI Agent to automate the creation of daily operational reports, summarizing key metrics across departments.

1. Import department metrics and performance data.
2. Schedule AI Agent to run daily at a specified time.
3. Use AI to aggregate and summarize data into a concise report.
4. Output the report to the business intelligence dashboard or email.
5. Notify stakeholders with the finalized daily report.

***

### **Real-Time Quality Deviation Analysis**

Use an AI Agent to analyze production data, identifying and flagging quality deviations in real time.

1. Import live production data from monitoring systems.
2. Schedule AI Agent to run continuously or at regular intervals.
3. Use AI to detect deviations from quality standards.
4. Output flagged issues to the quality assurance dashboard.
5. Notify QA teams with immediate alerts for action.

***

### **Vendor Scheduling and Logistics Coordination**

Use an AI Agent to coordinate vendor schedules and logistics, ensuring smooth event setup and takedown.

1. Import vendor schedules and logistics requirements.
2. Schedule AI Agent to run during event planning phases.
3. Use AI to align vendor timelines and flag scheduling conflicts.
4. Output coordinated schedules to the event operations system.
5. Notify the team with a finalized logistics plan.

***

### **Compliance Monitoring and Discrepancy Flagging**

Use an AI Agent to monitor policy adherence across regional offices, flagging any discrepancies.

1. Import policy documentation and operational reports from regional offices.
2. Schedule AI Agent to run periodically (e.g., weekly or monthly).
3. Use AI to identify and flag deviations from compliance policies.
4. Output flagged discrepancies to the compliance dashboard.
5. Notify the compliance team with a summary of potential issues

</details>

<details>

<summary>AI Agents for Finance</summary>

### **Automated Invoice Processing**

Use an AI Agent to categorize and verify invoice data, enabling swift approvals.

1. Import invoice details (e.g., supplier, amounts, due dates).
2. Schedule AI Agent to run upon invoice submission.
3. Use AI to categorize invoices and verify data accuracy.
4. Output approved invoices to the accounting system.
5. Notify the accounting team with flagged issues for review.

***

### **Expense Categorization for Bookkeeping**

Use an AI Agent to categorize expenses, improving accuracy and saving time for small businesses.

1. Import transaction data (e.g., receipts, bank statements).
2. Schedule AI Agent to run daily or weekly.
3. Use AI to categorize expenses based on predefined categories.
4. Output categorized data to the bookkeeping system.
5. Notify the bookkeeping service with categorized records.

***

### **Real-Time Fraud Detection**

Use an AI Agent to flag suspicious transactions, enabling real-time fraud detection.

1. Import transaction data (e.g., account details, timestamps).
2. Schedule AI Agent to run continuously or in near real-time.
3. Use AI to identify patterns indicative of fraud.
4. Output flagged transactions to the fraud monitoring dashboard.
5. Notify the finance team with alerts for immediate action.

***

### **Transaction Classification for Tax Prep**

Use an AI Agent to classify transactions, simplifying compliance and reducing tax prep time.

1. Import transaction records (e.g., sales, expenses, payments).
2. Schedule AI Agent to run quarterly or as needed.
3. Use AI to classify transactions by tax categories.
4. Output classified data to the tax preparation system.
5. Notify the tax team with a summary of classifications.

***

### **Transaction Reconciliation**

Use an AI Agent to match transactions across systems, identifying discrepancies for reconciliation.

1. Import transaction data from multiple financial systems.
2. Schedule AI Agent to run daily or weekly.
3. Use AI to match transactions and flag discrepancies.
4. Output reconciliation reports to the financial dashboard.
5. Notify the reporting team with unmatched transactions.

***

### **Payment Prioritization for Cash Flow Management**

Use an AI Agent to suggest payment prioritization, balancing due dates and financial health.

1. Import payment obligations and cash flow data.
2. Schedule AI Agent to run during payment planning.
3. Use AI to prioritize payments based on due dates and cash availability.
4. Output payment recommendations to the finance team.
5. Notify the cash flow team with suggested actions.

***

### **Revenue Forecasting for Budget Planning**

Use an AI Agent to forecast revenue, enabling better financial planning for a non-profit.

1. Import historical revenue and donor data.
2. Schedule AI Agent to run quarterly or annually.
3. Use AI to predict revenue trends and donor behavior.
4. Output revenue forecasts to the budgeting tool.
5. Notify the budgeting team with insights for planning.

***

### **Spending Pattern Analysis in Procurement**

Use an AI Agent to detect unusual spending patterns, flagging anomalies in procurement.

1. Import procurement data (e.g., vendor, amounts, purchase categories).
2. Schedule AI Agent to run after new purchase orders.
3. Use AI to analyze patterns and identify anomalies.
4. Output flagged issues to the procurement dashboard.
5. Notify the procurement team of unusual transactions for review.

***

### **Supplier Risk Assessment**

Use an AI Agent to assess supplier risk, enabling data-driven procurement decisions.

1. Import supplier data (e.g., performance, payment history).
2. Schedule AI Agent to run periodically or during supplier reviews.
3. Use AI to evaluate supplier risk based on performance and trends.
4. Output risk scores to the supply chain finance system.
5. Notify the finance team with recommendations for supplier management.

</details>

<details>

<summary>AI Agents for Legal</summary>

### **Contract Review for Compliance**

Use an AI Agent to review contracts for specific clauses, ensuring alignment with company policies.

1. Import contract documents.
2. Schedule AI Agent to run upon contract submission.
3. Use AI to search for specific clauses and verify compliance with company policies.
4. Output flagged issues and compliance reports to the legal review dashboard.
5. Notify the legal operations team of contracts needing attention.

***

### **Case Document Analysis**

Use an AI Agent to analyze case documents, extracting and summarizing relevant information for attorneys.

1. Import case documents (e.g., filings, discovery materials).
2. Schedule AI Agent to run as new documents are uploaded.
3. Use AI to extract key facts, dates, and parties, and generate summaries.
4. Output summaries to the case management system.
5. Notify the litigation support team with relevant insights.

***

### **Regulatory Update Assessment**

Use an AI Agent to scan regulatory updates, assessing the impact on internal policies.

1. Import regulatory updates from subscribed sources or feeds.
2. Schedule AI Agent to run daily or upon new updates.
3. Use AI to analyze updates and identify implications for internal policies.
4. Output a summary of relevant updates and policy recommendations.
5. Notify the compliance team of critical changes for action.

***

### **Trademark Monitoring for Infringements**

Use an AI Agent to monitor trademark filings, identifying potential infringements.

1. Import trademark filings from databases or monitoring tools.
2. Schedule AI Agent to run periodically (e.g., weekly).
3. Use AI to compare filings against existing trademarks for similarities.
4. Output flagged potential infringements to the IP team dashboard.
5. Notify the intellectual property team of identified risks.

***

### **Case Law Summarization**

Use an AI Agent to generate summaries of case law, providing attorneys with quick insights for reference in briefs.

1. Import case law documents.
2. Schedule AI Agent to run during legal research phases.
3. Use AI to extract and summarize key rulings, arguments, and precedents.
4. Output summaries to the legal research tool.
5. Notify attorneys with consolidated case law insights.

***

### **Legal Risk Tracking Across Jurisdictions**

Use an AI Agent to track emerging legal risks across jurisdictions, informing proactive strategy adjustments.

1. Import data sources on legal risks (e.g., news, regulatory updates).
2. Schedule AI Agent to run continuously or at regular intervals.
3. Use AI to analyze trends and identify jurisdiction-specific risks.
4. Output risk analysis to the risk assessment dashboard.
5. Notify the risk team with actionable insights for strategic adjustments.

</details>

<details>

<summary>AI Agents for Product Management</summary>

### **User Feedback Analysis and Feature Prioritization**

Use an AI Agent to analyze user feedback and prioritize feature requests based on customer sentiment and impact.

1. Import user feedback data (e.g., surveys, reviews, support tickets).
2. Schedule AI Agent to run periodically or after feedback collection campaigns.
3. Use AI to analyze sentiment and categorize feature requests by impact.
4. Output a prioritized list of feature requests to the product management dashboard.
5. Notify the product team with recommendations for the next sprint.

***

### **User Journey Simulation**

Use an AI Agent to simulate user journeys, identifying potential friction points in the customer experience.

1. Import user flow data (e.g., click paths, interaction logs).
2. Schedule AI Agent to run during development or before feature launches.
3. Use AI to simulate user interactions and detect friction points.
4. Output a list of flagged issues to the product development team.
5. Notify the team with suggestions for experience optimization.

***

### **Feature Dependency Evaluation for Roadmap Planning**

Use an AI Agent to evaluate feature dependencies, helping prioritize releases effectively.

1. Import feature requests and dependency information.
2. Schedule AI Agent to run during roadmap planning sessions.
3. Use AI to assess dependencies and suggest release order.
4. Output a dependency-aware roadmap to the planning tool.
5. Notify the roadmap team with optimized release priorities.

***

### **Product Usage Pattern Analysis**

Use an AI Agent to identify patterns in product usage data, spotting opportunities for growth and expansion.

1. Import product usage data (e.g., session logs, feature engagement metrics).
2. Schedule AI Agent to run weekly or monthly.
3. Use AI to identify trends, high-value features, and gaps in usage.
4. Output insights to the growth team dashboard.
5. Notify the growth team with recommendations for feature promotion or expansion.

***

### **Competitor Benchmarking for Feature Development**

Use an AI Agent to benchmark competitors’ product updates, staying competitive in feature development.

1. Import competitor product update data (e.g., release notes, news).
2. Schedule AI Agent to run quarterly or after major competitor announcements.
3. Use AI to analyze updates and compare features to your product.
4. Output benchmarking insights to the product insights dashboard.
5. Notify the team with recommendations for competitive feature development.

***

### **User Testing Insights Summarization**

Use an AI Agent to summarize user testing results, accelerating insights for design improvements.

1. Import user testing session data (e.g., feedback, interaction logs, survey responses).
2. Schedule AI Agent to run after testing sessions conclude.
3. Use AI to extract key themes and actionable insights from results.
4. Output summarized insights to the UX research dashboard.
5. Notify the UX team with recommendations for design iterations.

</details>

<details>

<summary>AI Agents for Public Relations</summary>

### **Sentiment Monitoring During PR Incidents**

Use an AI Agent to monitor sentiment during PR incidents, alerting teams to spikes.

1. Import real-time social media and news data.
2. Schedule AI Agent to run continuously during PR incidents.
3. Use AI to analyze sentiment trends and detect spikes or shifts.
4. Output sentiment reports to the crisis management dashboard.
5. Notify the crisis management team of critical changes in sentiment.

***

### **Media Mention Summarization for Public Engagements**

Use an AI Agent to summarize relevant media mentions, preparing execs for public engagements.

1. Import recent media mentions (e.g., articles, interviews, social mentions).
2. Schedule AI Agent to run ahead of executive engagements.
3. Use AI to extract and summarize key themes and mentions.
4. Output summaries to the public affairs team dashboard.
5. Notify execs with concise briefing notes.

***

### **Social Media Feedback Monitoring and Categorization**

Use an AI Agent to monitor and categorize feedback from social media channels, supporting brand reputation management.

1. Import social media feedback data (e.g., comments, mentions, reviews).
2. Schedule AI Agent to run periodically or in real-time.
3. Use AI to categorize feedback by themes (e.g., positive, negative, neutral).
4. Output categorized feedback to the brand reputation dashboard.
5. Notify the reputation team with insights for actionable responses.

***

### **Press Release Draft Generation**

Use an AI Agent to generate press release drafts, streamlining the review and approval process.

1. Import press release requirements (e.g., topics, key messaging).
2. Schedule AI Agent to run during PR content planning.
3. Use AI to draft press releases based on input criteria.
4. Output drafts to the content team’s editing platform.
5. Notify the PR team when drafts are ready for review.

***

### **Talking Points from Media Coverage Analysis**

Use an AI Agent to analyze recent media coverage, providing talking points for interviews.

1. Import recent media coverage data (e.g., articles, interviews).
2. Schedule AI Agent to run before interview preparation sessions.
3. Use AI to extract relevant insights and generate talking points.
4. Output talking points to the spokesperson team’s briefing system.
5. Notify team members with suggested points for use in interviews.

***

### **Competitor Publicity and Media Opportunity Tracking**

Use an AI Agent to track competitor publicity and identify media partnership opportunities.

1. Import competitor media activity data (e.g., press releases, mentions).
2. Schedule AI Agent to run quarterly or after significant competitor campaigns.
3. Use AI to analyze competitor strategies and identify potential media partnerships.
4. Output insights to the PR strategy team’s dashboard.
5. Notify the strategy team with recommendations for media outreach.

</details>

## Conclusion

The examples we've explored are just a small glimpse into what’s possible with MindStudio. From automating routine tasks to crafting sophisticated AI-powered solutions, the possibilities are endless. MindStudio puts the power of AI at your fingertips, allowing you to design workflows that are as unique as your bespoke business needs.

These examples are a starting point—what you build is entirely up to you. The possibilities are vast, and the direction you take is yours to define. With MindStudio, you have the flexibility and capability to build exactly what your business needs to thrive in the age of AI.


# Usage Pricing Reference

MindStudio usage pricing for models and services

**Last updated:** Oct 8, 2025

## What is Usage Pricing?

MindStudio gives you access to **over 200 different AI models and services**, and the usage of these AI models is metered.

Usage pricing refers to the underlying cost of running AI models, which is passed through at cost. You only pay for the AI models and services your Agents use—no markup from MindStudio.

## AI Models Reference

### Amazon

<table data-full-width="true"><thead><tr><th>Model Name</th><th width="150.16143798828125">Input Price</th><th width="150.25">Output Price</th><th width="160.1839599609375">Context Length</th><th width="159.95318603515625">Max Output Size</th></tr></thead><tbody><tr><td>Amazon Nova Lite</td><td>$0.06/MTok</td><td>$0.24/MTok</td><td>300,000 Tokens</td><td>5,000 Tokens</td></tr><tr><td>Amazon Nova Micro</td><td>$0.04/MTok</td><td>$0.14/MTok</td><td>128,000 Tokens</td><td>5,000 Tokens</td></tr><tr><td>Amazon Nova Pro</td><td>$0.80/MTok</td><td>$3.20/MTok</td><td>300,000 Tokens</td><td>5,000 Tokens</td></tr></tbody></table>

### Anthropic

<table data-full-width="true"><thead><tr><th>Model Name</th><th width="149.57464599609375">Input Price</th><th width="149.8255615234375">Output Price</th><th width="160.1180419921875">Context Length</th><th width="160.12408447265625">Max Output Size</th></tr></thead><tbody><tr><td>Claude 2 (Bedrock)</td><td>$8.00/MTok</td><td>$24.00/MTok</td><td>200,000 Tokens</td><td>4,096 Tokens</td></tr><tr><td>Claude 3 Haiku</td><td>$0.25/MTok</td><td>$1.25/MTok</td><td>200,000 Tokens</td><td>4,096 Tokens</td></tr><tr><td>Claude 3 Haiku (Bedrock)</td><td>$0.25/MTok</td><td>$1.25/MTok</td><td>200,000 Tokens</td><td>4,096 Tokens</td></tr><tr><td>Claude 3.5 Haiku (Bedrock)</td><td>$0.80/MTok</td><td>$4.00/MTok</td><td>200,000 Tokens</td><td>4,096 Tokens</td></tr><tr><td>Claude 3 Opus</td><td>$15.00/MTok</td><td>$75.00/MTok</td><td>200,000 Tokens</td><td>4,096 Tokens</td></tr><tr><td>Claude 3 Opus (BedRock)</td><td>$15.00/MTok</td><td>$75.00/MTok</td><td>200,000 Tokens</td><td>4,096 Tokens</td></tr><tr><td>Claude 3 Sonnet</td><td>$3.00/MTok</td><td>$15.00/MTok</td><td>200,000 Tokens</td><td>4,096 Tokens</td></tr><tr><td>Claude 3 Sonnet (Bedrock)</td><td>$3.00/MTok</td><td>$15.00/MTok</td><td>200,000 Tokens</td><td>4,096 Tokens</td></tr><tr><td>Claude 3.5 Sonnet</td><td>$3.00/MTok</td><td>$15.00/MTok</td><td>200,000 Tokens</td><td>8,192 Tokens</td></tr><tr><td>Claude 3.5 Sonnet (Bedrock)</td><td>$3.00/MTok</td><td>$15.00/MTok</td><td>200,000 Tokens</td><td>4,096 Tokens</td></tr><tr><td>Claude 3.5 Sonnet (20240620)</td><td>$3.00/MTok</td><td>$15.00/MTok</td><td>200,000 Tokens</td><td>8,192 Tokens</td></tr><tr><td>Claude 3.5 Sonnet v2 (Bedrock)</td><td>$3.00/MTok</td><td>$15.00/MTok</td><td>200,000 Tokens</td><td>8,192 Tokens</td></tr><tr><td>Claude 4 Sonnet</td><td>$3.00/MTok</td><td>$15.00/MTok</td><td>200,000 Tokens</td><td>64,000 Tokens</td></tr><tr><td>Claude 4.5 Sonnet</td><td>$3.00/MTok</td><td>$15.00/MTok</td><td>200,000 Tokens</td><td>64,000 Tokens</td></tr><tr><td>Claude 4.6 Sonnet</td><td>$3.00/MTok</td><td>$15.00/MTok</td><td>1,000,000 tokens</td><td>128,000 tokens</td></tr><tr><td>Claude Instant (Bedrock)</td><td>$0.80/MTok</td><td>$2.40/MTok</td><td>200,000 Tokens</td><td>4,096 Tokens</td></tr><tr><td>Claude 4 Opus</td><td>$15.00/MTok</td><td>$75.00/MTok</td><td>200,000 Tokens</td><td>32,000 Tokens</td></tr><tr><td>Claude 4.1 Opus</td><td>$15.00/MTok</td><td>$75.00/MTok</td><td>200,000 Tokens</td><td>32,000 Tokens</td></tr><tr><td>Claude 4.5 Opus</td><td>$5.00/MTok</td><td>$25.00/MTok</td><td>200,000 Tokens</td><td>64,000 Tokens</td></tr><tr><td>Claude 4.6 Opus</td><td>$5.00/MTok</td><td>$25.00/MTok</td><td>1,000,000 tokens</td><td>128,000 tokens</td></tr><tr><td>Claude [Deprecated]</td><td>$8.00/MTok</td><td>$24.00/MTok</td><td>200,000 Tokens</td><td>4,096 Tokens</td></tr><tr><td>Claude 2 [Deprecated]</td><td>$8.00/MTok</td><td>$24.00/MTok</td><td>200,000 Tokens</td><td>4,096 Tokens</td></tr><tr><td>Claude 3.5 Haiku [Deprecated]</td><td>$0.80/MTok</td><td>$4.00/MTok</td><td>200,000 Tokens</td><td>8,192 Tokens</td></tr><tr><td>Claude 3.7 Sonnet [Deprecated]</td><td>$3.00/MTok</td><td>$15.00/MTok</td><td>200,000 Tokens</td><td>128,000 Tokens</td></tr></tbody></table>

### Cohere

<table data-full-width="true"><thead><tr><th>Model Name</th><th width="150.05291748046875">Input Price</th><th width="149.950439453125">Output Price</th><th width="159.6676025390625">Context Length</th><th width="159.53033447265625">Max Output Size</th></tr></thead><tbody><tr><td>Command (Bedrock)</td><td>$1.50/MTok</td><td>$2.00/MTok</td><td>4,000 Tokens</td><td>4,000 Tokens</td></tr><tr><td>Command Light (Bedrock)</td><td>$0.30/MTok</td><td>$0.60/MTok</td><td>4,000 Tokens</td><td>4,000 Tokens</td></tr><tr><td>Command R (Bedrock)</td><td>$0.50/MTok</td><td>$1.50/MTok</td><td>128,000 Tokens</td><td>4,000 Tokens</td></tr><tr><td>Command R</td><td>$0.15/MTok</td><td>$0.60/MTok</td><td>128,000 Tokens</td><td>4,000 Tokens</td></tr><tr><td>Command R+ (Bedrock)</td><td>$3.00/MTok</td><td>$15.00/MTok</td><td>128,000 Tokens</td><td>4,000 Tokens</td></tr><tr><td>Command R+</td><td>$2.50/MTok</td><td>$10.00/MTok</td><td>128,000 Tokens</td><td>4,000 Tokens</td></tr></tbody></table>

### DeepSeek

<table data-full-width="true"><thead><tr><th>Model Name</th><th width="149.908935546875">Output Price</th><th width="149.50604248046875">Input Price</th><th width="160.0582275390625">Context Length</th><th width="160.30535888671875">Max Output Size</th></tr></thead><tbody><tr><td>DeepSeek-R1</td><td>$2.19/MTok</td><td>$0.55/MTok</td><td>64,000 Tokens</td><td>8,000 Tokens</td></tr><tr><td>DeepSeek-V3</td><td>$1.10/MTok</td><td>$0.27/MTok</td><td>64,000 Tokens</td><td>8,000 Tokens</td></tr><tr><td>DeepSeek-V3 (DeepInfra)</td><td>$0.89/MTok</td><td>$0.40/MTok</td><td>64,000 Tokens</td><td>8,000 Tokens</td></tr></tbody></table>

### Google

<table data-full-width="true"><thead><tr><th>Model Name</th><th width="150.09637451171875">Input Price</th><th width="149.625">Output Price</th><th width="160.609375">Context Length</th><th width="159.94000244140625">Max Output Size</th></tr></thead><tbody><tr><td>Gemini 2.0 Flash</td><td>$0.15/MTok</td><td>$0.60/MTok</td><td>1,000,000 Tokens</td><td>8,192 Tokens</td></tr><tr><td>Gemini 2.0 Flash-Lite</td><td>$0.07/MTok</td><td>$0.30/MTok</td><td>1,000,000 Tokens</td><td>8,192 Tokens</td></tr><tr><td>Gemini 2.5 Flash</td><td>$0.15/MTok</td><td>$0.60/MTok</td><td>1,000,000 Tokens</td><td>65,536 Tokens</td></tr><tr><td>Gemini 2.5 Flash Lite</td><td>$0.10/MTok</td><td>$0.40/MTok</td><td>1,000,000 Tokens</td><td>65,535 Tokens</td></tr><tr><td>Gemini 2.5 Pro</td><td>$2.50/MTok</td><td>$15.00/MTok</td><td>1,000,000 Tokens</td><td>65,536 Tokens</td></tr><tr><td>Gemini 3 Flash</td><td>$0.50/MTok</td><td>$3.00/MTok</td><td>1,000,000 Tokens</td><td>65,535 Tokens</td></tr><tr><td>Gemini 3</td><td>$2.00/MTok</td><td>$12.00/MTok</td><td>1,000,000 Tokens</td><td>65,536 Tokens</td></tr><tr><td>Gemma 2 (Groq)</td><td>$0.20/MTok</td><td>$0.20/MTok</td><td>8,200 Tokens</td><td>8,192 Tokens</td></tr><tr><td>Gemma 3.2 (DeepInfra)</td><td>$0.10/MTok</td><td>$0.20/MTok</td><td>128,000 Tokens</td><td>8,000 Tokens</td></tr><tr><td>Gemini Pro [DEPRECATED]</td><td>$0.13/MTok</td><td>$0.38/MTok</td><td>1,000,000 Tokens</td><td>8,192 Tokens</td></tr><tr><td>Gemini 1.5 Flash [DEPRECATED]</td><td>$0.04/MTok</td><td>$0.15/MTok</td><td>1,000,000 Tokens</td><td>8,192 Tokens</td></tr><tr><td>Gemini 1.5 Pro [DEPRECATED]</td><td>$0.63/MTok</td><td>$2.50/MTok</td><td>2,000,000 Tokens</td><td>8,192 Tokens</td></tr><tr><td>PaLM 2 [DEPRECATED]</td><td>$0.25/MTok</td><td>$0.50/MTok</td><td>--</td><td>--</td></tr></tbody></table>

### Meta

<table data-full-width="true"><thead><tr><th>Model Name</th><th width="150.14410400390625">Input Price</th><th width="149.6207275390625">Output Price</th><th width="160.296875">Context Length</th><th width="159.69683837890625">Max Output Size</th></tr></thead><tbody><tr><td>Llama 3 70B (Groq)</td><td>$0.59/MTok</td><td>$0.79/MTok</td><td>8,000 Tokens</td><td>8,192 Tokens</td></tr><tr><td>Llama 3 70B Instruct (DeepInfra)</td><td>$0.10/MTok</td><td>$0.10/MTok</td><td>8,000 Tokens</td><td>8,000 Tokens</td></tr><tr><td>Llama 3 70B Instruct (Bedrock)</td><td>$0.10/MTok</td><td>$0.10/MTok</td><td>8,000 Tokens</td><td>8,000 Tokens</td></tr><tr><td>Llama 3 8B (Groq)</td><td>$0.05/MTok</td><td>$0.08/MTok</td><td>8,000 Tokens</td><td>8,000 Tokens</td></tr><tr><td>Llama 3 8B Instruct (DeepInfra)</td><td>$0.30/MTok</td><td>$0.60/MTok</td><td>8,000 Tokens</td><td>8,000 Tokens</td></tr><tr><td>Llama 3 8B Instruct (Bedrock)</td><td>$0.30/MTok</td><td>$0.60/MTok</td><td>8,000 Tokens</td><td>8,000 Tokens</td></tr><tr><td>Llama 3.1 405B Instruct (DeepInfra)</td><td>$0.80/MTok</td><td>$0.80/MTok</td><td>128,000 Tokens</td><td>8,000 Tokens</td></tr><tr><td>Llama 3.1 405B Instruct (Bedrock)</td><td>$2.40/MTok</td><td>$2.40/MTok</td><td>128,000 Tokens</td><td>8,000 Tokens</td></tr><tr><td>Llama 3.1 70B Instruct (DeepInfra)</td><td>$0.23/MTok</td><td>$0.40/MTok</td><td>128,000 Tokens</td><td>8,000 Tokens</td></tr><tr><td>Llama 3.1 70B Instruct (Bedrock)</td><td>$0.72/MTok</td><td>$0.72/MTok</td><td>128,000 Tokens</td><td>8,000 Tokens</td></tr><tr><td>Llama 3.1 8B Instant (Groq)</td><td>$0.05/MTok</td><td>$0.08/MTok</td><td>128,000 Tokens</td><td>8,000 Tokens</td></tr><tr><td>Llama 3.1 8B Instruct (DeepInfra)</td><td>$0.029/MTok</td><td>$0.05/MTok</td><td>128,000 Tokens</td><td>8,000 Tokens</td></tr><tr><td>Llama 3.1 8B Instruct (Bedrock)</td><td>$0.22/MTok</td><td>$0.22/MTok</td><td>128,000 Tokens</td><td>8,000 Tokens</td></tr><tr><td>Llama 3.2 11B Instruct (Bedrock)</td><td>$0.16/MTok</td><td>$0.16/MTok</td><td>128,000 Tokens</td><td>8,000 Tokens</td></tr><tr><td>Llama 3.2 1B Instruct (Bedrock)</td><td>$0.10/MTok</td><td>$0.10/MTok</td><td>128,000 Tokens</td><td>8,000 Tokens</td></tr><tr><td>Llama 3.2 3B Instruct (Bedrock)</td><td>$0.15/MTok</td><td>$0.15/MTok</td><td>128,000 Tokens</td><td>8,000 Tokens</td></tr><tr><td>Llama 3.2 90B Instruct (Bedrock)</td><td>$0.72/MTok</td><td>$0.72/MTok</td><td>128,000 Tokens</td><td>8,000 Tokens</td></tr><tr><td>Llama 3.3 70B Versatile (Groq)</td><td>$0.59/MTok</td><td>$0.79/MTok</td><td>128,000 Tokens</td><td>32,768 Tokens</td></tr><tr><td>Llama 4 Maverick (DeepInfra)</td><td>$0.20/MTok</td><td>$0.60/MTok</td><td>130,000 Tokens</td><td>60,000 Tokens</td></tr><tr><td>Llama 4 Scout (Groq)</td><td>$0.11/MTok</td><td>$0.34/MTok</td><td>130,000 Tokens</td><td>8,000 Tokens</td></tr><tr><td>Llama 4 Scout (DeepInfra)</td><td>$0.10/MTok</td><td>$0.30/MTok</td><td>130,000 Tokens</td><td>60,000 Tokens</td></tr></tbody></table>

### Mistral

<table data-full-width="true"><thead><tr><th>Model Name</th><th width="150.00518798828125">Input Price</th><th width="150.2890625">Output Price</th><th width="160.2362060546875">Context Length</th><th width="160.00518798828125">Max Output Size</th></tr></thead><tbody><tr><td>Mistral 7B Instruct (DeepInfra)</td><td>$0.029/MTok</td><td>$0.055/MTok</td><td>4,100 Tokens</td><td>2,500 Tokens</td></tr><tr><td>Mistral 7B Instruct (Bedrock)</td><td>$0.15/MTok</td><td>$0.20/MTok</td><td>4,100 Tokens</td><td>2,500 Tokens</td></tr><tr><td>Mistral Codestral</td><td>$0.20/MTok</td><td>$0.60/MTok</td><td>32,000 Tokens</td><td>16,000 Tokens</td></tr><tr><td>Mistral Codestral Mamba</td><td>$2.50/MTok</td><td>$2.50/MTok</td><td>128,000 Tokens</td><td>16,000 Tokens</td></tr><tr><td>Mistral Large 2</td><td>$2.00/MTok</td><td>$6.00/MTok</td><td>128,000 Tokens</td><td>16,000 Tokens</td></tr><tr><td>Mistral Large 24.02 (Bedrock)</td><td>$4.00/MTok</td><td>$12.00/MTok</td><td>128,000 Tokens</td><td>16,000 Tokens</td></tr><tr><td>Mistral Large 24.07 (Bedrock)</td><td>$2.00/MTok</td><td>$6.00/MTok</td><td>128,000 Tokens</td><td>16,000 Tokens</td></tr><tr><td>Mistral Large 3</td><td>$0.50/MTok</td><td>$1.50/MTok</td><td>256,000 Tokens</td><td>16,000 Tokens</td></tr><tr><td>Mistral Medium 3</td><td>$0.40/MTok</td><td>$2.00/MTok</td><td>128,000 Tokens</td><td>16,000 Tokens</td></tr><tr><td>Ministral 3 14B</td><td>$0.20/MTok</td><td>$0.20/MTok</td><td>256,000 Tokens</td><td>16,000 Tokens</td></tr><tr><td>Ministral 3 8B</td><td>$0.15/MTok</td><td>$0.15/MTok</td><td>256,000 Tokens</td><td>16,000 Tokens</td></tr><tr><td>Ministral 3 3B</td><td>$0.10/MTok</td><td>$0.10/MTok</td><td>556,000 Tokens</td><td>16,000 Tokens</td></tr><tr><td>Mistral Nemo</td><td>$0.15/MTok</td><td>$0.15/MTok</td><td>128,000 Tokens</td><td>64,000 Tokens</td></tr><tr><td>Mistral Small 24.02 (Bedrock)</td><td>$1.00/MTok</td><td>$3.00/MTok</td><td>128,000 Tokens</td><td>16,000 Tokens</td></tr><tr><td>Mistral Small 3.1 (25.03)</td><td>$0.10/MTok</td><td>$0.30/MTok</td><td>128,000 Tokens</td><td>16,000 Tokens</td></tr><tr><td>Mixtral 8x7B Instruct (Bedrock)</td><td>$0.45/MTok</td><td>$0.70/MTok</td><td>4,100 Tokens</td><td>2,500 Tokens</td></tr><tr><td>Mixtral 8x22B Instruct [DEPRECATED]</td><td>$0.50/MTok</td><td>$0.50/MTok</td><td>--</td><td>--</td></tr><tr><td>Mixtral 8x7B (Groq) [DEPRECATED]</td><td>$0.239/MTok</td><td>$0.239/MTok</td><td>--</td><td>--</td></tr><tr><td></td><td></td><td></td><td></td><td></td></tr></tbody></table>

### OpenAI

<table data-full-width="true"><thead><tr><th>Model Name</th><th width="150.3046875">Input Price</th><th width="150.3585205078125">Output Price</th><th width="159.5113525390625">Context Length</th><th width="159.887939453125">Max Output Size</th></tr></thead><tbody><tr><td>GPT-4</td><td>$30.00/MTok</td><td>$60.00/MTok</td><td>8,200 Tokens</td><td>5,000 Tokens</td></tr><tr><td>GPT-4 Turbo</td><td>$10.00/MTok</td><td>$30.00/MTok</td><td>128,000 Tokens</td><td>4,096 Tokens</td></tr><tr><td>GPT-4.1</td><td>$2.00/MTok</td><td>$8.00/MTok</td><td>200,000 Tokens</td><td>100,000 Tokens</td></tr><tr><td>GPT-4.1 Mini</td><td>$0.40/MTok</td><td>$1.60/MTok</td><td>1,000,000 Tokens</td><td>32,768 Tokens</td></tr><tr><td>GPT-4.1 Nano</td><td>$0.10/MTok</td><td>$0.40/MTok</td><td>1,000,000 Tokens</td><td>32,768 Tokens</td></tr><tr><td>GPT-4o</td><td>$2.50/MTok</td><td>$10.00/MTok</td><td>128,000 Tokens</td><td>4,096 Tokens</td></tr><tr><td>GPT-4o Mini</td><td>$0.15/MTok</td><td>$0.60/MTok</td><td>128,000 Tokens</td><td>16,383 Tokens</td></tr><tr><td>GPT-5</td><td>$1.25/MTok</td><td>$10.00/MTok</td><td>400,000 Tokens</td><td>128,000 Tokens</td></tr><tr><td>GPT-5 Chat</td><td>$1.25/MTok</td><td>$10.00/MTok</td><td>400,000 Tokens</td><td>16,383 Tokens</td></tr><tr><td>GPT-5 Mini</td><td>$0.25/MTok</td><td>$2.00/MTok</td><td>400,000 Tokens</td><td>128,000 Tokens</td></tr><tr><td>GPT-5 Nano</td><td>$0.05/MTok</td><td>$0.40/MTok</td><td>400,000 Tokens</td><td>128,000 Tokens</td></tr><tr><td>GPT-5.1</td><td>$1.25/MTok</td><td>$10.00/MTok</td><td>400,000 Tokens</td><td>128,000 Tokens</td></tr><tr><td>GPT-5.2</td><td>$21.00/MTok</td><td>$168.00/MTok</td><td>400,000 Tokens</td><td>256,00 Tokens</td></tr><tr><td>GPT OSS 120B (Groq)</td><td>$0.15/MTok</td><td>$0.75/MTok</td><td>131,072 Tokens</td><td>32,768 Tokens</td></tr><tr><td>GPT OSS 20B (Groq)</td><td>$0.10/MTok</td><td>$0.75/MTok</td><td>131,072 Tokens</td><td>32,768 Tokens</td></tr><tr><td>o1</td><td>$15.00/MTok</td><td>$60.00/MTok</td><td>200,000 Tokens</td><td>100,000 Tokens</td></tr><tr><td>o1-mini</td><td>$3.00/MTok</td><td>$12.00/MTok</td><td>128,000 Tokens</td><td>65,536 Tokens</td></tr><tr><td>o1-pro</td><td>$150.00/MTok</td><td>$600.00/MTok</td><td>200,000 Tokens</td><td>100,000 Tokens</td></tr><tr><td>o3</td><td>$10.00/MTok</td><td>$40.00/MTok</td><td>200,000 Tokens</td><td>100,000 Tokens</td></tr><tr><td>o3-mini</td><td>$1.10/MTok</td><td>$4.40/MTok</td><td>200,000 Tokens</td><td>100,000 Tokens</td></tr><tr><td>o3-pro</td><td>$2.00/MTok</td><td>$8.00/MTok</td><td>200,000 Tokens</td><td>100,000 Tokens</td></tr><tr><td>o4-mini</td><td>$1.10/MTok</td><td>$4.40/MTok</td><td>200,000 Tokens</td><td>100,000 Tokens</td></tr><tr><td>GPT-3.5 Turbo [DEPRECATED]</td><td>$1.00/MTok</td><td>$2.00/MTok</td><td>--</td><td>--</td></tr><tr><td>GPT-3.5 Turbo Instruct [DEPRECATED]</td><td>$1.50/MTok</td><td>$2.00/MTok</td><td>--</td><td>--</td></tr><tr><td>GPT-4.5 [Deprecated]</td><td>$75.00/MTok</td><td>$150.00/MTok</td><td>128,000 Tokens</td><td>8,000 Tokens</td></tr></tbody></table>

### Perplexity

<table data-full-width="true"><thead><tr><th>Model Name</th><th width="149.61456298828125">Input Price</th><th width="150.095458984375">Output Price</th><th width="159.8323974609375">Context Length</th><th width="159.568603515625">Max Output Size</th></tr></thead><tbody><tr><td>Sonar</td><td>$1.00/MTok</td><td>$1.00/MTok</td><td>127,000 Tokens</td><td>32,768 Tokens</td></tr><tr><td>Sonar Deep Research</td><td>$2.00/MTok</td><td>$8.00/MTok</td><td>127,000 Tokens</td><td>8,000 Tokens</td></tr><tr><td>Sonar Large Online</td><td>$1.00/MTok</td><td>$1.00/MTok</td><td>127,000 Tokens</td><td>28,000 Tokens</td></tr><tr><td>Sonar Pro</td><td>$3.00/MTok</td><td>$15.00/MTok</td><td>200,000 Tokens</td><td>8,000 Tokens</td></tr><tr><td>Sonar Reasoning Pro</td><td>$2.00/MTok</td><td>$8.00/MTok</td><td>127,000 Tokens</td><td>8,000 Tokens</td></tr><tr><td>Sonar Large Chat [Deprecated]</td><td>$1.00/MTok</td><td>$1.00/MTok</td><td>127,000 Tokens</td><td>32,768 Tokens</td></tr><tr><td>Sonar Small Chat [Deprecated]</td><td>$0.20/MTok</td><td>$0.20/MTok</td><td>127,000 Tokens</td><td>32,768 Tokens</td></tr><tr><td>Sonar Small Online [Deprecated]</td><td>$0.20/MTok</td><td>$0.20/MTok</td><td>127,000 Tokens</td><td>28,000 Tokens</td></tr><tr><td>Sonar Reasoning [Deprecated]</td><td>$1.00/MTok</td><td>$5.00/MTok</td><td>127,000 Tokens</td><td>32,768 Tokens</td></tr></tbody></table>

### Qwen

<table data-full-width="true"><thead><tr><th>Model Name</th><th width="149.51910400390625">Input Price</th><th width="150.3038330078125">Output Price</th><th width="160.240478515625">Context Length</th><th width="160.37664794921875">Max Output Size</th></tr></thead><tbody><tr><td>Qwen3-235B-A22B (DeepInfra)</td><td>$1.50/MTok</td><td>$0.60/MTok</td><td>128,000 Tokens</td><td>128,000 Tokens</td></tr></tbody></table>

### Reka

<table data-full-width="true"><thead><tr><th>Model Name</th><th width="149.51910400390625">Input Price</th><th width="150.3038330078125">Output Price</th><th width="160.240478515625">Context Length</th><th width="160.37664794921875">Max Output Size</th></tr></thead><tbody><tr><td>Reka Core</td><td>$2.00/MTok</td><td>$2.00/MTok</td><td>128,000 Tokens</td><td>128,000 Tokens</td></tr><tr><td>Reka Edge</td><td>$0.10/MTok</td><td>$0.10/MTok</td><td>128,000 Tokens</td><td>128,000 Tokens</td></tr><tr><td>Reka Flash</td><td>$0.20/MTok</td><td>$0.80/MTok</td><td>128,000 Tokens</td><td>128,000 Tokens</td></tr></tbody></table>

### X.ai

<table data-full-width="true"><thead><tr><th>Model Name</th><th width="149.61895751953125">Input Price</th><th width="150.0738525390625">Output Price</th><th width="160.2535400390625">Context Length</th><th width="160.23590087890625">Max Output Size</th></tr></thead><tbody><tr><td>Grok 3</td><td>$3.00/MTok</td><td>$15.00/MTok</td><td>131,000 Tokens</td><td>8,192 Tokens</td></tr><tr><td>Grok 3 Fast</td><td>$5.00/MTok</td><td>$25.00/MTok</td><td>131,000 Tokens</td><td>8,192 Tokens</td></tr><tr><td>Grok 3 Mini</td><td>$0.30/MTok</td><td>$0.50/MTok</td><td>131,000 Tokens</td><td>8,192 Tokens</td></tr><tr><td>Grok 3 Mini Fast</td><td>$0.60/MTok</td><td>$4.00/MTok</td><td>131,000 Tokens</td><td>8,192 Tokens</td></tr><tr><td>Grok 4</td><td>$3.00/MTok</td><td>$15.00/MTok</td><td>256,000 Tokens</td><td>256,000 Tokens</td></tr><tr><td>Grok 4 Fast</td><td>$0.20/MTok</td><td>$0.50/MTok</td><td>2,000,000 Tokens</td><td>2,000,000 Tokens</td></tr></tbody></table>

### Image Models

<table data-full-width="true"><thead><tr><th>Provider</th><th width="280.9166259765625">Model Name</th><th width="349.8602294921875">Price</th><th>Prompt Length</th></tr></thead><tbody><tr><td>Amazon</td><td>Amazon Nova Canvas</td><td>1024x1024 standard - $0.04 / image<br>1024x1024 premium - $0.06 / image<br>2048x2048 standard - $0.06 / image<br>2048x2048 premium - $0.08 / image</td><td>1,000 Tokens</td></tr><tr><td>Black Forest Labs</td><td>FLUX 1.1 [pro]</td><td>$0.06 / image</td><td>10,000 Tokens</td></tr><tr><td>Black Forest Labs</td><td>FLUX 1.1 [pro] Ultra</td><td>$0.06 / image</td><td>10,000 Tokens</td></tr><tr><td>Black Forest Labs</td><td>FLUX 1.1 Kontext [pro]</td><td>$0.04 / image</td><td>10,000 Tokens</td></tr><tr><td>Black Forest Labs</td><td>FLUX 1.1 Kontext [max]</td><td>$0.08 / image</td><td>10,000 Tokens</td></tr><tr><td>Google</td><td>Gemini 2.5 Flash (nano banana)</td><td>$0.039 / image</td><td>1,048,576 Tokens</td></tr><tr><td>Google</td><td>Gemini 3 Pro Image (nano banana pro)</td><td>$0.13 / image</td><td></td></tr><tr><td>Google</td><td>Imagen 3</td><td>$0.05 / image</td><td>10,000 Tokens</td></tr><tr><td>Google</td><td>Imagen 3 Fast</td><td>$0.025 / image</td><td>10,000 Tokens</td></tr><tr><td>Google</td><td>Imagen 4 Fast</td><td>$0.02 / image</td><td>10,000 Tokens</td></tr><tr><td>Google</td><td>Imagen 4 Ultra</td><td>$0.075 / image</td><td>10,000 Tokens</td></tr><tr><td>Ideogram</td><td>Ideogram Upscale</td><td>$0.06 / image</td><td>10,000 Tokens</td></tr><tr><td>Ideogram</td><td>Ideogram V1</td><td>$0.06 / image</td><td>10,000 Tokens</td></tr><tr><td>Ideogram</td><td>Ideogram V1 Remix</td><td>$0.06 / image</td><td>10,000 Tokens</td></tr><tr><td>Ideogram</td><td>Ideogram V2</td><td>$0.08 / image</td><td>10,000 Tokens</td></tr><tr><td>Ideogram</td><td>Ideogram V2 Remix</td><td>$0.08 / image</td><td>10,000 Tokens</td></tr><tr><td>Ideogram</td><td>Ideogram V3</td><td>$0.08 / image</td><td>10,000 Tokens</td></tr><tr><td>Ideogram</td><td>Ideogram V3 Remix</td><td>$0.08 / image</td><td>10,000 Tokens</td></tr><tr><td>Luma Labs</td><td>Photon 1</td><td>$0.02 / image</td><td>1,000 Tokens</td></tr><tr><td>Luma Labs</td><td>Photon 1 Flash</td><td>$0.00 / image</td><td>1,000 Tokens</td></tr><tr><td>OpenAI</td><td>DALL-E 2</td><td>256x256 standard — $0.016 / image<br>512x512 standard — $0.018 / image<br>1024x1024 standard — $0.02 / image</td><td>1,000 Tokens</td></tr><tr><td>OpenAI</td><td>DALL-E 3</td><td>1024x1024 standard — $0.04 / image<br>1024x1792 standard — $0.08 / image<br>1792x1024 standard — $0.08 / image<br>1024x1024 HD — $0.08 / image<br>1024x1792 HD — $0.12 / image<br>1792x1024 HD — $0.12 / image</td><td>4,000 Tokens</td></tr><tr><td>OpenAI</td><td>GPT Image 1</td><td>$10.29 / MTok input<br>$41.16 / MTok output</td><td>4,000 Tokens</td></tr><tr><td>OpenAI</td><td>GPT Image 1.5</td><td>$10.29 / MTok input<br>$41.16 / MTok output</td><td>4,000 Tokens</td></tr><tr><td>Stability</td><td>Stable Diffusion 3</td><td>Medium — $0.035 / image<br>Large Turbo — $0.04 / image<br>Large — $0.065 / image</td><td>10,000 Tokens</td></tr><tr><td>Stability</td><td>Stable Diffusion 3 (Bedrock)</td><td>$0.08 / image</td><td>10,000 Tokens</td></tr><tr><td>Stability</td><td>Stable Image Core</td><td>$0.03 / image</td><td>10,000 Tokens</td></tr><tr><td>Stability</td><td>Stable Image Core (Bedrock)</td><td>$0.04 / image</td><td>10,000 Tokens</td></tr><tr><td>Stability</td><td>Stable Image Ultra</td><td>$0.08 / image</td><td>10,000 Tokens</td></tr><tr><td>Stability</td><td>Stable Image Ultra (Bedrock)</td><td>$0.14 / image</td><td>10,000 Tokens</td></tr><tr><td>X.ai</td><td>Grok 2</td><td>$0.07 / image</td><td>131,000 Tokens</td></tr></tbody></table>

### Vision Models

<table data-full-width="true"><thead><tr><th width="149.81427001953125">Provider</th><th width="349.8385009765625">Model Name</th><th width="149.51910400390625">Input Price</th><th width="150.3038330078125">Output Price</th><th width="160.02783203125">Context Length</th><th width="160.38531494140625">Max Output Size</th></tr></thead><tbody><tr><td>Anthropic</td><td>Claude 4 Opus</td><td>$15.00/MTok</td><td>$75/MTok</td><td>200,000 Tokens</td><td>32,000 Tokens</td></tr><tr><td>Anthropic</td><td>Claude 3.7 Sonnet</td><td>$3.00/MTok</td><td>$15.00/MTok</td><td>200,000 Tokens</td><td>128,000 Tokens</td></tr><tr><td>Anthropic</td><td>Claude 4 Sonnet</td><td>$3.00/MTok</td><td>$15.00/MTok</td><td>200,000 Tokens</td><td>64,000 Tokens</td></tr><tr><td>Anthropic</td><td>Claude Opus 4.1</td><td>$15.00/MTok</td><td>$75.00/MTok</td><td>200,000 Tokens</td><td>32,000 Tokens</td></tr><tr><td>Anthropic</td><td>Claude Sonnet 4.5</td><td>$3.00/MTok</td><td>$15.00/MTok</td><td>200,000 Tokens</td><td>64,000 Tokens</td></tr><tr><td>Google</td><td>Gemini Pro Vision [DEPRECATED]</td><td>$0.125/MTok</td><td>$0.375/MTok</td><td>--</td><td>--</td></tr><tr><td>Google</td><td>Gemini 1.5 Flash Vision [DEPRECATED]</td><td>$0.04/MTok</td><td>$0.15/MTok</td><td>--</td><td>--</td></tr><tr><td>Google</td><td>Gemini 1.5 Pro Vision [DEPRECATED]</td><td>$0.63/MTok</td><td>$2.50/MTok</td><td>--</td><td>--</td></tr><tr><td>Google</td><td>Gemini 2.0 Flash Lite Vision</td><td>$0.08/MTok</td><td>$0.30/MTok</td><td>1,048,576 Tokens</td><td>8,192 Tokens</td></tr><tr><td>Google</td><td>Gemini 2.0 Flash Vision</td><td>$0.075/MTok</td><td>$0.30/MTok</td><td>1,048,576 Tokens</td><td>8,192 Tokens</td></tr><tr><td>Google</td><td>Gemini 2.5 Pro Vision</td><td>$2.50/MTok</td><td>$15.00/MTok</td><td>1,048,576 Tokens</td><td>65,536 Tokens</td></tr><tr><td>OpenAI</td><td>GPT-4 Turbo Vision</td><td>$10.00/MTok</td><td></td><td></td><td></td></tr><tr><td>OpenAI</td><td>GPT-4o Mini Vision</td><td>$0.15/MTok</td><td>$0.60/MTok</td><td>128,000 Tokens</td><td>16,383 Tokens</td></tr><tr><td>OpenAI</td><td>GPT-4o Vision</td><td>$2.50/MTok</td><td>$10.00/MTok</td><td>128,000 Tokens</td><td>4,096 Tokens</td></tr><tr><td>OpenAI</td><td>GPT-5</td><td>$1.25/MTok</td><td></td><td></td><td></td></tr><tr><td>OpenAI</td><td>GPT-5 mini</td><td>$0.25/MTok</td><td></td><td></td><td></td></tr><tr><td>OpenAI</td><td>GPT-5 nano</td><td>$0.05/MTok</td><td></td><td></td><td></td></tr><tr><td>OpenAI</td><td>GPT-5.1</td><td>$1.25/MTok</td><td></td><td></td><td></td></tr><tr><td>X.ai</td><td>Grok 2 Vision</td><td>$2.00/MTok</td><td>$10.00/MTok</td><td>8,192 Tokens</td><td>8,192 Tokens</td></tr><tr><td>X.ai</td><td>Grok 4 Fast</td><td>$0.20/MTok</td><td>$0.50/MTok</td><td>2,000,000 Tokens</td><td>2,000,000 Tokens</td></tr><tr><td>Ideogram</td><td>Ideogram Vision</td><td>$0.10/Image</td><td>--</td><td>32,000 Tokens</td><td>--</td></tr></tbody></table>

### Video Models

<table data-full-width="true"><thead><tr><th width="150.3116455078125">Provider</th><th>Model Name</th><th>Price</th><th>Prompt Length</th></tr></thead><tbody><tr><td>Google</td><td>Veo 2</td><td>$0.50 / second</td><td>1,000 Tokens</td></tr><tr><td>Google</td><td>Veo 3</td><td>Video Only — $0.20 / second<br>Video &#x26; Audio — $0.75 / second</td><td>1,000 Tokens</td></tr><tr><td>Google</td><td>Veo 3 Fast</td><td>Video Only — $0.10 / second<br>Video &#x26; Audio — $0.15 / second</td><td>1,000 Tokens</td></tr><tr><td>Luma Labs</td><td>Ray 1.6</td><td>$0.003 / million pixels</td><td>1,000 Tokens</td></tr><tr><td>Luma Labs</td><td>Ray 2</td><td>$0.0064 / million pixels<br>$0.03 / image (1080p render)<br>$0.05 / image (4K render)</td><td>1,000 Tokens</td></tr><tr><td>Luma Labs</td><td>Ray Flash 2</td><td>$0.0022 / million pixels<br>$0.03 / image (1080p render)<br>$0.05 / image (4K render)</td><td>1,000 Tokens</td></tr><tr><td>OpenAI</td><td>Sora 2</td><td>$0.10 / second</td><td>1,000 Tokens</td></tr><tr><td>OpenAI</td><td>Sora 2 Pro</td><td>$0.50 / second</td><td>1,000 Tokens</td></tr><tr><td>Runway</td><td>Gen-4 Turbo</td><td>$0.01 / second</td><td>1,000 Tokens</td></tr></tbody></table>

### Text-To-Speech Models

<table data-full-width="true"><thead><tr><th width="178">Provider</th><th>Model Name</th><th width="208.33251953125">Input Price</th><th width="232.236083984375">Output Price</th><th>Prompt Length</th></tr></thead><tbody><tr><td>ElevenLabs</td><td>TTS Eleven Monolingual V1</td><td>$240.00 / character </td><td>$180.00 / 1M chars</td><td>Unlimited</td></tr><tr><td>ElevenLabs</td><td>TTS Eleven Multilingual V1</td><td>$240.00 / 1M chars</td><td>$180.00 / 1M chars</td><td>Unlimited</td></tr><tr><td>ElevenLabs</td><td>TTS Eleven Multilingual V2</td><td>$240.00 / 1M chars</td><td>$180.00 / 1M chars</td><td>Unlimited</td></tr><tr><td>ElevenLabs</td><td>TTS Eleven Turbo V2</td><td>$240.00 / 1M chars</td><td>$90.00 / 1M chars</td><td>Unlimited</td></tr><tr><td>ElevenLabs</td><td>TTS Eleven Turbo V2.5</td><td>$240.00 / 1M chars</td><td>$90.00 / 1M chars</td><td>Unlimited</td></tr><tr><td>ElevenLabs</td><td>TTS Eleven V3</td><td>$240.00 / 1M chars</td><td>$180.00 / 1M chars</td><td>Unlimited</td></tr><tr><td>ElevenLabs</td><td>Music V1</td><td>--</td><td>$0.00667 / minute</td><td>Unlimited</td></tr><tr><td>OpenAI</td><td>GPT-4o-mini TTS</td><td>$0.60 / 1M chars</td><td>$2.40 / 1M chars</td><td>2,000 Characters</td></tr><tr><td>OpenAI</td><td>TTS</td><td>$15.00 / 1M chars</td><td>$0.10 / 1M chars</td><td>4,100 Characters</td></tr><tr><td>OpenAI</td><td>TTS HD</td><td>$30.00 / 1M chars</td><td>$0.10 / 1M chars</td><td>4,100 Characters</td></tr></tbody></table>

### Speech-To-Text Models

<table data-full-width="true"><thead><tr><th width="182.40191650390625">Provider</th><th>Model Name</th><th>Est. Cost</th></tr></thead><tbody><tr><td>ElevenLabs</td><td> Scribe v1 </td><td>$0.00667 / Minute</td></tr><tr><td>OpenAI</td><td>GPT-4o-mini-transcribe</td><td>$0.003 / Minute</td></tr><tr><td>OpenAI</td><td>GPT-4o-transcribe</td><td>$0.006 / Minute</td></tr><tr><td>OpenAI</td><td>Whisper</td><td>$0.006 / Minute</td></tr></tbody></table>

## Services Reference

<table data-full-width="true"><thead><tr><th width="187.06768798828125">Provider</th><th>Event Name</th><th>Est. Cost</th></tr></thead><tbody><tr><td>MindStudio</td><td>API — Event Callback Compute</td><td>$0.00 / Event</td></tr><tr><td>MindStudio</td><td>API — Event Compute</td><td>$0.00 / Event</td></tr><tr><td>MindStudio</td><td>API — Load App Compute</td><td>$0.00 / Event</td></tr><tr><td>MindStudio</td><td>API — Load Thread Compute</td><td>$0.00 / Event</td></tr><tr><td>MindStudio</td><td>Data Query</td><td>$0.00 / Event</td></tr><tr><td>MindStudio</td><td>Data Vectorization</td><td>$0.0000001 / Event</td></tr><tr><td>MindStudio</td><td>Subworkflow Compute</td><td>$0.00 / Event</td></tr><tr><td>MindStudio</td><td>Thread Event Compute</td><td>$0.00 / Event</td></tr><tr><td>MindStudio</td><td>Execute Function</td><td>$0.00 / Event</td></tr><tr><td>Apollo.io </td><td>Enrich Organization</td><td>$0.17 / Event</td></tr><tr><td>Apollo.io </td><td>Enrich Person</td><td>$0.17 / Event</td></tr><tr><td>Apollo.io </td><td>Search People</td><td>$0.17 / Event</td></tr><tr><td>Searchapi.io</td><td>Fetch YouTube Captions</td><td>$0.00295 / Event</td></tr><tr><td>Searchapi.io</td><td>Fetch YouTube Channel Details</td><td>$0.00295 / Event</td></tr><tr><td>Searchapi.io</td><td>Fetch YouTube Video Comments</td><td>$0.00295 / Event</td></tr><tr><td>Searchapi.io</td><td>Fetch YouTube Video Details</td><td>$0.00295 / Event</td></tr><tr><td>Serper.dev</td><td>Search Google</td><td>$0.001 / Event</td></tr><tr><td>Hunter.io</td><td>Find Email</td><td>$0.03 / Event</td></tr><tr><td>Firecrawl.dev</td><td>Scrape URL (Firecrawl)</td><td>$0.001 / Event</td></tr><tr><td>Firecrawl.dev</td><td>AI Extraction (Firecrawl)</td><td>$0.005 / Event</td></tr><tr><td>Scrapingdog.com</td><td>Scrape URL (default)</td><td>$0.00033333 / Event</td></tr><tr><td>Twilio</td><td>Send SMS</td><td>$0.01 / Event</td></tr><tr><td>MindStudio</td><td>User Input</td><td>$0.00 / Event</td></tr><tr><td>MindStudio</td><td>Search X Posts</td><td>$0.00 / Event</td></tr><tr><td>MindStudio</td><td>Scrape X Profile</td><td>$0.00 / Event</td></tr><tr><td>MindStudio</td><td>Scrape X Post</td><td>$0.00 / Event</td></tr><tr><td>X.ai</td><td>Create X Post</td><td>$0.00 / Event</td></tr><tr><td>Bluesky</td><td>Search Bluesky Posts</td><td>$0.00 / Event</td></tr></tbody></table>


# Editor Overview

Get a high-level overview of the MindStudio AI Editor

{% embed url="<https://youtu.be/fBT6djVTmaA>" %}

After creating a new AI Agent, you’ll land in the MindStudio Editor. The editor is made of two key areas: the **Explorer** and the **Navigator** (commonly referred to as the **Workspace Area**).

### **Explorer Tab**

On the left you’ll find the **Explorer Tab.** This is where you'll find all of the resources used to build your AI Agents.

<figure><img src="/files/iTdSEcimFNpIw2wLbp9I" alt=""><figcaption></figcaption></figure>

### Types of Resources

#### **Data Sources**

Upload and vectorize files to leverage Retrieval Augmented Generation (RAG) in your AI workflows.

![](/files/GlzZ8wLue5qvAIFWrwY3)

Learn more about Data Sources →

#### **Functions**

Execute JavaScript code in your workflow.

![](/files/tHEEHB80deIvLWElYBqz)

Learn more about Functions →

#### **User Inputs**

Interfaces that humans interact with to provide context to the AI Agent.

![](/files/WxfX76WdiaSY7D2zMJ18)

Learn more about User Inputs →

#### **Workflows**&#x20;

Sequences of automated actions that your AI Agents follow when they are run.

![](/files/ntXEfAb8Aa9o8TYIeO8H)

Learn more about Workflows →

### Navigator

The large area covering the rest of the Editor if the Main Workspace, also refer to as the **Navigator**. This area will change depending on what you have selected. By default, the Editor will open on the `Main.flow` workflow and have the **Prompt Tab** open.

<figure><img src="/files/QKCOt3JqxDn9aaL2iSzB" alt=""><figcaption></figcaption></figure>

### Additional Global Controls

#### Top Bar

The Top Bar in the Editor contains the following controls:

* **Back Button:** Navigates to the Workspace Overview Screen
* **Title:** Access general AI Agent Settings
* **Preview Button:** Opens a draft preview of the AI Agent
* **Publish Button:** Saves and deploys all changes to the AI Agent

#### Bottom Bar

The bottom bar of the Editor contains the following controls:

* **Workspace Name:** Click to access workspace settings
* **Help & Support:** Access video tutorials, documentation, and live support chat
* **Collapse Controls:** Opens and closes the left and right columns of the Editor


# Creating Workflows

AI Agents are just workflows.

## What is a Workflow?

Workflows are sequences of automated actions that your AI Agents follow when they are run.

![Frame-4.jpg](/files/ntXEfAb8Aa9o8TYIeO8H)

## Designing Workflow Automations

After opening the **Automations Tab**, you’ll see the **Automations Canvas** which displays all of the individual actions that your workflow will execute when run. These are represented by **Blocks** on the canvas.

## **Best Practices for Designing Workflows**

* **Plan Before You Build**: Outline the steps your workflow will perform.
* **Use Helpful Variable Names**: Name variables descriptively to make the workflow easy to debug.
* **Test as You Go**: Regularly test each block to identify and resolve issues early. To test out the specific output of blocks that use AI, you may use the **Profiler** to compare results.

## Automations Canvas Controls

The canvas is infinitely scrollable in all directions. At the bottom of the canvas, you’ll find several controls to help you navigate and annotate the canvas as you design your Workflow.

### Panning Around the Canvas

**Using a mouse:**

* `Scroll` to pan up and down the canvas.
* `Shift + Scroll` to pan left and right across the canvas.

**Using the Pan Tool:**

* Click the **Pan Tool icon** or use the `H` hotkey to activate the Pan Tool.

  ![Pan tool control](/files/13sGYBJr9tjDUP6oMt6a)
* Click and drag in any direction to pan around the canvas. **NOTE:** You will not be able to select blocks while the Pan tool is activated.
* Click the **Select Tool icon** or use the `V` hotkey to deactivate the Pan Tool.

  ![Select tool control](/files/Th978ifKog6Tbd8Mcn8a)

### Zooming In & Out

**Using a mouse:**

* On Mac, use `CMD + Scroll` to zoom in and out.
* On PC, use `CTRL + Scroll` to zoom in and out.

**Using the Zoom Controls:**

* Click **Zoom In icon** or use the `+` hotkey to zoom in.

  ![Zoom in control](/files/TNkHu3CMXJipYjQ09JjN)
* Click **Zoom out icon** or use the `-` hotkey to zoom out

  ![Zoom out control](/files/KrbhUxRcsVjREzwOKQfV)

### Centering the Canvas

If you navigate away from your blocks and can no longer find them, you can reset and center all of the blocks on the canvas by clicking the **Reset view icon** or using the `R` hotkey

![Reset canvas control](/files/zogpCkn012syPu1XooYh)

### Auto Arrange Blocks

If your workflow becomes long and complex, you may want to consider tidying it up using **Auto arrange.** This tool will align all blocks vertically on the canvas.

![Auto arrange control](/files/1iCcuzPQjdTLQOlRHwqG)

### Adding Notes to the Canvas

You can annotate the canvas using the **Note Tool** to add text notes or label groups of blocks on.

**Using the Note Tool Controls:**

* Click on the **Note tool icon** to create a new note

  ![Note tool control](/files/UsCvpAACM5dvoEIYAhZ3)
* Select the color of your note
* Click on the note and add text content to your note
* Add an optional label to the top of your note. If no text is added in the label, then it will not show a label.
* Click and drag the anchors found at each corner of the note to adjust the note size.

### Add a New Block to the Workflow

**Between Existing Blocks:**

* Select the `+` button between to connected blocks to open up the **Block Menu**.
* Select the block that you’d like to add.
* The new block will be automatically connected between the two blocks.

**Anywhere on the Automations Canvas:**

* Right-click anywhere on the canvas to open the **Block Menu**.
* `CTRL + Click` anywhere on the canvas to open the **Block Menu**.

### Deleting a Block

* Click on the delete icon at the top-right corner of any block.
* Confirm the delete action.

## Key Components of a Workflow

### **The Start Block**

This block initializes the workflow. It can be triggered on demand or on a defined schedule, and allows you to define launch variables, which provide dynamic values that are passed through the workflow.

### **Workflow Blocks**

There are many kinds of blocks that you can add to your workflow. All blocks will have different configuration options depending on the block that you select.

Types of blocks include:

* **AI Tools**: Generate text, generate images, analyze image, etc.
* **Context Blocks**: Gather context for the AI. Context is saved to a variable.
* **Routing Blocks**: Add conditional branches to route the workflow in various ways. \</aside>

{% hint style="info" %}
In addition to arranging blocks visually on the Automations Canvas, you can define workflow logic using a **Workflow Script**. See [Workflow Scripts](/building-ai-agents/workflow-scripts) to get started.
{% endhint %}

### **Terminator Blocks**

This block marks the end of the workflow. It has customizable end behavior, such as sending email notifications or returning a structured output.

## Defining and Calling Variables

Variables in MindStudio are dynamic placeholders that store data during workflow execution. They allow you to pass information between blocks and workflows seamlessly.

### **Defining Variables**

1. **Launch Variables:** These are defined in the **Start Block** of your workflow.
2. **Runtime Variables:** Some blocks, such as Generate Text Blocks or User Input Blocks, can generate new variables while the workflow is running. For Example, after performing a Google Search, the block can store the results in a variable called <mark style="color:red;">`google_result`</mark>.

### **Calling Variables**

To use a variable in any block, reference it using double curly braces: <mark style="color:red;">`{{variable_name}}`</mark>.

**Generate Text prompt example calling a variable:**

```
Summarize the following info: {{google_result}}
```


# Blocks Reference

Learn about every block in MindStudio

To effectively build and customize your workflows, there are hundreds of blocks available, each serving a specific function to streamline your processes and enhance integration capabilities.

## Workflow Blocks Reference

<table><thead><tr><th width="266">Block Name</th><th>Purspose</th></tr></thead><tbody><tr><td><a href="/pages/G2p0NoAkPdlRS7EtijOy">Analyze Image Block</a></td><td>Uses AI to analyze the content of a provided image URL. Responses can be displayed to human or assigned to a variable.</td></tr><tr><td><a href="/pages/pbZX0MHG1W5iXHD3ruZU">Chat Block</a></td><td>Start a chat session with an AI agent.</td></tr><tr><td><a href="/pages/JJ8JR36aumLrY9ogL2Td">Display Content Block</a></td><td>Displays content to the user exactly as it is written. Can call variables.</td></tr><tr><td><a href="/pages/wj3gHp5iq46hTQfbt2N6">Extract Text from File Block</a></td><td>Extracts text from PDF, CSV, HTML, and TXT files</td></tr><tr><td><a href="/pages/gQebQIA6DguvbtCImXBi">Generate Text Block</a></td><td>Uses AI to generate text based on a prompt. Responses can be displayed to human or assigned to a variable.</td></tr><tr><td><a href="/pages/qWByOaiI2zrelCt4Lc82">Generate Image Block</a></td><td>Uses AI to generate an image based on a text prompt. Image URL is assigned to a variable.</td></tr><tr><td><a href="/pages/KOZvebGY42xTzkkh118p">Generate Chart Block</a></td><td>Generates a chart based on JSON Schema.</td></tr><tr><td><a href="/pages/2sZbX1byBhRkPFLJpMsP">Generate Video Block</a></td><td>Uses AI to generate a video based on a text prompt.</td></tr><tr><td><a href="/pages/mWPxWvsNeJnV91m2M4Qf">Jump Block</a></td><td>Routes the workflow directly into another discrete workflow in the same AI agent. Variables pass into the new workflow.</td></tr><tr><td><a href="/pages/UlsUWRZrI3k66BnJhGzM">Logic Block</a></td><td>Creates branching paths in a workflow. Routes the workflow based on AI selection.</td></tr><tr><td><a href="/pages/bejVXUTb1LybdHLcTlp0">Menu Block</a></td><td>Creates branching paths in a workflow. Routes the workflow based on human selection.</td></tr><tr><td><a href="/pages/KUWHyg2ZslZmY4bGOKaX">Post to Slack Block</a></td><td>Sends a message to a Slack channel</td></tr><tr><td><a href="/pages/rSEe3cMVya197NvVgqfV">Query Data Source Block</a></td><td>Queries a Data Source and returns relevant chunks of text. Returned text is assigned to a variable.</td></tr><tr><td><a href="/pages/s6rkmfcPCsklrVGBc6Tz">Query Database</a></td><td>Queries an external database (postgres, mysql, supabase, etc)</td></tr><tr><td><a href="/pages/xV42ByJkGdyi2BVkFLqQ">Run Function Block</a></td><td>Executes JavaScript code. Configurations and outputs will vary.</td></tr><tr><td><a href="/pages/c0gBNBai6O0Excu04wN0">Run Workflow Block</a></td><td>Runs a sub-workflow. Variables can be passed through the workflow as Launch Variables. Returns the output of the workflow.</td></tr><tr><td><a href="/pages/egghUqiZmT0k3oEG21ZX">Scrape URL Block</a></td><td>Uses a web scraper to gather text from a URL. Returned text is assigned to a variable.</td></tr><tr><td><a href="/pages/b3JRBr9w0efVzIfDnYY8">Set Run Title</a></td><td>Update the title in the user's run history</td></tr><tr><td><a href="/pages/QmIh24u5k9Se31aPg6TE">Start Block</a></td><td>Initializes the Workflow. Every Workflow includes a Start Block that cannot be deleted.</td></tr><tr><td><a href="#terminator-blocks">Terminator Block</a></td><td>Ends the workflow. Can be configured with different end behaviors such as a front-end chat interface, email notification, and more.</td></tr><tr><td><a href="/pages/ovXSIkYVmRoxBB2edQya">Text to Speech Block</a></td><td>Uses AI to generates a voice-over audio file that matches the provided text. Audio URL is assigned to a variable.</td></tr><tr><td><a href="/pages/u3j2IBIFKNYlHTWVmyPR">Transcribe Audio Block</a></td><td>Uses AI to transcribe an audio file. The transcription to assigned to a variable.</td></tr><tr><td><a href="/pages/lynC4lv1QxCCvtp1VzWo">User Input Block</a></td><td>Displays user inputs in a single-page form to gather context for the AI. Values from human inputs are assigned to variables.</td></tr></tbody></table>

{% embed url="<https://youtu.be/KNtIG6NdPMw>" %}

Integrations in MindStudio connect various apps and services to your workflows. You can find all kinds of integrations by adding new blocks in the [automations](/building-ai-agents/blocks-reference) tab.

## Integration Blocks Reference

### Social Media Blocks

| Block Name                                                                              | Purpose                          |
| --------------------------------------------------------------------------------------- | -------------------------------- |
| [Create LinkedIn Post](/building-ai-agents/blocks-reference/create-linkedin-post)       | Make a new post on LinkedIn      |
| [Create X Post](/building-ai-agents/blocks-reference/create-x-post)                     | Make a new post on X             |
| [Search Bluesky Posts](/building-ai-agents/blocks-reference/search-bluesky-posts)       | Search for posts on Bluesky      |
| [Search X Posts](/building-ai-agents/blocks-reference/search-x-posts)                   | Search for posts on X by keyword |
| [Scrape LinkedIn Profile](/building-ai-agents/blocks-reference/scrape-linkedin-profile) | Get LinkedIn Profile Data        |
| [Scrape LinkedIn Company](/building-ai-agents/blocks-reference/scrape-linkedin-company) | Get LinkedIn Company Data        |
| [Scrape X Post](/building-ai-agents/blocks-reference/scrape-x-post)                     | Get X Post Data                  |
| [Scrape X Profile](/building-ai-agents/blocks-reference/scrape-x-profile)               | Get X Post Profile               |

### Google Blocks

| Block Name                                                                                          | Purpose                                   |
| --------------------------------------------------------------------------------------------------- | ----------------------------------------- |
| [Create Google Doc](/building-ai-agents/blocks-reference/create-google-doc)                         | Create a new Google Doc document          |
| [Create Google Sheet](/building-ai-agents/blocks-reference/create-google-sheet)                     | Create a new Google Sheet document        |
| [Create Calendar Event](/building-ai-agents/blocks-reference/create-calendar-event)                 | Create a new Google Calendar event        |
| [Delete Calendar Event](/building-ai-agents/blocks-reference/delete-calendar-event)                 | Delete a Google Calendar event            |
| [Fetch Google Doc](/building-ai-agents/blocks-reference/fetch-google-doc)                           | Retrieve content from a Google Doc        |
| [Fetch Google Sheet](/building-ai-agents/blocks-reference/fetch-google-sheet)                       | Retrieve content from a Google Sheet      |
| [Get Calendar Event](/building-ai-agents/blocks-reference/get-calendar-event)                       | Retrieve a Google Calendar event          |
| [List Upcoming Calendar Events](/building-ai-agents/blocks-reference/list-upcoming-calendar-events) | List upcoming Google Calendar events      |
| [Search Google](/building-ai-agents/blocks-reference/search-google)                                 | Retrieve Google search results            |
| [Search Google Images](/building-ai-agents/blocks-reference/search-google-images)                   | Retrieve Google Image search results      |
| [Search Google Trends](/building-ai-agents/blocks-reference/search-google-trends)                   | Retrieve Google Trends keyword results    |
| [Search Google News](/building-ai-agents/blocks-reference/search-google-news)                       | Retrieve Google News search results       |
| [Update Calendar Event](/building-ai-agents/blocks-reference/update-calendar-event)                 | Update a Google Calendar event            |
| [Update Google Doc](/building-ai-agents/blocks-reference/update-google-doc)                         | Update values of an existing Google Doc   |
| [Update Google Sheet](/building-ai-agents/blocks-reference/update-google-sheet)                     | Update values of an existing Google Sheet |

### Hunter.io Blocks

| Block Name                                                                                  | Purpose                            |
| ------------------------------------------------------------------------------------------- | ---------------------------------- |
| [Enrich Company via Domain](/building-ai-agents/blocks-reference/enrich-company-via-domain) | Enrich company data using a domain |
| [Enrich Person via Email](/building-ai-agents/blocks-reference/enrich-person-via-email)     | Enrich person's data via email     |
| [Find Contact Email for Website](/building-ai-agents/blocks-reference/find-email)           | Find emails for a given website    |
| [Find Email](/building-ai-agents/blocks-reference/find-email)                               | Find a person's email for a domain |
| [Verify Email](/building-ai-agents/blocks-reference/verify-email)                           | Verify a person's email address    |

### YouTube Blocks

| Block Name                                                                            | Purpose                                   |
| ------------------------------------------------------------------------------------- | ----------------------------------------- |
| [Fetch YouTube Captions](/building-ai-agents/blocks-reference/fetch-youtube-captions) | Fetch captions from a YouTube video       |
| [Fetch YouTube Channel](/building-ai-agents/blocks-reference/fetch-youtube-channel)   | Fetch details from a YouTube channel      |
| [Fetch YouTube Comments](/building-ai-agents/blocks-reference/fetch-youtube-comments) | Fetch all comments from a YouTube video   |
| [Fetch YouTube Video](/building-ai-agents/blocks-reference/fetch-youtube-video)       | Fetch details from a YouTube video        |
| [Search YouTube](/building-ai-agents/blocks-reference/search-youtube)                 | Retrieve YouTube search results           |
| [Search YouTube Trends](/building-ai-agents/blocks-reference/search-youtube-trends)   | Search for trends by a specified category |

### Notion Blocks

| Block Name                                                                                   | Purpose                 |
| -------------------------------------------------------------------------------------------- | ----------------------- |
| [Create Page](https://help.mindstudio.ai/building-ai-agents/integrations/create-notion-page) | Create a page in Notion |
| [Update Page](/building-ai-agents/blocks-reference/update-notion-page)                       | Update a page in Notion |

### Coda Blocks

| Block Name                                                                                   | Purpose                              |
| -------------------------------------------------------------------------------------------- | ------------------------------------ |
| [Create/Update Page](/building-ai-agents/blocks-reference/create-update-coda-page)           | Create or update a page on Coda      |
| [Create/Update Table Row](/building-ai-agents/blocks-reference/create-update-coda-table-row) | Create or update a table row on Coda |
| [Get Table Rows](/building-ai-agents/blocks-reference/get-coda-table-rows)                   | Get Rows from a table on Coda        |
| [Get Page](/building-ai-agents/blocks-reference/get-coda-page)                               | Read page from a Coda document       |
| [Find Table Row](/building-ai-agents/blocks-reference/find-coda-table-row)                   | Find a table row on Coda             |

### Airtable Blocks

| Block name                                                                                 | Purpose                                |
| ------------------------------------------------------------------------------------------ | -------------------------------------- |
| [Get Table Records](/building-ai-agents/blocks-reference/get-airtable-table-records)       | Get records from an Airtable table     |
| [Create/Update Record](/building-ai-agents/blocks-reference/create-update-airtable-record) | Create or update a record on Airtable  |
| [Get Record](/building-ai-agents/blocks-reference/get-airtable-record)                     | Get a record from an Airtable table    |
| [Delete Record](/building-ai-agents/blocks-reference/delete-airtable-record)               | Delete a record from an Airtable table |

### HubSpot Blocks

| Block Name                                                                                  | Purpose                               |
| ------------------------------------------------------------------------------------------- | ------------------------------------- |
| [Create/Update Contact](/building-ai-agents/blocks-reference/create-update-hubspot-contact) | Create or update a contact in HubSpot |
| [Create/Update Company](/building-ai-agents/blocks-reference/create-update-hubspot-company) | Create or update a company in HubSpot |
| [Get Contact](/building-ai-agents/blocks-reference/get-hubspot-contact)                     | Get a contact from HubSpot            |
| [Get Company](/building-ai-agents/blocks-reference/get-hubspot-company)                     | Get a company from HubSpot            |

### Other Automations

| Block Name                                                                                            | Purpose                                     |
| ----------------------------------------------------------------------------------------------------- | ------------------------------------------- |
| [Add Note (ActiveCampaign)](/building-ai-agents/blocks-reference/add-note-activecampaign)             | Add a note to a contact in ActiveCampaign   |
| [Create Contact (ActiveCampaign)](/building-ai-agents/blocks-reference/create-contact-activecampaign) | Create a contact in ActiveCampaign          |
| [HTTP Request](/building-ai-agents/blocks-reference/http-request)                                     | Send an HTTP request                        |
| [Fetch Slack History](/building-ai-agents/blocks-reference/fetch-slack-history-block)                 | Retrieve messages from a Slack channel      |
| [Post to Slack](/building-ai-agents/blocks-reference/post-to-slack)                                   | Send a message to a specified Slack channel |
| [Run Node (n8n)](/building-ai-agents/blocks-reference/run-node-n8n)                                   | Trigger an n8n workflow                     |
| [Run Scenario (Make)](/building-ai-agents/blocks-reference/run-scenario-make)                         | Run a specified scenario on Make.com        |
| [Send Email](/building-ai-agents/blocks-reference/send-email)                                         | Send an email to a registered email address |
| [Send SMS](/building-ai-agents/blocks-reference/send-sms)                                             | Send an SMS to a valid phone number         |
| [Zapier Webhook](/building-ai-agents/blocks-reference/zapier-webhook)                                 | Trigger and send data to a Zap in Zapier    |


# Analyze Image Block

Analyze an image URL based on text instructions.

The **Analyze Image Block** processes and analyzes an image URL based on provided text instructions. It generates a text response based on the analysis that is assigned to a variable.

## Configurations

### **Prompt**

Provide text instructions for analyzing the image. Use <mark style="color:red;">`{{variables}}`</mark> to make the prompt dynamic based on a previous step in the workflow.

#### **Example Prompt**:

`Identify the objects in the image and describe their arrangement. Focus on colors and sizes.`

### **Image URL**

Specify the URL of the image to be analyzed. Use a <mark style="color:red;">`{{variable}}`</mark> to dynamically reference the image URL generated or fetched earlier in the workflow.

### **Output Variable**

Creates a new variable and saves the generated image analysis. Enter a <mark style="color:red;">`variable_name`</mark> to store the response for later use in the workflow.

### **Model Settings**

Choose the AI model that you’d like to use for the image analysis. You may adjust the model’s **Temperature** and **Max Response Size**.

## **Writing Image Analysis Prompts**

Creating a well-crafted prompt is essential for accurate and meaningful image analysis. Follow these guidelines to ensure your prompts guide the AI model effectively:

* **Be Clear and Specific:** Clearly describe what you want the AI to analyze or identify in the image. Focus on specific elements or features relevant to your use case.

  > **Example:** "Identify the main objects in the image, including their colors, sizes, and positions.”
* **Define the Objective:** Explain the purpose of the analysis to provide context for the AI. This helps tailor the response to your needs.

  > **Example:** "Analyze the image and describe how the objects are arranged for interior design recommendations.**”**
* **Break Down Complex Instructions:** Use simple, step-by-step instructions when requesting detailed analyses.

  > **Example:** " 1. List all objects visible in the image. 2. Describe their positions relative to each other. 3. Highlight any unusual or standout features.”
* **Focus on Key Details:** Avoid asking for unnecessary information to keep the analysis concise.

  > **Example:** "Describe the objects on the table, focusing on their materials and colors.”
* **Include Contextual Cues:** Provide additional context for better results, such as the setting, purpose, or focus of the image.

  > **Example:** "This image shows a park scene. Identify all visible plants, trees, and animals.”


# Analyze Video Block

Analyze a video URL based on text instructions.

The **Analyze Video Block** processes and analyzes a video URL based on provided text instructions. It generates a text response based on the analysis that is assigned to a variable.

## Configurations

### **Prompt**

Provide text instructions for analyzing the video. Use <mark style="color:red;">`{{variables}}`</mark> to make the prompt dynamic based on a previous step in the workflow.

#### **Example Prompt**:

`Describe what is happening in the video. Focus on the actors and outcome of the video.`

### **Video URL**

Specify the URL of the video to be analyzed. Use a <mark style="color:red;">`{{variable}}`</mark> to dynamically reference the video URL generated or fetched earlier in the workflow.

### **Output Variable**

Creates a new variable and saves the generated video analysis. Enter a <mark style="color:red;">`variable_name`</mark> to store the response for later use in the workflow.

### **Model Settings**

Choose the AI model that you’d like to use for the video analysis. You may adjust the model’s **Temperature** and **Max Response Size**.

## **Writing Video Analysis Prompts**

Creating a well-crafted prompt is essential for accurate and meaningful video analysis. Follow these guidelines to ensure your prompts guide the AI model effectively:

* **Be Clear and Specific:** Clearly describe what you want the AI to analyze or identify in the video. Focus on specific elements or features relevant to your use case.

  > **Example:** "Identify the main actors in the video, including detailed descriptions, sizes, and positions.”
* **Define the Objective:** Explain the purpose of the analysis to provide context for the AI. This helps tailor the response to your needs.

  > **Example:** "Analyze the video and describe how to adopt the video flow for a Tik Tok video ad.**”**
* **Break Down Complex Instructions:** Use simple, step-by-step instructions when requesting detailed analyses.

  > **Example:** " 1. List all objects visible in the video. 2. Describe their positions relative to each other. 3. Describe how the actors interact with each other. 4. Highlight any unusual or standout features.”
* **Focus on Key Details:** Avoid asking for unnecessary information to keep the analysis concise.

  > **Example:** "Describe the outcome of the video, focusing on actor interaction.”
* **Include Contextual Cues:** Provide additional context for better results, such as the setting, purpose, or focus of the video.

  > **Example:** "This video shows a park scene. Identify all visible plants, trees, and animals.”


# Authorize Payment Block

Authorize a user to pay to use your AI agent.

Use the Authorize Payment block to earn money from your AI agents. The Authorize Payment block allows a user to authorize to pay you to use your AI agent. The user is presented with this block each time they run your AI agent. The user must have a MindStudio account.

Use immediately following a [User Input](/building-ai-agents/blocks-reference/user-input-block) block, and before your workflow begins any tasks.

See the [Earnings](https://app.mindstudio.ai/workspace/earnings) page to view pending transactions. Collect payouts using Stripe Connect.

## Configuration

### Amount&#x20;

Specify the per-unit amount the user must authorize payment. The user will be charged the full amount when a [Capture Payment](/building-ai-agents/blocks-reference/capture-payment-block) block captures payment.

### Quantity

Specify the number of units to authorize. By default is **1**.

{% hint style="info" %}
This setting may include variables.
{% endhint %}

### Statement Description

Describe the charge for the user.

### On Reject

Select the block to route to if the user rejects the payment authorization.

<div data-full-width="true"><figure><img src="/files/YFBtrgjBukQydG6qduEE" alt=""><figcaption></figcaption></figure></div>


# Capture Payment Block

Capture an authorized payment for use of your AI agent.

The Capture Payment block captures payment that the user authorized from an [Authorize Payment](/building-ai-agents/blocks-reference/authorize-payment-block) block in your AI agent. Use immediately preceding the End block of a workflow.

See the [Earnings](https://app.mindstudio.ai/workspace/earnings) page to view pending transactions. Collect payouts using Stripe Connect.

There is no configuration.


# Chat Block

Start a chat session with AI

## Configuration&#x20;

### Chat Settings&#x20;

#### System Introduction

This will be the first message presented to the user at the start of the chat session. It is only for display and not included as part of the prompt.&#x20;

#### Conversation Starters

Create a predefined message to help the user start the conversation.

Select the **"Add" button**, and the conversation starter in the **value section**.&#x20;

### Continuation Settings

#### Transition Control

Select how the user will transition out of the chat session. Options include:

* **None:** The chat session marks the end of the workflow.
* **Next Button:** The chat session shows a next button to take the user to the next step in the workflow.
  * Add a **button label.**
  * Select the **destination block** to continue the workflow.
  * **History Variable:** Save the chat session to a variable.
  * **Last Message Variable:** Save the last message sent by the user to a variable.&#x20;
* **Dynamic Tool Use:** Define a set of possible tools and allow the AI model to decide when and where to transition.&#x20;
  * **History Variable:** Save the chat session to a variable.
  * **Last Message Variable:** Save the last message sent by the user to a variable.&#x20;
  * **Add Tool:** Provide a text prompt that explains the purpose of the tool and select the destination block to continue the workflow.

### Message Proccessing&#x20;

#### Strategy&#x20;

Select whether this block should use **no processing** or **Retrieval Augmented Generation (RAG).**

If RAG is selected, you must select and configure a data source.


# Checkpoint Block

Allow for user review of a specific step in the workflow.

{% embed url="<https://www.youtube.com/embed/XV3eopnYINM>" %}

## Overview

The Checkpoint Block displays a prompt to the user, allows them to revise variables, accept or reject certain steps in the workflow and route them accordingly.&#x20;

## Configurations

### Modes

1. **Alert:** Allows users to accept or reject a workflow step before moving forward.
2. **Revise Variable:** Allows users to accept or reject a workflow step and make revisions to variables (i.e. generated content) before moving forward.&#x20;

### Title & Description

This section includes the actual prompt that is being displayed to the user.

#### Example:

**Title:** `Review Assets`

**Description:** `Review your generated assets and and continue when you are ready to finalize them for download.`

### Approve

Create a custom label to approve the displayed prompt. If this section is left blank, the label will automatically display **"Approve"**.

Route the approve label to the desired block by selecting the **Select Destination** button and then the desired block destination.&#x20;

<figure><img src="/files/2tIREy4JHNDkGZIYOUfy" alt="" width="563"><figcaption></figcaption></figure>

### Reject

Create a custom lable to reject the displayed prompt. If this section is left blank, the label will automatically display **"Reject"**.

Route the reject label to the desired block by selecting the **Select Destination** button.&#x20;

<figure><img src="/files/pMvflE6LeOv4afJJmi0e" alt="" width="563"><figcaption></figcaption></figure>

### Revise Variable Configuration

This configuration is only visible if the **Revise Variable** mode is selected.

#### **Target Variable**

The variable that will be presented to the user to be accepted or revised. Example: `{{My_Var}}`

#### **Variable Label**

The name of the variable that will be displayed to the user. Example: `My Variable`

#### Variable Type

These are the types of content that can be revised

1. **Text** : includes any text based content generated using the Generate Text block.
2. **HTML** : includes images and pdfs generated using the Generate Asset block.

#### Revise Guidance

In this section, provide any additional context you might want to provide to the AI to use when making revisions to the content.&#x20;

#### Model Settings

Select the AI model to be used when making revisions to any variables.

#### &#x20;


# Create Calendar Event

Create a Google Calendar event.

## Configuration

### Account

#### Add account&#x20;

Connect your Google Calendar account by signing in with the proper credentials.

#### Dynamic (Ask at Runtime)

Ask the user to connect their account when the AI agent runs.&#x20;

### Event Title&#x20;

Add a name for the event.

### Description&#x20;

Add an event description.

### Location&#x20;

Add the physical location or a link to the event.

### Time

Add a start time and end time for the event. Make sure to use ISO format (YYYY-MM-DD).

### Attendees

At the email addresses for the attendees of the event. Only 1 address per line.

### Output Variable&#x20;

Save the event ID and url as a variable.


# Create Contact (ActiveCampaign)

Create a contact in ActiveCampaign

## Configuration&#x20;

### Connection <a href="#account" id="account"></a>

**Dynamic (Ask at runtime)**

This setting will ask a user to login to their ActiveCampaign account when they run the app.

**Connect a New Account**

Follow the instructions on the pop-up window to directly connect MindStudio to your ActiveCampaign account.

### Email

Enter the email address for the new contact. This section can include variables.

### Name

Enter the first and last name of the new contact. This section can include variables.&#x20;

### Phone

Enter the phone number for the new contact. This section can include variables.

### Account&#x20;

Select the account where you want to send the new contact. This section will only populate if you have **connected your ActiveCampaign account to MindStudio**.&#x20;

If the **dynamic connection** has been selected, the account will display as **"none"**.

### Output Variable&#x20;

Save the newly created contact as a variable. Example: `Contact_Name`

Specifying an output variable is optional.&#x20;


# Create Google Doc

Create a new Google Doc document in a MindStudio workflow

## Configuration&#x20;

### Account&#x20;

#### Dynamic (Ask at runtime)

This setting will ask a user to login to their Google Drive account when they run the app.

#### Connect a New Account

Follow the instructions on the pop-up window to directly connect MindStudio to your Google Drive account.&#x20;

### Document Name

Enter a name for your document. You can include folder paths by using the proper synteax. Example: `folder/subfolder/DocumentName`.

### Output Variable

Save the document URL as a variable. Example: `MyDoc_001`

### Document Format&#x20;

Select the format for the document being sent to Google Drive. The options include:

* **Plain Text**
* **Markdown**
* **HTML**

### **Content**&#x20;

Add the content for your document. This section can include variables.


# Create Google Sheet

Create a new Google Sheet document in a MindStudio workflow

## Configuration

### Account&#x20;

#### Dynamic (Ask at runtime)

This setting will ask a user to login to their Google Drive account when they run the app.

#### Connect a New Account

Follow the instructions on the pop-up window to directly connect MindStudio to your Google Drive account.&#x20;

### Spreadsheet Name

Enter a name for your Google sheet. You can include folder paths by using the proper syntax. Example: `folder/subfolder/SpreadsheetName`.

### Output Variable

Save the spreadsheet URL as a variable. Example: `MySpreadsheet_001`

### Spreadsheet Content

Add the content you'd like to include in your new spreadsheet. This section can include variables.


# Create LinkedIn Post

Make a new post on LinkedIn in a MindStudio workflow

## Configuration

### Connect a LinkedIn Account

#### Dynamic (Ask at runtime)

This setting will ask a user to login to their LinkedIn account when they run the app.

#### Connect a New Account

Follow the instructions on the pop-up window to directly connect MindStudio to your LinkedIn account.

### Craft the Post

#### Visibility&#x20;

Select the level of visibility for the post from the dropdown menu.

* **Public:** The post will be public to everyone on LinkedIn.
* **Connections:** Your post can only be seen by your connections on LinkedIn.&#x20;

#### Message

Craft your LinkedIn post using markdown syntax. You can include variables in your post.


# Create Notion Page

Create a page in Notion

## Configuration&#x20;

### Account&#x20;

#### Dynamic (Ask at runtime)

This setting will ask a user to login to their Notion account when they run the app.

#### Connect a New Account

Follow the instructions on the pop-up window to directly connect MindStudio to your Notion account.&#x20;

### Parent Page

Enter the parent page ID where you want the new page to be created. The new page will created a subpage within the parent page.&#x20;

If you have connected your Notion account to MindStudio, you can search for the parent page ID by selecting the **search folder icon** next to the text field. This section can include variables.&#x20;

### Page Title

Enter a title for your page. This section can include variables.&#x20;

### Page Content

Enter in the page content that will be sent to Notion. This section can include variables.&#x20;


# Create/Update Airtable Record

Create or update a record in Airtable.

## Configuration

### Account

**Dynamic (Ask at runtime)**

This setting will ask a user to login to their Airtable account when they run the app.

### **Connect a New Account**

Follow the instructions on the pop-up window to directly connect MindStudio to your Airtable account.&#x20;

### Base

Enter the base ID for where the table exists. You may include variables.

### Table

Enter the table ID for where you want to create the new record. You may include variables.

### Record ID

Enter the record ID if you are updating an already existing record. **(optional)**

### **Update Mode**

Select the update mode:

* **Only Specified Fields:** Updates only the specified fields, leaving the rest as they were.
* **All Fields**: Updates all fields, clearing all unspecified cells values.&#x20;

### Output Variable

Save the resulting record ID as a variable. **(optional)**


# Create/Update Coda Page

Create or update a page in Coda.

## Configuration&#x20;

### Account

**Dynamic (Ask at runtime)**

This setting will ask a user to login to their Coda account when they run the app.

### **Connect a New Account**

Follow the instructions on the pop-up window to directly connect MindStudio to your Coda account.&#x20;

### Document

Add the document ID for the page you want to update. This section may include variables.

### Parent Page&#x20;

Add the parent page ID if you are creating a subpage. This section may include variables. **(optional)**

### Target Page&#x20;

Add the target page ID if there a specific page you want to update. This section may include variables.**(optional)**

### Page Name&#x20;

Enter the name for the page. This section may include variables.

### Subtitle&#x20;

Enter the subtitle for the new page. This section may include variables. **(optional)**

### Page Content

Add the content that you want to send to the page. You may use markdown formatting and include variables.

### Output Variable

Save the page ID as a variable to be used in other parts of the workflow. **(optional)**


# Create/Update Coda Table Row

Create or update a table row in Coda

## Configuration&#x20;

### Account

**Dynamic (Ask at runtime)**

This setting will ask a user to login to their Coda account when they run the app.

### **Connect a New Account**

Follow the instructions on the pop-up window to directly connect MindStudio to your Coda account.&#x20;

### Document

Provide the document ID for where the table exists. You may include variables.

### Table

Provide the Table ID for the row you want create or update. You may include variables.&#x20;

### Row ID

Add the row ID if you are updating an existing row. **(Optional)**

### **Row Data**

Select a table a view the row data. Add the content you want to update or add to the existing table.&#x20;


# Create/Update HubSpot Company

Create or update a company in HubSpot

## Configuration

### Account

**Dynamic (Ask at runtime)**

This setting will ask a user to login to their HubSpot account when they run the app.

### **Connect a New Account**

Follow the instructions on the pop-up window to directly connect MindStudio to your HubSpot account.

### Company Domain Name

Enter the company domain name. If a company with the provided domain name does not exist, it will be updated.&#x20;

### Company Name

Enter the company name. You may include variables.

### Output Variable

Save the company ID as a variable. **(optional)**


# Create/Update HubSpot Contact

Create or update a HubSpot contact.

## Configuration

### Account

**Dynamic (Ask at runtime)**

This setting will ask a user to login to their HubSpot account when they run the app.

### **Connect a New Account**

Follow the instructions on the pop-up window to directly connect MindStudio to your HubSpot account.

### Email

Add the email for the new contact. If a contact with the provided email already exists, it will be updated. You may include variables.

### First Name

Enter the first name for the conact. You made include variables.

### Last Name

Enter the last name for the contact. You may include variables.

### Company Domain Name

Enter the company domain name to associate the contact with. If a company domain does not exist, it will be created. **(optional)**

### Output Variable

Save the contact ID as a variable. **(optional)**


# Create X Post

Make a new post on X in a MindStudio workflow

## Configuration

### Connect an X Account

#### Dynamic (Ask at runtime)

This setting will ask a user to login to their X account when they run the app.

#### Connect a New Account

Follow the instructions on the pop-up window to directly connect MindStudio to your X account.

### Craft Post

Craft your post using markdown syntax. This section can include variables.


# Delete Airtable Record

Delete a record from Airtable.

## Configuration

### Account

**Dynamic (Ask at runtime)**

This setting will ask a user to login to their Airtable account when they run the app.

### **Connect a New Account**

Follow the instructions on the pop-up window to directly connect MindStudio to your Airtable account.

### Base

Enter the Base ID from where the table exists.&#x20;

### Table

Enter the table ID from where the record exists.

### Record ID

Enter the record ID for the record you want to delete.


# Delete Calendar Event

Delete an event from your Google Calendar.

## Configuration

### Account

#### Add account&#x20;

Connect your Google Calendar account by signing in with the proper credentials.

#### Dynamic (Ask at Runtime)

Ask the user to connect their account when the AI agent runs.&#x20;

### Event ID

Add the event ID for the event that will be removed from the Google Calendar.&#x20;


# Display Content Block

Presents messages or outputs directly to users

The **Display Content Block** allows you to present messages or outputs directly to users in your workflows. It is used for delivering dynamic content with support for markdown formatting.

## **Configurations**

### **Message**

Define the message you want to display to the user. The **Display Content Block** supports markdown formatting, allowing you to structure text, add emphasis, or include links for a polished presentation. Use <mark style="color:red;">`{{variables}}`</mark> to make the message dynamic.

[Learn about variables →](/building-ai-agents/variables)

[Learn more about Markdown formatting →](/building-ai-agents/writing-prompts#using-markdown-to-write-prompts)

#### **Example Message**:

```markdown
## Welcome to our app!
Here are your **next steps:**
1. Complete your profile.
2. Explore the features of {{productName}}.
3. Contact us [here](<https://example.com/support>) for assistance.
```

Learn more about markdown → \[PAGE: Writing Prompts with Markdown].

### Display an Image

```markdown
![Alt Text]({{myImageVariable}})
```

### Display Audio Player

```markdown
<audio src="{{myAudioVariable}}" controls /></audio>
```

### Display Video Player

```markdown
<video src="{{myVideoVariable}}"></video>
```


# Enrich Company via Domain

Use Hunter.io to enrich company data using a domain in a MindStudio workflow

## Configuration&#x20;

### Domain

Enter the domain that you want to return the data from. This section can include variables.&#x20;

### Output

Save the returned data to a variable. Example: `CompanyName_Data`

## Sample Output

```json
{
  "data": {
    "id": "95ca56a8-a019-5c41-881e-293d9ca4741a",
    "name": "Hunter",
    "legalName": "Hunter",
    "domain": "hunter.io",
    "domainAliases": [],
    "site": {
      "phoneNumbers": [
        "+1 415 712 0049"
      ],
      "emailAddresses": [
        "support@hunter.io",
        "security@hunter.io",
        "contact@hunter.io",
        "engineering@hunter.io",
        "affiliates@hunter.io",
        "press@hunter.io",
        "first@hunter.io"
      ]
    },
    "category": {
      "sector": "Information Technology",
      "industryGroup": "Software & Services",
      "industry": "Internet Software & Services",
      "subIndustry": "Internet",
      "gicsCode": "45103010",
      "sicCode": "36",
      "sic4Codes": [
        "73"
      ],
      "naicsCode": "51",
      "naics6Codes": [
        "519130"
      ],
      "naics6Codes2022": [
        "519290"
      ]
    },
    "tags": [
      "email marketing",
      "lead generation",
      "data enrichment",
      "sales intelligence",
      "business tools"
    ],
    "description": "Hunter is an email marketing company that specializes in lead generation and data enrichment.",
    "foundedYear": 2015,
    "location": "Wilmington, Delaware, United States",
    "timeZone": "America/New_York",
    "utcOffset": -5,
    "geo": {
      "streetNumber": null,
      "streetName": null,
      "subPremise": null,
      "streetAddress": null,
      "city": "Wilmington",
      "postalCode": null,
      "state": "Delaware",
      "stateCode": "DE",
      "country": "United States",
      "countryCode": "US",
      "lat": 39.74595,
      "lng": -75.54659
    },
    "logo": "https://logo.clearbit.com/hunter.io",
    "facebook": {
      "handle": null,
      "likes": null
    },
    "linkedin": {
      "handle": "company/hunterio"
    },
    "twitter": {
      "handle": null,
      "id": null,
      "bio": null,
      "followers": null,
      "following": null,
      "location": null,
      "site": null,
      "avatar": null
    },
    "crunchbase": {
      "handle": null
    },
    "emailProvider": "google.com",
    "type": "private",
    "ticker": null,
    "identifiers": {
      "usEIN": null
    },
    "phone": "+1 415 712 0049",
    "metrics": {
      "alexaUsRank": null,
      "alexaGlobalRank": null,
      "trafficRank": "very_high",
      "employees": "11-50",
      "marketCap": null,
      "raised": null,
      "annualRevenue": null,
      "estimatedAnnualRevenue": null,
      "fiscalYearEnd": null
    },
    "indexedAt": "2024-09-09",
    "tech": [
      "cloudflare",
      "cloudflare-browser-insights",
      "hsts",
      "http-3",
      "ruby",
      "stimulus"
    ],
    "techCategories": [
      "analytics",
      "dns",
      "marketing_automation",
      "programming_framework",
      "security",
      "web_servers"
    ],
    "parent": {
      "domain": null
    },
    "ultimateParent": {
      "domain": null
    }
  },
  "meta": {
    "domain": "hunter.io"
  }
}
```


# Enrich Person via Email

Use Hunter.io to enrich person's data via email in a MindStudio workflow

## Configuration&#x20;

### Email

Enter the email for person whose data you want to enrich. This section can include variables.

### Output

Save the enriched data to a variable. Example: `personName_Enriched`

## Sample Output

```json

  "data": {
    "id": "16210bd7-67c0-5b56-ba90-aa80ed9395a8",
    "name": {
      "fullName": "François Grante",
      "givenName": "François",
      "familyName": "Grante"
    },
    "email": "francois@hunter.io",
    "location": "Tokyo, Japan",
    "timeZone": "Asia/Tokyo",
    "utcOffset": 9,
    "geo": {
      "city": "Tokyo",
      "state": null,
      "stateCode": null,
      "country": "Japan",
      "countryCode": "JP",
      "lat": 35.6895,
      "lng": 139.69171
    },
    "bio": null,
    "site": null,
    "avatar": null,
    "employment": {
      "domain": "hunter.io",
      "name": "Hunter",
      "title": "Co-Founder",
      "role": "executive",
      "subRole": null,
      "seniority": null
    },
    "facebook": {
      "handle": null
    },
    "github": {
      "handle": null,
      "id": null,
      "avatar": null,
      "company": null,
      "blog": null,
      "followers": null,
      "following": null
    },
    "twitter": {
      "handle": "fgrante",
      "id": null,
      "bio": null,
      "followers": null,
      "following": null,
      "statuses": null,
      "favorites": null,
      "location": null,
      "site": null,
      "avatar": null
    },
    "linkedin": {
      "handle": "fran%c3%a7ois-grante-028a364a"
    },
    "googleplus": {
      "handle": null
    },
    "gravatar": {
      "handle": null,
      "urls": [],
      "avatar": null,
      "avatars": []
    },
    "fuzzy": false,
    "emailProvider": "google.com",
    "indexedAt": "2024-12-11",
    "phone": null,
    "activeAt": "2024-12-11",
    "inactiveAt": null
  },
  "meta": {
    "email": "francois@hunter.io"
  }
}
```


# Extract Text from File Block

Extract text content from a file provided via a URL

The **Extract Text from File Block** allows you to extract text content from a file provided via a URL. This block is perfect for workflows that require processing text from uploaded files or external sources.

## **Configurations**

### **URL**

Provide the URL of the file to extract text from. You can enter the URL directly or use a `{{variable}}` to make it dynamic.

**Example:**

* Static URL: **`https://example.com/document.pdf`**
* Dynamic URL: **`{{file_url}}`**

#### **Supported File Types**

* Plain Text (.txt, .md)
* HTML (.html)
* JSON (.json)
* PDF Document (.pdf)
* Spreadsheet (.csv, .xlsx)
* Word Document (.docx)

#### **File Size Limits**

The maximum file size is **10MB**.

### **Output Variable**

Creates a new variable and saves the extracted text to it. Enter a `variable_name` to store the response for later use in the workflow.

***

## Best Practices

* **Validate File URLs**: Ensure the provided URL points to a valid file with readable text content.
* **Use Variables**: Leverage dynamic variables to adapt the block to multiple use cases without manually changing the URL.
* **Set Clear Outputs**: Choose meaningful variable names to make workflow debugging and customization easier.
* **Monitor File Size**: Keep file sizes within the 10MB limit to ensure smooth processing.


# Fetch Google Doc

Retrieve content from a Google Doc in a MindStudio workflow

## Configuration

### Account&#x20;

#### Dynamic (Ask at runtime)

This setting will ask a user to login to their Google Drive account when they run the app.

#### Connect a New Account

Follow the instructions on the pop-up window to directly connect MindStudio to your Google Drive account.&#x20;

### Document&#x20;

Select the Google Doc you want to fetch. If you have connected your Google Drive account, you can search for your document by selecting the **Choose Document** button.

### Export Format

Select the format you want the document contents exported as. Options include:

* **Plain Text**&#x20;
* **Markdown**&#x20;
* **HTML**
* **JSON (Google Doc Format)**

### Output Variable&#x20;

Save the contents of the fetched document to a variable. Example: `Doc_fetch_1`

## Sample Output - JSON

```json
{
  "title": "Document Title",
  "body": {
    "content": [
      {
        "startIndex": 24,
        "endIndex": 54,
        "paragraph": {
          "elements": [
            {
              "startIndex": 24,
              "endIndex": 32,
              "textRun": {
                "content": "Invited "
              }
            },
            {
              "startIndex": 32,
              "endIndex": 33,
              "person": {
                "personProperties": {
                  "name": "John Doe",
                  "email": "example@example.com"
                }
              }
            },
            {
              "startIndex": 33,
              "endIndex": 34,
              "textRun": {
                "content": " "
              }
            },
            {
              "startIndex": 34,
              "endIndex": 35,
              "person": {
                "personProperties": {
                  "name": "John Doe",
                  "email": "example@example.com"
                }
              }
            }
          ]
        }
      },
      {
        "startIndex": 97,
        "endIndex": 641,
        "paragraph": {
          "elements": [
            {
              "startIndex": 98,
              "endIndex": 641,
              "textRun": {
                "content": "Text content."
              }
            }
          ]
        }
      }
    ]
  }
}
```

This block can also output the selected Google Doc content in **plain text**, **Markdown** or **HTML** format.


# Fetch Google Sheet

Retrieve content from a Google Sheet in a MindStudio workflow

{% embed url="<https://www.youtube.com/embed/gYANwOaQGqY>" %}

## Configuration

### Account&#x20;

#### Dynamic (Ask at runtime)

This setting will ask a user to login to their Google Drive account when they run the app.

#### Connect a New Account

Follow the instructions on the pop-up window to directly connect MindStudio to your Google Drive account.&#x20;

### Spreadsheet&#x20;

Add the spreadsheet URL for the Google sheet you want to fetch. If you have connected your Google Drive account, you can search for your spreadsheet by selecting the **search folder icon** next to the text field.&#x20;

This section can include variables.&#x20;

### Export Format

Select the format you want the spreadsheet exported as. Options include:

* **Comma-Seperated-Values (CSV)**
* **JSON (Google Sheet Format)**

### Range

Enter the range values that you want to fetch from the spreadsheet. Example: `Sheet1!A1:Z1000`

### Output Variable&#x20;

Save the contents of the fetched spreadsheet to a variable. Example: `Sheet_fetch_1`

## Sample Output - JSON

```json
{
  "range": "Testcases!A1:Z1015",
  "majorDimension": "ROWS",
  "values": [
    ["Lorem Ipsum Test", "Random Percentage:", "42.73%"],
    ["Dolor Sit", "Amet Consectetur", "Adipiscing Elit", "Status", "Notes", "Percentage"],
    ["Sed Do", "Eiusmod Tempor", "Incididunt Ut", "Passed"],
    ["", "Labore Et", "", "Pending"],
    ["", "Dolore Magna", "", "In Progress"],
    ["Aliqua Enim", "Ad Minim", "Veniam Quis", "Completed"],
    ["", "Nostrud Exercitation", "Ullamco Laboris", "Skipped"],
    ["", "Nisi Ut", "Aliquip Ex", "Blocked"],
    ["", "Ea Commodo", "Consequat Duis", "Passed"],
    ["Aute Irure", "Dolor In", "Reprehenderit In", "Failed"],
    ["", "Voluptate Velit", "Esse Cillum", "Passed"]
  ]
}
```

## Sample Output - CSV

```json
First Name,Last Name,Email,Phone Number,Address,City,State,Zip Code
John,Doe,example@example.com,123-456-7890,123 Main Street,Anytown,CA,12345
Jane,Smith,sample@example.com,987-654-3210,456 Oak Avenue,Somewhere,NY,67890
Michael,Johnson,placeholder@example.com,555-123-4567,789 Pine Road,Elsewhere,TX,54321
```


# Fetch Slack History Block

Fetch recent messages from a Slack channel.

The Fetch Slack History block retrieves all messages from a specified Slack channel within a chosen date range.

## Configuration&#x20;

### Account&#x20;

#### Dynamic (Ask at runtime)

This setting will ask a user to connect their Slack account when they run the app.

#### Connect a New Account

Follow the instructions on the pop-up window to directly connect MindStudio to your Slack account.&#x20;

### Channel

Select the channel you'd like to retrieve messages from.

### Max Results

Select the max number of messages to be returned on each run.

### Date Range&#x20;

#### After

The AI will only return messages after this date.

#### Before&#x20;

The AI will only return messages before this date.

### Output Variable&#x20;

Save the output messages to a variable.&#x20;


# Fetch YouTube Captions

Fetch captions from a YouTube video in a MindStudio workflow

{% embed url="<https://www.youtube.com/embed/6z-L5tPndeQ>" %}

## Configuration&#x20;

### Video URL

Enter the URL for the Youtube video you want to fetch. This section can include variables.&#x20;

### Output Variable

Save the video captions to a variable. Example: `Youtube_Captions`

### Format

Select the format you want the captions to be exported as. The options include:

* **Plain Text**&#x20;
* **JSON**

### Language

Select the language you want to export the video captions as. English is selected by default.&#x20;

## Sample Output - Plain Text

```json
[00:05] Lorem ipsum dolor sit amet, consectetur adipiscing elit.

[00:07] Nullam vestibulum quam nec volutpat malesuada.

[00:09] Fusce tempor magna mi, non hendrerit lectus pulvinar vel.

[00:12] Sed euismod, velit vel bibendum bibendum,

[00:13] velit sapien bibendum massa,

[00:15] et aliquam nisl nunc vel massa.

...
```

## Sample Output - JSON

```json
[
    {
        "text": "Lorem ipsum dolor sit amet",
        "start": 5.779,
        "duration": 3.881
    },
    {
        "text": "consectetur adipiscing elit",
        "start": 7.98,
        "duration": 4.199
    },
    {
        "text": "sed do eiusmod tempor incididunt",
        "start": 9.66,
        "duration": 4.139
    }
]
```


# Fetch YouTube Channel

Fetch details from a YouTube channel in a MindStudio workflow

{% embed url="<https://www.youtube.com/embed/eNgrF08DjjU>" %}

## Configuration&#x20;

### Channel URL

Enter the URL for the Youtube channel that you want to fetch. This section can include variables.&#x20;

### Output Variable&#x20;

Save the channel data to a variable. Example: `YTchannel_data`

### Format

The Youtube channel data will always be exported in **JSON**.

## Sample Output

```json
{
  "about": {
    "description": "One word. Here you'll find a 360-degree approach that weaves together the mental, physical, spiritual, emotional, and environmental aspects of well-being.",
    "subscribers": 168000,
    "videos": 770,
    "views": 12436659,
    "joined_date": "2010-01-31",
    "joined_date_text": "Joined Jan 31, 2010",
    "country": "United States",
    "links": [
      {
        "title": "Example Website",
        "link": "http://www.example.com/"
      },
      {
        "title": "Newsletters",
        "link": "https://www.example.com/newsletters"
      },
      {
        "title": "Social Media",
        "link": "https://www.instagram.com/example/"
      },
      {
        "title": "Social Platform",
        "link": "https://www.tiktok.com/@example"
      }
    ]
  },
  "channel": {
    "handle": "@example",
    "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "title": "Example Podcast",
    "subscribers": 168000,
    "videos": 770,
    "description": "Generic description of wellness approach.",
    "keywords": "wellness health example",
    "tags": ["wellness", "health", "example"],
    "available_countries": ["US"],
    "first_link": "http://www.example.com/",
    "is_family_safe": true,
    "banner": "https://example.com/banner.jpg",
    "avatar": "https://example.com/avatar.jpg"
  },
  "highlighted_video": {
    "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "title": "Example Podcast Episode",
    "link": "https://www.youtube.com/watch?v=example",
    "description": "Sample podcast description",
    "external_links": ["https://example.com"],
    "views": 92958,
    "published_time": "10 months ago"
  }
}
```


# Fetch YouTube Comments

Fetch all comments from a YouTube video in a MindStudio workflow

{% embed url="<https://www.youtube.com/embed/MIOPkJJDElY>" %}

## Configuration&#x20;

### Video URL

Enter the URL for the video you want to fetch comments from. This section can include variables.&#x20;

### Pages

Specify the numbers of pages you want to scrape. The default will always be set to 1. The max amount of pages that can be scraped is 5.

### Output Variable

Store the returned Youtube comments in a variable. Example: `YTcomments`

### Format&#x20;

Select the format you want the YouTube comments exported as. Options include:

* **Plain Text**&#x20;
* **JSON**&#x20;

## Sample Output - Plain Text

```json
@user-a1b2c: Lorem ipsum dolor sit amet, consectetur adipiscing elit.

@user-d3e4f: Nulla facilisi. Sed euismod, velit vel bibendum bibendum.

@user-g5h6i: Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae.

@user-j7k8l: Praesent eget nisl a massa viverra condimentum.

@user-m9n0o: Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh.

@user-p1q2r: Maecenas sed diam eget risus varius blandit sit amet non magna.

@user-s3t4u: Donec ullamcorper nulla non metus auctor fringilla.

@user-v5w6x: Cras mattis consectetur purus sit amet fermentum.

@user-y7z8a: Nullam quis risus eget urna mollis ornare vel eu leo.

@user-b9c0d: Cum sociis natoque penatibus et magnis dis parturient montes.

@user-e1f2g: Aenean lacinia bibendum nulla sed consectetur.

@user-h3i4j: Etiam porta sem malesuada magna mollis euismod.

@user-k5l6m: Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh.

@user-n7o8p: Maecenas faucibus mollis interdum.

@user-q9r0s: Sed posuere consectetur est at lobortis.

@user-t1u2v: Cum sociis natoque penatibus et magnis dis parturient montes.

@user-w3x4y: Integer posuere erat a ante venenatis dapibus posuere velit aliquet.

@user-z5a6b: Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.
```

## Sample Output - JSON

```json
[
    {
        "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "link": "https://www.youtube.com/watch?v=example-link",
        "published_date": "2 years ago",
        "text": "Sample comment text",
        "likes": 41,
        "author": "John Doe",
        "authorLink": "https://www.youtube.com/@example-channel",
        "authorImg": "https://example.com/profile-image.jpg"
    }
]
```


# Fetch YouTube Video

Fetch details from a YouTube video in a MindStudio workflow

{% embed url="<https://www.youtube.com/embed/3HEoSywNVcE>" %}

## Configuration&#x20;

### Video URL

Enter the URL for the Youtube video you want to fetch. This section can contain variables.&#x20;

### Output Variable&#x20;

Save the returned Youtube video data in a variable. Example: `my_video`

### Format&#x20;

The returned Youtube video data will always be exported in **JSON**.&#x20;

## Sample Output

```json
{
  "video": {
    "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "title": "Sample Music Video",
    "length_seconds": 1024,
    "views": 71936,
    "likes": 551,
    "author": "John Doe",
    "category": "Music",
    "published_time": "Jan 1, 2023",
    "description": "Sample description",
    "keywords": ["music", "sample", "video"],
    "is_family_safe": true,
    "thumbnail": "https://example.com/thumbnail.jpg"
  },
  "channel": {
    "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "name": "John Doe",
    "link": "http://example.com",
    "subscribers": 32400,
    "thumbnail": "https://example.com/channel_thumbnail.jpg"
  },
  "comment": {
    "total": 24
  },
  "available_transcripts_languages": [
    {
      "name": "English (auto-generated)",
      "lang": "en"
    }
  ],
  "recommended_videos": {
    "videos": [
      {
        "position": 1,
        "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "title": "Sample Recommended Video",
        "link": "https://example.com/video",
        "views": 846988,
        "channel": {
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
          "title": "John Doe",
          "link": "https://example.com/channel",
          "thumbnail": "https://example.com/channel_thumbnail.jpg"
        },
        "length": "10:00",
        "published_time": "1 year ago",
        "thumbnail": "https://example.com/video_thumbnail.jpg"
      }
    ]
  }
}
```


# Find Coda Table Row

Fetch data from a table row in Coda.

## Configuration

### Account

**Dynamic (Ask at runtime)**

This setting will ask a user to login to their Coda account when they run the app.

### **Connect a New Account**

Follow the instructions on the pop-up window to directly connect MindStudio to your Coda account.&#x20;

### Document&#x20;

Enter the document ID for where the table exists. You may include variables.

### Table

Enter the table ID for the table you are fetching data from.&#x20;

### Output Variable

Save the returned row data to a variable. The returned data will be a JSON object.&#x20;

### Row Data

Provide the search criteria. At least one field should be specified to a find a specific row. **(optional)**


# Find Contact Email for Website

Use Hunter.io to find emails for a given website in a MindStudio workflow

## Configuration&#x20;

### Domain

Enter the domain for the company whose emails you want to search for. This section can include variables.&#x20;

### Output&#x20;

Save the returned data as a variable. Example: `Contact_Emails`

## Sample Output

```json

  "data": {
    "domain": "intercom.com",
    "disposable": false,
    "webmail": false,
    "accept_all": true,
    "pattern": "{first}",
    "organization": "Intercom",
    "description": "Faster resolutions, higher CSAT, and lighter support volumes with the only platform to combine the power of automation and human customer support.",
    "industry": "Software Development",
    "twitter": null,
    "facebook": null,
    "linkedin": null,
    "instagram": null,
    "youtube": null,
    "technologies": ["amazon-web-services", "facebook", "intercom", "marketo", "node-js", "react", "recaptcha", "sentry"],
    "country": null,
    "state": null,
    "city": null,
    "postal_code": null,
    "street": null,
    "headcount": "501-1000",
    "company_type": "Educational Institution",
    "emails": [
      {
        "value": "ciaran@intercom.com",
        "type": "personal",
        "confidence": 92,
        "sources": [
          {
            "domain": "github.com",
            "uri": "http://github.com/ciaranlee",
            "extracted_on": "2015-07-29",
            "last_seen_on": "2017-07-01",
            "still_on_page": true
          },
          {
            "domain": "blog.intercom.com",
            "uri": "http://blog.intercom.com/were-hiring-a-support-engineer/",
            "extracted_on": "2015-08-29",
            "last_seen_on": "2017-07-01",
            "still_on_page": true
          },
          ...
        ],
        "first_name": "Ciaran",
        "last_name": "Lee",
        "position": "Support Engineer",
        "position_raw": "Support Engineer",
        "seniority": "senior",
        "department": "it",
        "linkedin": null,
        "twitter": "ciaran_lee",
        "phone_number": null,
        "verification": {
          "date": "2019-12-06",
          "status": "valid"
        }
      },
      ...
    ],
    "linked_domains": []
  },
  "meta": {
    "results": 35,
    "limit": 10,
    "offset": 0,
    "params": {
      "domain": "intercom.com",
      "company": null,
      "type": null,
      "seniority": null,
      "department": null
    }
  }
}
```


# Find Email

Use Hunter.io to find a person's email for a domain in a MindStudio workflow

## Configuration&#x20;

### Domain

Enter the domain that you want to use to find the email. This section can include variables.&#x20;

### Name

Enter the **first name** and **last name** of the person whose email you are searching for.&#x20;

### Output&#x20;

Save the returned data as a variable. Example: `Name_Email_1`

## Sample Output

```json
{
  "data": {
    "first_name": "Alexis",
    "last_name": "Ohanian",
    "email": "alexis@reddit.com",
    "score": 97,
    "domain": "reddit.com",
    "accept_all": false,
    "position": "Cofounder",
    "twitter": null,
    "linkedin_url": null,
    "phone_number": null,
    "company": "Reddit",
    "sources": [
      {
        "domain": "redditblog.com",
        "uri": "http://redditblog.com/2008/10/22/widgets-get-an-upgrade-and-a-firefox-extension-that-will-rock-your-world",
        "extracted_on": "2018-10-19",
        "last_seen_on": "2021-05-18",
        "still_on_page": true
      },
      ...
    ],
    "verification": {
      "date": "2021-06-14",
      "status": "valid"
    }
  },
  "meta": {
    "params": {
      "first_name": "Alexis",
      "last_name": "Ohanian",
      "full_name": null,
      "domain": "reddit.com",
      "company": null,
      "max_duration": null
    }
  }
}
```


# Add Note (ActiveCampaign)

Add a note to contact in ActiveCampaign

## Configuration&#x20;

### Connection <a href="#account" id="account"></a>

**Dynamic (Ask at runtime)**

This setting will ask a user to login to their ActiveCampaign account when they run the app.

**Connect a New Account**

Follow the instructions on the pop-up window to directly connect MindStudio to your ActiveCampaign account.

### Contact ID

Enter the contact ID of the contact you want to add a note to. This section can include variables.

### Note&#x20;

Enter the body of the note you want to add to your contact. This section can include variables.&#x20;


# Generate Asset Block

Generate HTML assets.

The Generate Asset block allows users to generate designs and PDFs from a source HTML document.&#x20;

{% embed url="<https://www.youtube.com/embed/iA8XKMCrLM0>" %}

## Configuration&#x20;

### Source Document&#x20;

Provide the source document that will generate your design. Types of allowed source documents include:

1. HTML Document
2. Markdown
3. Single Page Application (SPA) Bundle&#x20;

Variables can be included in the source document.

#### The HTML Developer Environment&#x20;

By selecting the expand icon within the source document area, you can open a full screen development environment to easily edit the HTML.&#x20;

<figure><img src="/files/ucdOTQMHkk0sotHxTskO" alt="" width="375"><figcaption></figcaption></figure>

The developer environment provides you with additional capabilities:

**Generate HTML:** Generate HTML code based on a text prompt. You can specify any variables that you'd like to be used in the asset.

**Modify HTML:** Edit and update your HTML code with a text a prompt.&#x20;

**Test Data**: Pass test data through the block and see the output results.

### Output

Configure the output settings for the Generate Asset block.

#### Output Variable&#x20;

Provide an output variable name for the generated result. Example: `Asset_1`

#### Format

Select the output format for the generated asset. Options include:

1. PDF
2. Image (PNG)
3. HTML

#### Rehost Media

Choose to automatically re-host any third party images in the final output.

#### Page Size & Orientation

Select the page size for your generated asset:&#x20;

1. Letter&#x20;
2. A4
3. Full Page&#x20;
4. Custom Dimensions (if selected you will supply the height and width in pixels)

Select the orientation type for your document:

1. Portrait&#x20;
2. Lanscape&#x20;

## Generated Asset Examples

* Instagram Carousels&#x20;
* Canva-like social media posts&#x20;
* Financial Reports&#x20;
* Business Presentations&#x20;
* Resumes&#x20;

## Inserting Variables to your HTML Document&#x20;

Once you've added in your HTML template to the source document environment, you can add variables using Handlebars notation.

### Single Value Variables&#x20;

Single-value variables hold one piece of data (**such as a title, URL, or short text**) in your HTML template. You add them by writing your <mark style="color:red;">`{{variableName}}`</mark>, and when the template runs, it will be replaced with its actual value.

#### Example:

```html
<!-- Page title -->
<h1>{{page.title}}</h1>

<!-- Subtitle -->
<h2>{{page.subtitle}}</h2>

<!-- Image source -->
<img src="{{page.imageURL}}" alt="{{page.imageAltText}}" />
```

### Looping Arrays

When your JSON contains arrays you can use the <mark style="color:red;">`each`</mark> helper to loop through a list of sections in your array.&#x20;

#### Example:

```html
{{#each page.sections}}
  <section>
    <h3>{{this.header}}</h3>
    <p>{{this.body}}</p>
  </section>
{{/each}}
```

### Conditional Rendering

You can use <mark style="color:red;">`if-else`</mark> to render a block of HTML when a value meets a certain condition.&#x20;

#### Example:&#x20;

```html
{{#if page.featured}}
  <div class="featured-banner">
    Featured article: {{page.title}}
  </div>
{{/if}}
```

For more information on Handelbars notation, please review our article on [Using Handlebars Templating.](broken://pages/0aaXqv40EzKg0rdNzrMI)


# Generate Chart Block

Create charts in your AI Agents

The **Generate Chart Block** creates a chart image based on JSON-formatted data, allowing you to dynamically generate visualizations in your workflows. The resulting image URL can be saved as a variable for further use in the workflow.

## Configurations

### **Chart Data**

Provide the data for the chart in valid JSON format. This must follow the `data` object structure as used in Chart.js.

### **Width and Height**

Specify the dimensions of the chart in pixels:

* **Width**: The horizontal size of the chart.
* **Height**: The vertical size of the chart.

Default dimensions are 500x300.

### **Output Variable**

Creates a new variable and saves the chart image URL to it. Enter a `variable_name` \*\*\*\*to store the image URL for later use in the workflow.

## How to Generate Chart Data

### **1. Select a Chart Template**

Visit [QuickChart Gallery](https://quickchart.io/gallery/), where you can browse a variety of chart examples. Open a chart you like, then locate the `data` object in the chart configuration.

### **2. Copy the `data` Object**

Only copy the portion labeled as `data` from the chart’s JSON.

![chart1.png](/files/HgT7iBg1B2qoEt808lhA)

### **3. Convert to JSON**

Some chart examples are provided in plain JavaScript objects instead of JSON. To ensure compatibility:

1. Paste the `data` object into [ConvertSimple: JavaScript to JSON Converter](https://www.convertsimple.com/convert-javascript-to-json/).
2. Review the output on the right side to confirm proper JSON formatting.
3. Copy to Clipboard.

#### Example JSON Data for a Bar Chart:

```json
{
  "labels": [
    "January",
    "February",
    "March",
    "April",
    "May",
    "June",
    "July"
  ],
  "datasets": [
    {
      "label": "Dataset 1",
      "backgroundColor": "rgba(255, 99, 132, 0.5)",
      "borderColor": "rgb(255, 99, 132)",
      "borderWidth": 1,
      "data": [
        -31,
        -70,
        -30,
        -33,
        -9,
        14,
        -41
      ]
    },
    {
      "label": "Dataset 2",
      "backgroundColor": "rgba(54, 162, 235, 0.5)",
      "borderColor": "rgb(54, 162, 235)",
      "borderWidth": 1,
      "data": [
        73,
        41,
        29,
        61,
        -65,
        59,
        38
      ]
    }
  ]
}
```

### **4. Paste `JSON` into the Chart Data Configuration**

* Open the **Manual Input** field for the corresponding chart type inside the app.
* Paste the converted JSON data into the **Chart Data** configuration.

[View Chart.js Docs to learn more about generating JSON for your charts →](https://www.chartjs.org/docs/2.9.4/charts/)


# Generate Image Block

Use AI models to generate images in your AI Agents.

The **Generate Image Block** sends a text prompt to an AI model and returns an image URL based on the description provided.

## **Configurations**

### **Prompt**

Define the text description of the image you want the AI model to generate. Use `{{variables}}` to make the prompt dynamic based on a previous step in the workflow.

[Learn about variables →](/building-ai-agents/variables)

### **Output Variable**

Creates a new variable and saves the image URL to it. Enter a `variable_name` \*\*\*\*to store the response for later use in the workflow.

### **Model Settings**

Choose from MindStudio’s library of image-generation models, optimized for various styles and quality levels.

Each AI image model may have unique configuration options for fine-tuning outputs, such as additional style parameters, rendering quality, negative prompt or advanced filters. make sure you review the specific settings for each model you select.

***

## Writing Image Prompts

Crafting effective prompts for image generation ensures that the AI model produces visuals that align with your expectations. A good prompt provides clarity, context, and enough detail to guide the model’s output without being overly restrictive.

### **Tips for Writing Effective Prompts**

* **Be Clear and Specific:** Use precise language to describe the desired image. Focus on key visual elements, such as objects, environments, colors, and textures.
* **Add Context and Atmosphere:** Describe the mood, setting, or story behind the image to provide creative direction.
* **Include Style and Aesthetic Details:** Specify the art style or medium (e.g., photorealistic, watercolor, comic-style, abstract). Mention influences like "minimalist," "vintage," or "cinematic glow."
* **Use Action and Interaction:** Incorporate actions or interactions to make the image dynamic.
* **Provide a Color Palette:** Specify dominant colors to guide the tone of the image.
* **Specify Composition and Layout:** Include details about positioning, perspective, and framing.
* **Add Creative Flourishes:** Suggest unique or imaginative elements to include in the image.

### **Common Pitfalls to Avoid**

* **Being Too Vague**: "Create an image of a tree." → Lacks detail and context.
* **Overloading the Prompt**: Avoid including too many unrelated elements, which can confuse the model.
* **Leaving Out Key Details**: Forgetting to mention the desired style, mood, or setting can lead to generic results.

### **Example Image Prompt**:

> Generate a hyper-realistic image of a futuristic cityscape at sunset. The city should feature towering skyscrapers with glass facades reflecting the orange and pink hues of the sunset.
>
> Include floating vehicles with soft neon underlights flying between the buildings, creating a sense of motion.
>
> In the foreground, add a bustling street market with humans and humanoid robots interacting, showcasing a blend of futuristic technology and traditional market stalls.
>
> Use a warm color palette dominated by orange, pink, and gold, with subtle accents of teal and blue in the neon lights.
>
> The sky should be filled with soft clouds, and the setting sun should cast long shadows across the scene.
>
> Ensure the image feels dynamic and alive, capturing both the grandeur of the skyline and the vibrancy of the street-level activity. The overall style should balance photorealism with a slight cinematic glow for a futuristic yet inviting atmosphere.

#### Example Output (DALL-E 3):

![DALL·E Output: A hyper-realistic futuristic cityscape at sunset, featuring towering skyscrapers with glass facades reflecting orange and pink hues. Floating vehicles](/files/kDgJi4DWFDIVfOyk0smW)

## Image CDN Transformation Parameters

MindStudio’s Image CDN lets you dynamically resize and optimize images using URL query parameters. Just add these parameters to your image URL to customize how it's delivered.

#### Base URL

All images are served from:

```
https://images.mindstudio-cdn.com/
```

To transform an image, append query parameters to the URL like this:

```
https://images.mindstudio-cdn.com/path/to/image.jpg?w=400&h=300&fm=webp&fit=crop
```

***

### Supported Parameters

#### `w` – Width

* **What it does:** Sets the width of the image in pixels.
* **Example:** `?w=400` (image will be resized to 400px wide)

***

#### `h` – Height

* **What it does:** Sets the height of the image in pixels.
* **Example:** `?h=300` (image will be resized to 300px tall)

***

#### `fm` – Format

* **What it does:** Changes the file format of the image.
* **Supported values:**
  * `webp`
  * `avif`
  * `jpeg`
  * `auto` (lets the CDN choose the best format based on the user's device)
* **Example:** `?fm=webp`

***

#### `fit` – Fit Mode

* **What it does:** Controls how the image fills the width and height you provide.
* **Supported values:**
  * `crop` – Crops the image to fit exactly
  * `cover` – (default) Resizes while maintaining aspect ratio to cover the full area
* **Example:** `?fit=crop`

***

### Tips

* You can combine parameters, like `?w=400&h=300&fm=webp`.
* If no parameters are added, the original image is served as-is.
* These transformations are handled automatically and served via a fast global CDN.


# Generate Music Block

Use AI to generate music in your AI agents.

This block generates a song with lyrics based on a text prompt provided.

## Configuration

### Prompt

Type in the prompt that will be used to generate the music. The section can include variables.

### Output

#### Output Variable

Save the generated music URL to a variable that can be used in other parts of your workflow.

#### History Access

Include the output variable in the workflow's history or hide it. Set to **Include** by default.

### Model Settings&#x20;

#### Select Model

Choose and configure the music generation model. Available models include:

* ElevenLabs Music
* Minimax Music 2.5

{% hint style="info" %}
Please note that different models will have different configuration settings.
{% endhint %}


# Generate Text Block

Use an AI model to generate text in your AI Agents.

The Generate Text Block sends a text prompt to an AI model and returns the AI Model’s response.

## Configurations

### **Prompt**

Define the instructions sent to the AI model. Use `{{variables}}` to make the prompt dynamic and context-aware.

[Learn about variables →](/building-ai-agents/variables)

### **Response Behavior**

Choose how the AI response is handled:

* **Display to User (Default)**: Shows the response to the end user.
* **Assign to Variable:** Creates a new variable and saves the AI model’s response to it. Enter a `variable_name` \*\*\*\*to store the response for later use in the workflow.

### Output Schema

Choose the format of the AI response:

#### **Text (Default):**&#x20;

Outputs plain or markdown-formatted text, suitable for display or emails.

#### **JSON:**&#x20;

Outputs the response in JSON format, ideal for structured data outputs required for integrations or further processing via code.

**Example Schema:**

```json
{
    "title": "string",
    "summary": "string",
    "date": "string"
}
```

#### **CSV:**&#x20;

Outputs data in CSV format, ideal for tabular data or spreadsheets.

**Example Schema:**

```markdown
Title,Summary,Date
```

For both JSON and CSV outputs, you can explicitly define the output structure by providing a sample output schema.

### **Model Settings**

The default setting is inherited from the underlying model configured in the **Model Settings Tab**. You can override this setting by choosing and configuring a different AI Model specifically for this block.

* **Model Selection**: Choose a different model if needed for the block.
* **Temperature**: Adjust randomness in the response:
  * Lower values = more predictable, consistent results.
  * Higher values = more creative, varied responses.
* **Response Length**: Limit the output size in tokens to suit your needs.

## **Using Conditional Logic in Your Prompt**

The Generate Text Block supports conditional logic to dynamically adjust the text prompt based on workflow variables. This is done using `{{#if}}`, `{{else}}`, and `{{/if}}` statements.

### **How to Use Conditionals**:

#### **Basic Syntax**:

```markdown
{{#if myVariable}}
Use {{myVariable}} to perform this task.
{{else}}
Perform a default action if myVariable is undefined.
{{/if}}
```

**Example:**

```markdown
{{#if customerName}}
Write a thank-you email to {{customerName}}, highlighting our latest offers.
{{else}}
Write a general thank-you email to all customers, highlighting our latest offers.
{{/if}}
```

#### **Nested Conditionals**:

Combine multiple `{{#if}}` statements for complex logic:

```markdown
{{#if userType}}
    {{#if isPremium}}
    Generate a personalized message for our premium user {{userType}}.
    {{else}}
    Generate a message for our standard user {{userType}}.
    {{/if}}
{{else}}
Generate a message for a general audience.
{{/if}}
```


# Generate Video Block

Use AI to generate video in your AI agents.

This block generates a video based on a text prompt provided.

## Configuration

### Prompt

Type in the prompt that will be used to generate the video. The section can include variables.

### Output Variable

Save the generated video URL to a variable that can be used in other parts of your workflow.&#x20;

### Model Settings&#x20;

#### Select Model

Choose and configure the video generation model. Available models include:

* Google Veo 2
* Google Veo 3
* Luma Labs Ray 1.6
* Luma Labs Ray 2
* Luma Labs Ray Flash 2

{% hint style="info" %}
Please note that different models will have different configuration settings.
{% endhint %}


# Get Airtable Record

Fetch a record from Airtable.

## Configuration

### Account

**Dynamic (Ask at runtime)**

This setting will ask a user to login to their Airtable account when they run the app.

### **Connect a New Account**

Follow the instructions on the pop-up window to directly connect MindStudio to your Airtable account.

### Base

Enter the base ID from where the table exists. You may include variables.

### Table

Enter the table ID for where the record exists. You may include variables.

### Record ID

Enter the record ID for the record you want to fetch. You may include variables.

### Output Variable

Save the returned record as a variable.&#x20;


# Get Airtable Table Records

Fetch records from an Airtable table.

## Configuration

### Account

**Dynamic (Ask at runtime)**

This setting will ask a user to login to their Airtable account when they run the app.

### **Connect a New Account**

Follow the instructions on the pop-up window to directly connect MindStudio to your Airtable account.&#x20;

### Base

Enter the base ID for where the table exists. You may use variables.

### Table

Enter the table ID for where you want to fetch the data from.

### Output Format

Select the output format for the returned data. Options include:

* JSON
* CSV

### Limit

Set the maximum number of records to return. The default is set to 100. The max is 1000.

### Output Variable

Set the output variable for the returned data.


# Get Calendar Event

Retrieve an event from your Google Calendar.

## Configuration

### Account

#### Add account&#x20;

Connect your Google Calendar account by signing in with the proper credentials.

#### Dynamic (Ask at Runtime)

Ask the user to connect their account when the AI agent runs.&#x20;

### Event ID

Add the event ID for calnedar event to be retrieved. Can be a variable.

### Export Format&#x20;

Select the export format for the returned calendar events. Options include:

* Text (XML)
* JSON

### Output Variable

Save the returned events to a variable.&#x20;


# Get Coda Page

Fetch data from a Coda page.

## Configuration

### Account

**Dynamic (Ask at runtime)**

This setting will ask a user to login to their Coda account when they run the app.

### **Connect a New Account**

Follow the instructions on the pop-up window to directly connect MindStudio to your Coda account.&#x20;

### Document

Enter the document ID for where the page exists. You may include variables.

### Page

Enter the page ID for the page you are fetching data from. You may include variables.

### Output Format

Select the output format for the returned data. Options include:

* HTML
* Markdown

### Output Variable

Save the returned data to a variable.&#x20;


# Get Coda Table Rows

Fetch row data from a table in Coda.

## Configuration

### Account

**Dynamic (Ask at runtime)**

This setting will ask a user to login to their Coda account when they run the app.

### **Connect a New Account**

Follow the instructions on the pop-up window to directly connect MindStudio to your Coda account.&#x20;

### Document&#x20;

Enter the document ID for where the table exists. You may include variables.

### Table

Enter the table ID for where you a getting the row data from.  You may include variables.

### Limit

Enter the number of rows you want to return. Must be a valid number. Leaving this section blank will return all rows. **(optional)**

### Output Format&#x20;

Select the output format for the returned data. Options include:

* JSON
* CSV

### Output Variable

Save the returned data to a variable.


# Get HubSpot Company

Fetch company details from HubSpot

## Configuration

### Account

**Dynamic (Ask at runtime)**

This setting will ask a user to login to their HubSpot account when they run the app.

### **Connect a New Account**

Follow the instructions on the pop-up window to directly connect MindStudio to your HubSpot account.

### Search By

Select the method you want to search by. Options include:

* Company Domain: Enter the domain for the company you want to fetch. You may include variables.
* Company ID: Enter the ID for the company you want to fetch. You may include variables.&#x20;

### Output Variable

Save the returned company details to a variable.&#x20;


# Get HubSpot Contact

Fetch contact details from HubSpot.

## Configuration

### Account

**Dynamic (Ask at runtime)**

This setting will ask a user to login to their HubSpot account when they run the app.

### **Connect a New Account**

Follow the instructions on the pop-up window to directly connect MindStudio to your HubSpot account.

### Search By

Select the method you want to search by. Options include:

* **Contact Email:** enter the email for the contact you are fetching. May include variables.
* **Contact ID:** Enter the ID for the contact you are fetching. May include variables.&#x20;

### Output Variable

Save the contact details as a variable.&#x20;


# HTTP Request

Request information from a web server to be used in your MindStudio workflows

## Configuration&#x20;

### URL

Enter a valid URL to send the request to. This section can include variables.&#x20;

### Method

Select the method you want to use from the dropdown menu. Options include:

* **GET:** Retrieve data without modifying any underlying resources.
* **POST:** Create or update a resource.
* **PATCH:** Make partial updates to an existing resource.
* **PUT:** Update an entire resource.
* **DELETE:** Remove a specified resource.
* **HEAD:** Retrieve only the header information.
* **OPTIONS:** Discover the communication options available for a specific resource.

### Headers

Use **Key Value pairs** to include HTTP headers in the request. This section can include variables.

### Parameters

Use **Key Value pairs** to add query parameters to further specify or filter the data requested. This section can include variables.

### Content Type

Select the content type for the request body. Options include:

* **text/plain**
* **text/HTML**
* **application/XML**
* **application/JSON**
* **application/x-www-form-urlencoded**
* **multipart/form-data**
* **custom**
* **none**

### Body

Add the data payload that will be sent in the request. The body structure will differ depending on the content type.

### Output Variable&#x20;

Save the response as a varaible. Example: `HTTPresult`


# Jump Block

Route the current workflow to a completely different workflow

{% embed url="<https://www.youtube.com/embed/XV3eopnYINM>" %}

The **Jump Block** enables you to route the current workflow to a completely different workflow. This block is ideal for modularizing workflows or reusing common processes across multiple workflows.

## **Configurations**

### **Workflow**

* **Select the Workflow**: Use the dropdown menu to choose an existing workflow.
* **Create a New Workflow**: Click the **New\...** button to create and configure a new workflow directly. Once created, it will automatically be available in the dropdown.


# Lip Sync Video Block

Use AI to generate lip-synced and/or translated video in your AI agents. Sources may include image, audio, and/or video.

This block generates a video that lip syncs or translates from source asset(s). Sources may include the following:

* audio+video
* image+audio
* video

## Configuration

### Output

#### Output Variable

Save the generated video URL to a variable that can be used in other parts of your workflow.

#### History Access

Include the output variable in the workflow's history or hide it. Set to **Include** by default.

#### Branding

Include a small MindStudio watermark on the video. **None** by default.

### Model Settings&#x20;

#### Select Model

* ByteDance LatentSync (audio+video)
* ByteDance Omni Human 1.5 (image+audio)
* HeyGen Video Translate (video)
* Kling AI Avatar Standard (image+video)
* MeiGen Infinitetalk (image+audio)

{% hint style="info" %}
Please note that different models will have different configuration settings.
{% endhint %}


# List Upcoming Calendar Events

List upcoming events from your Google Calendar

## Configuration&#x20;

### Account

#### Add account&#x20;

Connect your Google Calendar account by signing in with the proper credentials.

#### Dynamic (Ask at Runtime)

Ask the user to connect their account when the AI agent runs.&#x20;

### Export Format&#x20;

Select the export format for the returned calendar events. Options include:

* Text (XML)
* JSON

### Limit

Specify the max limit of events that will be returned.

### Output Variable

Save the returned events to a variable.&#x20;


# Logic Block

Route block paths based on AI decision making

{% embed url="<https://www.youtube.com/embed/XV3eopnYINM>" %}

The **Logic Block** uses AI to dynamically decide which route to take based on the most likely condition. Unlike the **Menu Block**, where users make the choice, the **Logic Block** evaluates predefined conditions and autonomously selects the appropriate path. This is ideal for automating decisions without direct user input.

## **Configurations**

### **Conditions**

Define the conditions the AI will evaluate to determine the most likely path. Each condition corresponds to a case that the workflow can route to.

#### **Add a Condition**:

Use the **+ Add Condition** button to define multiple cases. Each condition should describe a unique scenario the AI can evaluate. Conditions should incorporate variables to make routing dynamic and context-aware.

**Example 1: Customer Sentiment**

* **Case #1**: `The customer is satisfied with the service based on the following interaction:`` `<mark style="color:red;">`{{message_transcript}}`</mark>
* **Case #2**: "The customer is requesting support based on the following interaction: <mark style="color:red;">`{{message_transcript}}`</mark>"

**Example 2: Order Status**

* **Case #1**: <mark style="color:red;">`{{order_status}}`</mark>` ``== "complete"`
* **Case #2**: <mark style="color:red;">`{{order_status}}`</mark>` ``== "incomplete"`

#### **Set a Destination**:

For each condition, click the **Select Destination** button and choose a block on the canvas where the Logic Block should route if that condition is selected. Once connected, the circle next to the destination button will fill in, confirming the route.

### **Evaluation Settings**

Configure how the AI evaluates the conditions.

### **Engine**

The Logic Block uses AI engines to evaluate conditions and make routing decisions. Choose an engine based on your workflow's complexity and precision requirements:

* **Default Engine**
  * Reliable and general-purpose engine for most use cases.
  * Optimized for simple workflows requiring consistent and predictable decisions.
* **Experimental Engine**
  * Suitable for advanced use cases exploring cutting-edge capabilities.
  * May include beta features, offering innovative decision-making strategies.
  * Recommended for testing new workflows or unconventional logic setups.
* **Haiku Engine**
  * Low cost, low latency engine for quick decision making
  * May not be as accurate as other engines

***

## **How It Works**

1. The Logic Block presents multiple conditions to the AI engine.
2. Based on the input and context, the AI evaluates the conditions and determines the most likely match.
3. The Logic Block routes the workflow to the destination associated with the selected condition.

***

## Best Practices

* **Clearly Define Conditions**: Use specific and distinct criteria for each case to avoid overlaps.
* **Test Scenarios**: Simulate workflows to ensure the AI selects the expected routes.
* **Use Variables**: Incorporate variables in conditions to dynamically adjust the decision-making process.


# Menu Block

Route block paths based on human interaction

{% embed url="<https://www.youtube.com/embed/XV3eopnYINM>" %}

The **Menu Block** allows you to present users with a question or statement and multiple options to choose from. Based on the selection, the workflow will route to a corresponding block path. It is ideal for guiding user interactions, creating decision points, and defining different workflow paths.

## **Configurations**

### **Prompt**

Enter the question or statement to display to the user. Use clear and concise language to ensure the user understands the options presented.

**Example**: “What would you like to do next?”

### **Options**

Define the selectable options for the user and map each option to a specific route in the workflow.

* Add options using the **+** button.
* Each option can trigger a unique path or action in the workflow.

**Example Options**:

1. “View Account Details” → Route to the account information workflow.
2. “Contact Support” → Route to a support request form.

***

## **How to Route Options**

1. **Add Options:** Use the **+** button at the bottom of the **Options** list to add new options. Each option represents a distinct choice the user can select.
2. **Click the Circle:** Click the circle next to the option you want to route. The circle will highlight, indicating that the option is active for routing.
3. **Click on the Target Block:** On the workflow canvas, click on the block you want the option to connect to.
4. **Confirm the Connection:** Once the route is connected, the circle next to the option will fill in completely.

***

## Best Practices

* **Keep Options Clear**: Use descriptive labels for each option to help users make informed choices.
* **Test Routes**: Verify that each option routes correctly to its intended workflow segment.

***

The **Menu Block** simplifies decision-making by providing clear options and directing users to the appropriate workflows, making it an essential component for interactive processes.


# Post to Slack Block

Send messages from your AI Agent directly to a Slack channel

The **Post to Slack Block** allows you to send messages directly to a Slack channel as part of your workflow. This block is perfect for automating updates, team notifications, or alerts with customizable formatting.

## **Configurations**

### **Message Type**

Choose how the message will be formatted before sending to Slack:

* **Markdown Text**: Use Slack-compatible Markdown to create formatted text messages \
  (e.g., **`*bold*`**, *`_italic_`*, **`>`** for blockquotes).
* **Slack Block Kit Blocks**: Design a highly customized message layout using Slack's **Block Kit**. Block Kit enables advanced formatting, such as interactive elements, sections, dividers, and more. Learn more at [Slack Block Kit Documentation](https://api.slack.com/block-kit).

### **Channel**

Connect to a Slack channel where the message will be posted.

* Click **Add to Slack** to authenticate and link your Slack account.
* Once connected, select the desired channel from your Slack workspace.

#### **Message Content**

Compose your message in markdown or build your custom Slack block.

***

## How to Write Slack Blocks

Slack blocks are modular and interactive components used to create rich, visually engaging messages in Slack. With the [Slack Block Kit](https://api.slack.com/block-kit), you can stack and arrange blocks to design powerful message layouts that deliver information or enable user interactions.

### **Block Basics**

Blocks are the building units for creating structured, visually appealing Slack messages. They are stackable components designed to display text, images, buttons, and other elements in a flexible, layout-friendly way.

### **Types of Blocks**

Blocks are the core components used to structure and organize the content of your Slack messages.

<table><thead><tr><th width="181">Block Type</th><th>Description</th></tr></thead><tbody><tr><td><strong>Actions</strong></td><td>Contains interactive elements like buttons and menus.</td></tr><tr><td><strong>Context</strong></td><td>Displays small contextual information with images or text.</td></tr><tr><td><strong>Divider</strong></td><td>Adds a horizontal line to separate content.</td></tr><tr><td><strong>File</strong></td><td>Displays information about remote files.</td></tr><tr><td><strong>Header</strong></td><td>Displays large, bold text for headings.</td></tr><tr><td><strong>Image</strong></td><td>Displays standalone images.</td></tr><tr><td><strong>Input</strong></td><td>Collects user input via various input types.</td></tr><tr><td><strong>Rich Text</strong></td><td>Allows formatted and structured text.</td></tr><tr><td><strong>Section</strong></td><td>Displays text alongside optional block elements like buttons or images.</td></tr><tr><td><strong>Video</strong></td><td>Embeds a video player.</td></tr></tbody></table>

### **Block Elements**

Block elements are the interactive or visual components embedded inside blocks to enrich the functionality of your message.

<table><thead><tr><th width="212">Element Type</th><th>Description</th></tr></thead><tbody><tr><td><strong>Button</strong></td><td>Provides users with a direct path to performing actions like confirming tasks.</td></tr><tr><td><strong>Checkboxes</strong></td><td>Allows users to select multiple options from a list.</td></tr><tr><td><strong>Date/Time Pickers</strong></td><td>Enables users to select a date, time, or both.</td></tr><tr><td><strong>Dropdown Menus</strong></td><td>Lets users choose from a list of options.</td></tr><tr><td><strong>Plain Text Input</strong></td><td>Allows users to enter freeform text.</td></tr><tr><td><strong>Radio Buttons</strong></td><td>Limits users to selecting one option.</td></tr><tr><td><strong>Image</strong></td><td>Displays an image as part of a larger block of content.</td></tr><tr><td><strong>Overflow Menu</strong></td><td>Provides a button that shows a list of additional options.</td></tr><tr><td><strong>Multi-Select Menu</strong></td><td>Lets users select multiple options from a dropdown list.</td></tr></tbody></table>

### **Composition Objects**

Composition objects allow you to enhance the structure of blocks and elements, enabling even more customization and interactivity.

<table><thead><tr><th width="257">Composition Object</th><th>Description</th></tr></thead><tbody><tr><td><strong>Confirmation Dialog Object</strong></td><td>Adds a confirmation step to interactive elements like buttons.</td></tr><tr><td><strong>Conversations Filter Object</strong></td><td>Filters the list of options in conversation selector menus.</td></tr><tr><td><strong>Option Object</strong></td><td>Represents a single item in a list of options for selection elements.</td></tr><tr><td><strong>Option Group Object</strong></td><td>Groups options in select menus for better organization.</td></tr><tr><td><strong>Text Object</strong></td><td>Defines text formatting for different blocks and elements.</td></tr><tr><td><strong>Workflow Object</strong></td><td>Contains workflow trigger information for running specific workflows.</td></tr><tr><td><strong>Slack File Object</strong></td><td>Represents a file for use in <strong>Image</strong> or <strong>File</strong> blocks.</td></tr></tbody></table>

***

### **Design Slack Blocks Using Slack's Block Kit Builder**

Slack’s [Block Kit Builder](https://app.slack.com/block-kit-builder/) lets you visually design your blocks, test layouts, and prototype quickly. It provides:

* Drag-and-drop elements to stack and organize blocks.
* Previews to refine your design.
* Click **Copy Payload** button to copy and paste JSON into your app.

### **Slack Block Kit Reference Examples**

#### **Example 1: Simple Task Update**

```json
{
  "blocks": [
    {
      "type": "header",
      "text": {
        "type": "plain_text",
        "text": "Task Update"
      }
    },
    {
      "type": "section",
      "text": {
        "type": "mrkdwn",
        "text": "*Task Completed:* The task `{{taskName}}` is finished!"
      }
    },
    {
      "type": "divider"
    },
    {
      "type": "actions",
      "elements": [
        {
          "type": "button",
          "text": {
            "type": "plain_text",
            "text": "View Task"
          },
          "url": "{{taskLink}}"
        }
      ]
    }
  ]
}
```

#### **Example 2: Collecting User Feedback**

```json
{
  "blocks": [
    {
      "type": "section",
      "text": {
        "type": "mrkdwn",
        "text": "We’d love your feedback! How would you rate your experience?"
      }
    },
    {
      "type": "actions",
      "elements": [
        {
          "type": "radio_buttons",
          "options": [
            {
              "text": {
                "type": "plain_text",
                "text": "Excellent"
              },
              "value": "excellent"
            },
            {
              "text": {
                "type": "plain_text",
                "text": "Good"
              },
              "value": "good"
            },
            {
              "text": {
                "type": "plain_text",
                "text": "Needs Improvement"
              },
              "value": "needs_improvement"
            }
          ]
        }
      ]
    }
  ]
}
```


# Post Video to TikTok

Post a TikTok Video

The **Post Video to TikTok Block** allows you to post videos directly to your TikTok account. Control the level of privacy to your own account, your followers, or mutually following friends. This block is perfect for posting video content that you generate using MindStudio to TikTok.

## **Configurations**

### **Connection**

Create a new connection to your TikTok account. To do this requires a web application created on [TikTok for Developers](https://developers.tiktok.com/) with a Client ID and a Client Secret. This web app provides a Client ID and a Client Secret from which to connect to your TikTok account.

You can test posting TikTok videos to your account using a Sandbox environment, but only to yourself. To post to your followers or mutually following friends, you must submit your web app for approval to production.

1. From your consumer TikTok account, go to [**Settings**](https://www.tiktok.com/setting), then enable **Private account** from the **Privacy** settings.
2. Create a [TikTok for Developers](https://developers.tiktok.com/doc/add-a-sandbox/) account. This is separate from a consumer TikTok account.
3. Create a web app in a [Sandbox environment following these TikTok guidelines](https://developers.tiktok.com/doc/add-a-sandbox/). Ensure to do the following:
   1. Install the [Login Kit](https://developers.tiktok.com/doc/login-kit-overview?enter_method=left_navigation), which adds the "user.info.basic" scope to your web app.
   2. Install the [Content Posting API](https://developers.tiktok.com/doc/content-posting-api-get-started?enter_method=left_navigation), which adds the "video.publish" and "video.upload" scopes. Enable the **Direct Post** setting.
   3. Add your TikTok user name in the **Target Users**. This allows your TikTok account to connect to your web app and use the Sandbox environment.
4. Create the connection from the Post Video to TikTok Block or from the [**Integrations**](/workspace-management/integrations) page on MindStudio. Do the following:
   1. Add the Client ID and Client Secret from your TikTok web app.
   2. Copy the **Redirect URL** from the Post Video to TikTok Block and paste it into **Redirect URL** in the Login Kit settings, then save the web app settings.
5. Connect to your TikTok account.

When successfully connected, your TikTok connection displays in [**Integrations**](/workspace-management/integrations):

* **Active Connections:** Your TikTok account displays. From Access Control set who has access to your active connection:
  * Only Me
  * Anyone in this Workspace
* **Custom OAuth Provider Configurations:** The Client ID and Client Secret to your TikTok web app displays.

### **Video URL and Caption**

Choose the video by its URL and the video caption to post to TikTok.

* **Video URL**: Enter the URL for the video to post. You may include variables.
* **Caption**: Enter the caption for the video. You may include variables.

### **Advertising Disclosures**

Disclose whether your video is an advertisement.

* **Third-Party Brands:** Select if the video promotes any third-party businesses.
* **Your Own Brand:** Select if the video promotes your own business.

### **Post Settings**

Select post settings for the TikTok video.

* **Privacy Level:** Select who can view your TikTok video post. Use **SELF ONLY** when testing in a TikTok Developer Sandbox environment. Use other options only after TikTok approves your web app to production.
* **Comments:** Select whether others can comment on your video post.
* **Duets:** Select whether to allow Duets using your video post. **Allow Duets** is disabled if **Privacy Level** setting is set to **SELF ONLY**.
* **Stitches:** Select whether to allow Stitches using your video post. **Allow Stitches** is disabled if **Privacy Level** setting is set to **SELF ONLY**.

See [TikTok content sharing guidelines](https://developers.tiktok.com/doc/content-sharing-guidelines/) for more information.


# Query Data Source Block

Upload files and query them in your AI workflows using RAG

{% embed url="<https://www.youtube.com/embed/flwFevdkruI>" %}

The **Query Data Source Block** allows you to retrieve relevant information from a [Data Source](/building-ai-agents/data-sources) within your workflow. This block is essential for integrating custom data into your AI workflows through Retrieval Augmented Generation (RAG).

***

## **Configurations**

### **Data Source**

Select the Data Source you want to query. This is the collection of documents you have uploaded and configured in the **Data Sources Folder**.

#### **Options**

* Use the dropdown menu to select an existing Data Source.
* Click **New\...** to create a new Data Source if none are currently available.

### **Variable Name**

Creates a variable where the query results will be stored. Enter a <mark style="color:red;">`variable_name`</mark> to store the result of the query for later use in the workflow.

### **Max Results**

Define the number of results the block will retrieve from the Data Source. Each result will return a different chunk of retrieved text from the Data Source.

### **Query Template**

Enter the query prompt that instructs the AI on what information to retrieve. You can include <mark style="color:red;">`{{variables}}`</mark> to make the query dynamic and context-aware.

[Learn about variables →](/building-ai-agents/variables)

***

## **Writing Effective Queries**

Crafting effective queries is crucial for retrieving the most relevant and accurate information from your Data Sources. A well-written query ensures that your AI can efficiently locate and use the data needed for your workflow.

#### **Understand Your Data Source**

Familiarize yourself with the content of your Data Source. Knowing the structure, topics, and focus of the documents helps you write more precise queries.

**Example:**

If your Data Source contains product manuals, your queries should explicitly reference product names or sections like "warranty" or "setup instructions."

#### **Be Clear and Specific**

Write concise and focused queries to ensure the AI retrieves the most relevant results. Avoid overly broad or ambiguous prompts.

**Examples**:

* **Broad Query**: `Tell me about this product.`
* **Specific Query**: `What are the warranty terms for the {{productName}}?`

#### **Use Contextual Language**

Include specific instructions or context in your query to guide the retrieval process.

**Examples**:

```markdown
Find troubleshooting steps for {{deviceName}} related to connectivity issues.
```

```markdown
Retrieve all safety precautions mentioned in the {{documentType}}.
```

#### **Limit Query Scope**

Tailor the query to focus on a specific part of the Data Source to improve accuracy. For large Data Sources, specifying a topic or section can yield better results.

**Example**:

```
Search the "user guide" section for instructions on resetting the {{productName}}.
```

#### **Include Actionable Keywords**

Use actionable keywords like "retrieve," "explain," "summarize," or "list" to make the purpose of the query clear.

**Examples**:

```markdown
"Summarize the maintenance steps for the {{productName}}."
```

```markdown
"List all recommended accessories for {{productName}}."
```

#### **Test and Refine**

Test your query with the [Query Tester](/building-ai-agents/data-sources#query-tester) to ensure it retrieves the intended results. Adjust the wording, variables, or focus as necessary.


# Query Database

Query your own external database (postgres, mysql, supabase, etc.)

{% embed url="<https://www.youtube.com/embed/eFb4O4LDg1s>" %}

The Query Database block allows your AI Agent to connect to and query an external SQL database during runtime. It supports PostgreSQL, MySQL, and Microsoft SQL Server, making it ideal for workflows that require live data access — such as retrieving customer records, product inventory, or historical logs.

***

## Configurations

### Account

Connect the database account your agent will use to run queries.

You can choose:

* **Static Account:** A fixed database connection defined at build time.
* **Dynamic (Ask at Runtime):** Prompts the user to input database credentials during execution.

To connect, select your database type (PostgreSQL, MySQL, etc.) and enter:

| Info     | Example               |
| -------- | --------------------- |
| Host     | `db.abcd.supabase.co` |
| Port     | `5432`                |
| Database | `postgres`            |
| Username | `postgres`            |
| Password | *YOUR SECRET KEY*     |

***

### Query

Enter the SQL query to run against the external database. You can use dynamic variables with `{{brackets}}` to inject content from earlier in the workflow.

**Example (Static Query):**

```sql
SELECT * FROM users WHERE last_name = 'Williams';
```

**Example (Dynamic Query using variable):**

```sql
SELECT * FROM users WHERE last_name = '{{last_name}}';
```

{% hint style="info" %}
**Pro Tip:** You can use a [Generate Text Block](/building-ai-agents/blocks-reference/generate-text-block) to generate a query for you based on your natural language description. **Make sure to include Schema Info** when using AI-generated queries by providing table and column names to guide query generation.
{% endhint %}

***

### Output Format

Choose how the result should be returned. Options include:

* **JSON** (default): Structured data ideal for parsing or display.
* **CSV:** Comma-separated values, useful for exporting to spreadsheets or displaying flat tabular data.

***

### Output Variable

Set a variable name to store the query result. This variable can be used in later blocks to display results or make decisions.

**Example:**\
`query_result`

***

## How It Works

1. The block connects to the selected external database using the provided credentials.
2. The SQL query is executed (with variables substituted if used).
3. The result is returned in your chosen format and stored in the specified output variable.
4. The next block in your workflow can use this result to generate responses, make decisions, or display information.


# Run Function Block

Execute custom JavaScript or Python code in a workflow

The **Run Function Block** empowers your workflows with the ability to execute advanced, custom logic, enabling deeper integration and greater flexibility. This block ensures workflows remain adaptable to your most specific needs. This block is ideal for performing complex calculations, integrating with external APIs, or processing data dynamically.

{% embed url="<https://youtu.be/3bgTOhacFAk>" %}

## **Configurations**

### **Function**

Select the Function you want to execute or create a new one.

* **Select a Function**: Use the dropdown menu to choose an existing custom function from Explorer.
* **New Function**: Click the **New\...** button to create a new function in either JavaScript or Python. New Functions are automatically added to the Functions folder in your Explorer.
* Clicking **Browse community functions...** to import functions submitted by members of the MindStudio community into your project.

**Note:** Community functions are not maintained by MindStudio. It’s essential that you test our any community functions before incorporating them into your workflows. For updates to the function, you’ll need to reach out to the creator of the function.

### Additional Configurations

All Functions are custom coded and will have different configurations depending on the function that is selected for use in this block.


# Run Node (n8n)

Trigger an n8n workflow from MindStudio

## Configuration&#x20;

### Webhook URL

Enter the webhook URL that will trigger the workflow. For information on creating webhooks with n8n [visit there documentation.](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/)

### Data

Add the data you want to send to n8n using **Key Value pairs**. This section can include variables.&#x20;

### Output Variable

Save the results of the request to a variable. Example: `n8n_request`

## Advanced Settings

### HTTP Method

Select the method you want to use in the request. Options include:

* **GET:** Retrieve data without modifying any underlying resources.
* **POST:** Create or update a resource.
* **PATCH:** Make partial updates to an existing resource.
* **PUT:** Update an entire resource.
* **DELETE:** Remove a specified resource.
* **HEAD:** Retrieve only the header information.

### Authentication

Select the authentication type. Options include:

* **None**&#x20;
* **Basic Auth**
  * This requires you to include a **username** and **password**.


# Run Scenario (Make)

Run a specified scenario on Make.com in a MindStudio workflow

## Configuration

### Webhook URL

This is the URL that will be used to trigger your Make.com scenario. For more information on creating webhooks with Make, visit their [online help center](https://help.make.com/webhooks).&#x20;

### Data

Enter the data you want to send to the webhook URL using **key value pairs**. This section can include variables.&#x20;

### Output Variable

Save the output of the run as a variable. Example: `Make_Result`

If the block outputs the triggered scenario's response, it will return the output as plain text.


# Run Script Block

Execute a Workflow Script from the Automations Canvas.

## Overview

The **Run Script** block runs a Workflow Script file and maps its inputs and outputs to workflow variables. It acts as the connection point between a script written in the Script Editor and the broader workflow on the Automations Canvas.

See [Workflow Scripts](/building-ai-agents/workflow-scripts) to get started.

## Configuration

### Source Code

Select the Workflow Script file you want to run from the dropdown. Source code that will be executed when the Agent runs.

### Parameters

#### Input Variables

Map workflow variables to the script's input parameters. Each row shows the parameter name and the workflow variable to assign to it.

<table><thead><tr><th width="203.83203125">Field</th><th>Description</th></tr></thead><tbody><tr><td>Parameter name</td><td>The input parameter defined in the script (e.g., <code>topic</code>)</td></tr><tr><td>Variable</td><td>The workflow variable whose value will be passed in (e.g., <code>{{topic}}</code>)</td></tr></tbody></table>

{% hint style="info" %}
Assign values to the launch variables of the selected script.
{% endhint %}

#### Output Variables

Map the script's return values to workflow variables so they can be used by following blocks.

<table><thead><tr><th width="206.19921875">Field</th><th>Description</th></tr></thead><tbody><tr><td>Return key</td><td>The key from the script's return object (e.g., <code>summary</code>)</td></tr><tr><td>Variable</td><td>The workflow variable to store the value in (e.g., <code>{{summary}}</code>)</td></tr></tbody></table>

{% hint style="info" %}
Map the return values of the script to workflow variables.
{% endhint %}


# Run Workflow Block

Execute a sub-workflow within a parent workflow

{% hint style="danger" %}
**REQUIRED:** Before a sub-workflow can be used in the Run Workflow Block, the **sub-workflow** must be configured with:&#x20;

* **Launch Variables** in the **Start Block**&#x20;
* **Structured JSON Outputs** in the **End Block.**

***

If these are not configured, then the workflow will not run properly.
{% endhint %}

The **Run Workflow Block** allows you to execute a separate **sub-workflow** within your main workflow. This block is ideal for running sub-processes and reusing common processes across multiple workflows.

{% embed url="<https://youtu.be/6GubegBVSXA>" %}

***

## **Configurations**

The Run Workflow block allows you to execute a separate sub-workflow from within the current workflow. It’s ideal for reusing logic, modularizing large flows, or performing iterative processing with dynamic inputs.

To function properly, the selected sub-workflow must be configured with:

* **Launch Variables** in the Start Block
* **Structured JSON Outputs** in the Terminator Block

If these are not present, the workflow will fail to execute.

***

### Agent

Select the AI Agent that contains the workflow you want to run. Use the dropdown to choose from your available agents.

### Workflow

Choose the specific sub-workflow from the selected agent. Only workflows that include Launch Variables and JSON Outputs will appear here.

***

### Parameters

#### Launch Variables

Assign values to the sub-workflow’s input variables. These can be static or dynamic using

`{{variables}}`.

**Example:**

* `customer_name` → `{{userName}}`
* `order_id` → `12345`

#### Output Variables

Map the structured outputs returned from the sub-workflow into variables in the parent workflow.

**Example:**

* `customer_profile` → `customer_info`

***

### Iteration Settings

Use this section to run the selected workflow multiple times — once for each item in an input list.

#### Iterator

Choose how items are extracted for iteration:

* **Auto-Extract (Default):** Uses the Extraction Prompt to pull items from unstructured input.
* **String Array:** Treats the input as a delimited string (e.g., comma-separated list).
* **JSON Array Input (Advanced):** Expects a valid JSON array; each item becomes a separate run.

***

#### Input Data / Input Array

Specify the input variable that contains the array or string to iterate through.\
For example: `{{user_email_list}}`

***

#### Extraction Prompt *(only for Auto-Extract)*

Provide an instruction for the thing you'd like to pull from the input variable. Each extracted item is stored as a variable called `{{item}}`.

**Ex:** `Extract all emails`

**Output:** The variable `{{item}}` is the email that is extracted

***

#### Item Separator *(only for String Array)*

Choose how to split the input string:

* Comma
* Semicolon
* Pipe
* Custom

**Ex:** If the input string is  `Dog, Cat, Fish` , then select the `Comma` option

***

#### Output Variable

The result of each sub-workflow run is stored in a JSON array at this variable name.

**Example:**

`batch_results`

***

#### Execution Mode

Choose how runs are processed:

* **Parallel:** Runs all iterations in batches (faster)
* **Sequential:** Runs one at a time (slower)

***

#### Error Behavior

Set how the workflow should respond to errors:

* **Fail:** Stop all runs on first error
* **Ignore Failed Runs:** Skip failed items and continue

***

#### Retry Attempts

Define how many times to retry failed runs. Use cautiously to avoid unintended costs.

***

## **Preparing the Sub-Workflow**

### **Launch Variables**:

Define the launch variables that the parent workflow will provide. Go to the sub-workflow you'd like to run and add Launch Variables in the **Start Block** of the sub-workflow.

![Define Launch Variables in Sub-workflow](/files/dkw5gUGWxCOSUsh6gGPP)

#### Example Launch Variables:

* <mark style="color:red;">`customer_name`</mark>: The parent workflow will pass the customer name down to the sub-workflow.
* <mark style="color:red;">`order_id`</mark>: The parent workflow will pass the ID of the customer's order down to the sub-workflow.

### **Structured Outputs**:

Define the **Return Data** that the sub-workflow will return to the parent workflow. Add these variables to the sub-workflow’s **Terminator Block** under **Return Data -> JSON Output**.

![Define Return Data in Sub-workflow](/files/7LvXAWGlQoEX7Q3UGcSc)

#### Example Return Data:

* <mark style="color:red;">`customer_profile`</mark>: Returns customer details retrieved from the sub-workflow.
* <mark style="color:red;">`order_status`</mark>: Returns the status of the processed order from the sub-workflow.

**Note:** If a workflow lacks these configurations, you will see an error message:

> ***"The selected workflow has not been configured with launch variables and structured outputs."***

***

## Best Practices

* **Ensure Variable Alignment**: Make sure that required variables in the sub-workflow are properly assigned with values during execution.
* **Optimize Your Workflows**: Use this block to simplify complex workflows by breaking them into manageable, reusable components.
* **Test Input and Output Mapping**: Verify that all variables are passed correctly between the parent and sub-workflows.
* **Maximum Iterations Limit**: By default, agents can perform 100 actions before stopping automatically. This limit is to protect you from uncontrolled loops, runaway costs, and other unintended effects. If you need to process more than 100 actions per request, you can increase this limit on a per-agent basis by modifying the "Maximum Invocations per Operation" setting in the Agent's "Runtime" settings screen (click the Agent's name in the left-side Navigator to open the Settings pane, then find "Runtime" under the "Advanced" heading).


# Scrape LinkedIn Company

Get LinkedIn Company Data

The Scrape LinkedIn Company block retrieves publicly available information from a LinkedIn company page. This is useful for enriching your workflow with real-time company data — such as industry, employee count, location, and description — without manual lookup.

***

## Configurations

### Company URL

Provide the full URL of the LinkedIn company page you want to scrape.

**Example:** `https://www.linkedin.com/company/mindstudioai/`

{% hint style="danger" %}
Only valid public company pages will return data. Personal profiles or broken URLs will result in errors.
{% endhint %}

***

### Output Variable

Enter the name of the variable to store the scraped data. The returned value will be a structured JSON object.

**Example:** `company_profile`

***

## Sample Output

```json
{
  "company_name": "MindStudio",
  "universal_name_id": "mindstudioai",
  "background_cover_image_url": "https://media.licdn.com/dms/image/v2/D563DAQHsfMJ3A0WRjQ/image-scale_191_1128/image-scale_191_1128/0/1682953888759/youai_ai_cover?e=2147483647&v=beta&t=OQmyNF7EJXFK4-FKvEgxmy7zn-g4P0MsCLubu4TzP_s",
  "linkedin_internal_id": "91188227",
  "profile_photo": "https://media.licdn.com/dms/image/v2/D560BAQHJWyoFxDx2vQ/company-logo_200_200/company-logo_200_200/0/1704388316703/youai_ai_logo?e=2147483647&v=beta&t=2u4H4OT-wjxp9NB44WQVO4AaE429XmlLjBGIKUJLOSs",
  "industry": "Technology, Information and Internet",
  "location": "",
  "tagline": "The fastest way to build AI-powered apps for your team.",
  "company_size_on_linkedin": "Discover all 29",
  "about": "Rapidly build custom AI applications and automations — no coding required.\nEasily mix and match the latest models from OpenAI, Anthropic, Google, Mistral, Meta, and more.",
  "website": "https://mindstudio.ai",
  "industries": "Technology, Information and Internet",
  "company_size": "11-50 employees",
  "headquarters": "",
  "type": "Privately Held",
  "founded": "2023",
  "specialties": "",
  "description": {},
  "locations": [],
  "employees": [
    {
      "employee_photo": "https://media.licdn.com/dms/image/v2/D5603AQHhQ4-UhGgpqA/profile-displayphoto-shrink_100_100/profile-displayphoto-shrink_100_100/0/1708916323677?e=2147483647&v=beta&t=8f09N2sXi6CpaIOvlnEoeGdAidR2gWrOsC1wZLjbC6E",
      "employee_name": "Dmitry Shapiro",
      "employee_position": "",
      "employee_profile_url": "https://www.linkedin.com/in/dmitry-shapiro-a2b1?trk=org-employees"
    },
    {
      "employee_photo": "https://media.licdn.com/dms/image/v2/D4E03AQHFqAOAyv6d1g/profile-displayphoto-shrink_100_100/B4EZbakNBNGkAU-/0/1747423646207?e=2147483647&v=beta&t=uqATJggybaqd-MsnJoDxM2ZPnmZTFSRXmeUUHMAboKo",
      "employee_name": "Aleksandar Pokrajac",
      "employee_position": "AI Innovation PM | Custom AI Solutions",
      "employee_profile_url": "https://rs.linkedin.com/in/pokrajac?trk=org-employees"
    },
    {
      "employee_photo": "https://media.licdn.com/dms/image/v2/D4D03AQEoOkPm9qMz4g/profile-displayphoto-scale_100_100/B4DZfFY.REH4Ag-/0/1751363348177?e=2147483647&v=beta&t=ZE49EIlCvWMKIn3EbImELcktUu8MSCKIGTD940x4Obc",
      "employee_name": "Gary Seath",
      "employee_position": "I help business people to connect with eachother. Who would you like to connect with?",
      "employee_profile_url": "https://za.linkedin.com/in/gary-seath?trk=org-employees"
    },
    {
      "employee_photo": "https://media.licdn.com/dms/image/v2/D4D03AQGUNXSrPOMSRQ/profile-displayphoto-shrink_100_100/B4DZU0NfqGG8AU-/0/1740337709318?e=2147483647&v=beta&t=7PSR7s8uGKlJ5z3Kgx251rPbIEcJBL9mxF1W-pIJgyk",
      "employee_name": "Jonathan M K.",
      "employee_position": "Head of GTM Growth Momentum | Founder GTM AI Academy & Cofounder AI Business Network | Business impact > Learning Tools | Proud Dad of Twins",
      "employee_profile_url": "https://www.linkedin.com/in/jmkmba?trk=org-employees"
    }
  ],
  "updates": [
    {
      "text": "New Fetch Slack Channel History block makes it easy to pull messages from a Slack channel into a MindStudio AI Agent and generate reports, analyze them, create summaries, etc.\n\nAvailable today, check it out!",
      "article_posted_date": "5d",
      "total_likes": "25",
      "article_title": "",
      "article_sub_title": ""
    },
    {
      "text": "MindStudio University is live! 🎓\n\nIn MindStudio University, you'll find over 6 hours of step-by-step, in-depth tutorials on building AI agents. Hundreds of people have already levelled up their AI skills with our video courses. \n\nBookmark the link below!",
      "article_posted_date": "2w",
      "total_likes": "48",
      "article_title": "",
      "article_sub_title": ""
    },
    {
      "text": "You could spend thousands of dollars testing ad copy... or you could use this agent to find the winning formula. \n\nExpert marketer Justin Brooke walks through it below.\nHow I built an AI agent that predicts winning ad copy BEFORE spending a dime...\n\nIf you could predict lottery numbers... would you?\n\nWell then, if you could predict winning ads... would you?\n\nLet me explain how it works...\n\nFirst, we trained an agent on all our customer data. We give our ad copy (or blog post, whatever you want) to the first agent. Which gives us feedback on the ad creative based on all our customer data.\n\nIt's so real, that it feels like I'm reading an actual customer support ticket from a real customer.\n\nThe feedback alone is amazing to learn from if you're not a great writer yet.\n\nBut then we take the original ad creative + feedback, and we send that to another agent that is trained on world class direct response copywriting tactics.\n\nIt then writes use 3 new variations for our original ad creative, based on our customers feedback. This is just like they used to do with focus groups and customer development calls - but with ai and automated.\n\nIf all it did was pump out expertly written variations (based on actual customer data) this would be worth gold, but we go another step.\n\nWe want to know which variation is statistically likely to outperform the others, so we push the feedback + variations to a data analyst agent to assign scores.\n\nScoring is based on how well the ad fits our customer data, the feedback from our customer simulator agent, and all known best practices for advertising.\n\nFinally, the data analyst agent pushes the Success Probability Score for each variation and the winning variation to the screen for the user to deploy.\n\nVOILA... Now your cousin Marv can write ads for you and with this machine it'll improve it based on actual market data, get 3 revisions by an expert, and then predict which revision is most likely to win.\n\nIf that's not worth millions, I don't know what is!\n\nIf you want to see the prompts and structure of how I built this, just comment \"agent\" below, and I'll DM you a loom video of how it works. MUST BE CONNECTED for me to be able to DM you.",
      "article_posted_date": "2w",
      "total_likes": "5",
      "article_title": "",
      "article_sub_title": ""
    },
    {
      "text": "Build the tools that make your team call you an \"AI savant\" like David Cohn. \n\nKudos to Advance Local for being at the forefront of AI in journalism. They use nearly 300 MindStudio agents, like this one, in their newsrooms. An AI Tool I built is getting some praise/love from the Editor/VP of content at cleveland.com / The Plain Dealer. It's called \"Editor's Eyes\" and they are now running all their stories through it before publishing. \n\nhttps://lnkd.in/gx7wa-ng\n\n\"Starting this month, anyone in our newsroom who writes – including me -- must run their work through a tool we’ve developed to clean it up. It’s a tool called Editor’s Eyes, developed in-house by David Cohn, the AI savant for our parent company, Advance Local. David has taken our breath away with the number of tools he has developed for us this year.\nWriters need only paste their work into the tool, and seconds later they get a list of fixes they can make, with advice for making it read better. In effect, it gives every writer their own personal copy desk.\"\n\nA big shoutout to Christopher Quinn who embraces the changing landscape like a real leader. And to all the colleagues at Cleveland (and Advance throughout). You all keep me motivated and pumped for more.",
      "article_posted_date": "2w",
      "total_likes": "4",
      "article_title": "Cleveland OH Local News, Breaking News, Sports & Weather",
      "article_sub_title": "cleveland.com",
      "article_link": "https://www.linkedin.com/redir/redirect?url=https%3A%2F%2Fwww%2Ecleveland%2Ecom&urlhash=XJDJ&trk=organization_guest_main-feed-card_reshare_feed-article-content",
      "article_image": "https://media.licdn.com/dms/image/sync/v2/D5627AQFOr8xR0NqxvA/articleshare-shrink_1280_800/B56ZdeRUriGoAQ-/0/1749633289341?e=2147483647&v=beta&t=-iv_bcxztTop5Xe0-FHWc9YgRxYyHDw4M7D940QsXng"
    },
    {
      "text": "📸 𝗜𝗺𝗮𝗴𝗲𝗻 𝟰 𝗶𝘀 𝗻𝗼𝘄 𝗮𝘃𝗮𝗶𝗹𝗮𝗯𝗹𝗲 𝗼𝗻 𝗠𝗶𝗻𝗱𝗦𝘁𝘂𝗱𝗶𝗼!\nWe're thrilled to announce the launch of 𝗚𝗼𝗼𝗴𝗹𝗲'𝘀 𝗜𝗺𝗮𝗴𝗲𝗻 𝟰—the latest and most advanced text-to-image model—𝗻𝗼𝘄 𝗹𝗶𝘃𝗲 𝗼𝗻 𝗠𝗶𝗻𝗱𝗦𝘁𝘂𝗱𝗶𝗼.\n\nWhether you're an artist, a product designer, a marketer, or just curious, you can now generate 𝗽𝗵𝗼𝘁𝗼𝗿𝗲𝗮𝗹𝗶𝘀𝘁𝗶𝗰, 𝗵𝗶𝗴𝗵-𝗿𝗲𝘀𝗼𝗹𝘂𝘁𝗶𝗼𝗻 𝘃𝗶𝘀𝘂𝗮𝗹𝘀 from text with unprecedented fidelity—directly inside your AI workflows. \n\n✨ 𝗪𝗵𝘆 𝗜𝗺𝗮𝗴𝗲𝗻 𝟰?\n\n🖼️ - 𝗣𝗵𝗼𝘁𝗼-𝗿𝗲𝗮𝗹𝗶𝘀𝗺 that rivals actual photography\n🔍 - 𝗦𝗵𝗮𝗿𝗽𝗲𝗿 𝗰𝗹𝗮𝗿𝗶𝘁𝘆 and 𝗶𝗺𝗽𝗿𝗼𝘃𝗲𝗱 𝘁𝗲𝘅𝘁 𝗿𝗲𝗻𝗱𝗲𝗿𝗶𝗻𝗴\n🔠 - 𝗔𝗱𝘃𝗮𝗻𝗰𝗲𝗱 𝘀𝗽𝗲𝗹𝗹𝗶𝗻𝗴 𝗮𝗻𝗱 𝘁𝘆𝗽𝗼𝗴𝗿𝗮𝗽𝗵𝘆 for comics, packaging, and design\n🎨 - 𝗦𝘂𝗽𝗽𝗼𝗿𝘁𝘀 𝗱𝗶𝘃𝗲𝗿𝘀𝗲 𝘀𝘁𝘆𝗹𝗲𝘀: from macro wildlife photography to vintage illustrations, impressionism, 3D renders, and more\n\n🌟  𝗧𝗿𝘆 𝗶𝘁 𝗻𝗼𝘄: mindstudio.ai → Create → Generate Image\n\n Let your imagination do the talking. We'll take care of the rendering.",
      "article_posted_date": "2w",
      "total_likes": "29",
      "article_title": "",
      "article_sub_title": ""
    },
    {
      "text": "Students, recent grads & dropouts: the #1 skill you can learn right now → building AI agents. \n\nYour school isn't teaching the skills companies are desperate for... but we are. \n\nJoin the next cohort with our CEO, Dmitry Shapiro, to build your AI portfolio and connect with employers who are looking for talent.College students, recent college graduates, parents of college students...\n\nI am teaching a free 2 week course -- Learn to build AI agents — the most in-demand skill today!\n\nHere’s how it works:\n\nDuration: 2 weeks\nFormat: Virtual (Zoom-based training + self-paced projects)\nTime commitment: ~10 hours (a few 1-hour Zoom sessions + project work)\nTools: You’ll use MindStudio to build real AI agents\nCost: Completely free\nSpots: Limited (20–40 per cohort)\n\nMore details in comments 👇\n\nWho else should know about this? @ mention them.",
      "article_posted_date": "3w",
      "total_likes": "4",
      "article_title": "",
      "article_sub_title": ""
    },
    {
      "text": "After leading tech teams at Walmart, Yahoo, and Strava, Claude Jones and the others behind the San Diego Tech Hub are launching do.it.withAI, a community-based platform to train AI builders. \n\nTheir first AI bootcamp is free, and powered by MindStudio. \n\nApply below!👋 Hey Community! \n\nI’m back… and ready to make an impact.\n\nAfter being let go from Centr, I finally had space to reflect. Not just on what I wanted to do next, but on what people around me were struggling with.\n\nIn every conversation with friends, colleagues, and community members, one theme kept surfacing: AI is already transforming how we live and work, and for many, it's creating real fear.\n\nNot just fear of being replaced, but fear of being left behind.  For many, it’s not even about job loss. It’s about not knowing where to start or how to keep up.\nThat stuck with me.  Because I’ve felt it too.\n\nWhat people need isn’t just access to AI tools.  They need agency — the power to learn, build, and adapt on their own terms.\n\nSo I got together with some San Diego Tech Hub conduits, and we created do.it.withAI, a community-driven platform built to train the next generation of AI Agent Builders.\n\nWe’ve partnered with Dmitry Shapiro at MindStudio to launch a free live pilot AI Bootcamp, limited to 100 participants.\n\nThis isn’t a giveaway. It’s a co-build. Your experience and feedback will help shape how we train the next generation of AI Agent Builders.\n\n🎥 Check out the video below to see what we’ve been building. 👇 \n\nOh, before I go, two quick points: \n\n1. If this resonated, share it. Someone in your network might need it.\n2. If you’re ready to build or brainstorm, DM me. Let’s make moves.\n\n#AI #Community #TechForGood #DoItWithAI #AgencyOverAccess #AIAgents\n\nNotes: site built with Lovable, Supabase, ChatGPT, and Human creativity in the loop.",
      "article_posted_date": "3w",
      "total_likes": "5",
      "article_title": "",
      "article_sub_title": ""
    },
    {
      "text": "The UK Government is going deep on AI—and MindStudio is right at the center. \n\nYesterday, we led a hands-on session with the Incubator for Artificial Intelligence, an agile team inside the government, tasked with scaling AI tools across departments. Their mission: use AI to drive public good.\n\nIn an hour, they built working AI agents with MindStudio. Real prototypes for real public sector problems.\n\nThis is the playbook for modern governments:\n\n🛠️ Lightweight tools – skip the external contracts\n🔑 Broad access – let teams solve their own problems\n⚡ Fast results – prototypes in hours, not months\n\nMindStudio makes it happen.",
      "article_posted_date": "1mo",
      "total_likes": "22",
      "article_title": "",
      "article_sub_title": ""
    },
    {
      "text": "Now available: Use Self-Hosted Models in your AI agents 🧠\n\nYou can now connect your own self-hosted AI models — whether they’re running locally on your device or hosted in the cloud. Works for any OpenAI-compatible model.\n\nMindStudio already gives you access to 150+ models out of the box — Claude 4, GPT-4o, and more — no API keys required.\n\nNow you can go beyond the flagships and bring your own.\n\n🛠️ Just tinkering? It’s included in MindStudio Pro for personal use.\n🏢 Deploying for business? Get in touch with us about Enterprise.",
      "article_posted_date": "1mo",
      "total_likes": "23",
      "article_title": "",
      "article_sub_title": ""
    },
    {
      "text": "Just shipped: 11 new blocks for transforming text in MindStudio 🔁\n\nEverything you actually need to do with text — now built in.\nNo prompt required. Just drop the block in and go.\n\nHere’s what’s new:\n\n📝 Summarize Text – Get the TL;DR\n\n🧠 Improve Writing – Fix spelling, grammar, clarity\n\n🌍 Translate Text – Any language, instantly\n\n👥 Rewrite for Audience – Adapt for different personas\n\n🎓 Convert Reading Level – Make it simpler or more advanced\n\n🔀 Merge Text – Combine multiple inputs into one\n\n💬 Adjust Tone – Casual, formal, fun — your call\n\n✅ Align to Brand – Stay on voice, every time\n\n✏️ Rewrite Text – Give it a rule, and it’ll rewrite at scale\n\n🧱 Convert to Format – Repurpose content into a blog, email, post — whatever you need\n\n🧹 Extract from Text – Cleanly pull structured info from messy input\n\nLive now on MindStudio.",
      "article_posted_date": "1mo\n  \n                      \n                      \n                        Edited",
      "total_likes": "14",
      "article_title": "",
      "article_sub_title": ""
    }
  ],
  "similar_companies": [
    {
      "link": "https://nl.linkedin.com/company/jaide-ai?trk=similar-pages",
      "name": "Jaide AI",
      "summary": "Software Development",
      "location": "Reeuwijk, Zuid holland"
    },
    {
      "link": "https://www.linkedin.com/company/syntheticusers?trk=similar-pages",
      "name": "Synthetic Users",
      "summary": "Technology, Information and Internet",
      "location": "Technology, Information and Internet"
    },
    {
      "link": "https://www.linkedin.com/company/withkoji?trk=similar-pages",
      "name": "Koji",
      "summary": "Technology, Information and Internet",
      "location": "San Diego, CA"
    },
    {
      "link": "https://cz.linkedin.com/company/itsmakehq?trk=similar-pages",
      "name": "Make",
      "summary": "Software Development",
      "location": "Prague, Praha 8"
    },
    {
      "link": "https://www.linkedin.com/company/perplexity-ai?trk=similar-pages",
      "name": "Perplexity",
      "summary": "Software Development",
      "location": "San Francisco, California"
    },
    {
      "link": "https://www.linkedin.com/company/gamma-app?trk=similar-pages",
      "name": "Gamma",
      "summary": "Software Development",
      "location": "Software Development"
    },
    {
      "link": "https://dk.linkedin.com/company/uizard?trk=similar-pages",
      "name": "Uizard by Miro Labs",
      "summary": "Software Development",
      "location": "Software Development"
    },
    {
      "link": "https://www.linkedin.com/company/flowiseai?trk=similar-pages",
      "name": "FlowiseAI (YC S23)",
      "summary": "Software Development",
      "location": "San Francisco, California"
    },
    {
      "link": "https://www.linkedin.com/company/hunchtools?trk=similar-pages",
      "name": "Hunch",
      "summary": "Technology, Information and Internet",
      "location": "San Francisco, California"
    },
    {
      "link": "https://www.linkedin.com/company/workera-ai?trk=similar-pages",
      "name": "Workera",
      "summary": "Technology, Information and Internet",
      "location": "Palo Alto, California"
    }
  ],
  "affiliated_companies": [],
  "product": []
}
```


# Scrape LinkedIn Profile

Get LinkedIn Profile Data

The Scrape LinkedIn Profile block retrieves public information from a LinkedIn profile page. It is useful for enriching workflows with professional or organizational data such as job titles, company descriptions, locations, or industry tags.

This block requires a valid LinkedIn Profile URL and stores the response for downstream in the workflow.

***

## Configurations

### Profile URL

Enter the full URL of the LinkedIn profile or company page you want to scrape.

**Supported Formats:**

* Personal Profile: `https://linkedin.com/in/username`

> ⚠️ Only public profile data is available. Private or restricted content cannot be accessed.

***

### Output Variable

Specify the name of the variable where the scraped data should be stored. The result is typically returned as a JSON object.

**Example:** `linkedin_data`&#x20;

## Example Output

```json
{
  "fullName": "Dmitry Shapiro",
  "linkedin_internal_id": "3203",
  "first_name": "Dmitry",
  "last_name": "Shapiro",
  "public_identifier": "dmitry-shapiro-a2b1",
  "background_cover_image_url": "https://media.licdn.com/dms/image/v2/D5616AQEyFJsY9z6FPg/profile-displaybackgroundimage-shrink_200_800/profile-displaybackgroundimage-shrink_200_800/0/1707167096861?e=2147483647&v=beta&t=ZrJuQxSfNaPug6uf6_2CGumdQfl_v77pZmIy6LxOGIY",
  "profile_photo": "https://media.licdn.com/dms/image/v2/D5603AQHhQ4-UhGgpqA/profile-displayphoto-shrink_200_200/profile-displayphoto-shrink_200_200/0/1708916323677?e=2147483647&v=beta&t=pgJKywpBd1uCcVId7ZXTA6OPHGO3VEyQxS36iXc3iMw",
  "headline": "",
  "location": "San Diego County, California, United States",
  "followers": "30K followers",
  "connections": "500+ connections",
  "about": "",
  "experience": [
    {}
  ],
  "education": [],
  "articles": [
    {
      "link": "https://www.linkedin.com/pulse/world-models-jepa-next-evolution-ai-architecture-dmitry-shapiro-1xcsc",
      "image": "https://media.licdn.com/dms/image/v2/D5612AQHsxV3R2BAWYw/article-cover_image-shrink_720_1280/article-cover_image-shrink_720_1280/0/1739115917775?e=2147483647&v=beta&t=ZHmxIvAX38zXu9p3clVJkrh6btoUJX94WxJ-iPeOtNY",
      "title": "World Models and JEPA: The Next Evolution in AI Architecture",
      "author": "",
      "published_date": "Feb 9, 2025"
    },
    {
      "link": "https://www.linkedin.com/pulse/qwen-25-alibabas-breakthrough-open-source-ai-dmitry-shapiro-8tepc",
      "image": "https://media.licdn.com/dms/image/v2/D5612AQGUy2CzCYkg0w/article-cover_image-shrink_720_1280/article-cover_image-shrink_720_1280/0/1738161461626?e=2147483647&v=beta&t=D_JXXQhMwfRbN8yQfEMTR8wYDCPUcSO0SDGVY4kdLqk",
      "title": "Qwen-2.5: Alibaba's Breakthrough in Open-Source AI",
      "author": "",
      "published_date": "Jan 29, 2025"
    },
    {
      "link": "https://www.linkedin.com/pulse/deepseeks-openai-connection-unraveling-training-dmitry-shapiro-tdj3c",
      "image": "https://media.licdn.com/dms/image/v2/D5612AQFUOE0mb_JQAw/article-cover_image-shrink_600_2000/article-cover_image-shrink_600_2000/0/1738123130175?e=2147483647&v=beta&t=1rI8TcN3dklkag2S8vJuzCzTEpz4iYhIaQfN-1EEVpg",
      "title": "DeepSeek's OpenAI Connection: Unraveling the Training Relationship",
      "author": "",
      "published_date": "Jan 29, 2025"
    },
    {
      "link": "https://www.linkedin.com/pulse/transforming-marketing-function-ai-automation-dmitry-shapiro-o6hcc",
      "image": "https://media.licdn.com/dms/image/v2/D5612AQHzGnV9th3CRQ/article-cover_image-shrink_720_1280/article-cover_image-shrink_720_1280/0/1720672865633?e=2147483647&v=beta&t=UUqASUKVj_Q9Rar_F58GvMxZZEwh5nsgLFVly3FTVUY",
      "title": "Transforming the Marketing Function with AI Automation",
      "author": "",
      "published_date": "Jul 11, 2024"
    },
    {
      "link": "https://www.linkedin.com/pulse/most-sales-people-suck-can-we-get-them-perform-better-shapiro-5p4cc",
      "image": "https://media.licdn.com/dms/image/v2/D5612AQFovihmo_uxVw/article-cover_image-shrink_720_1280/article-cover_image-shrink_720_1280/0/1720287771219?e=2147483647&v=beta&t=VkNixDDA6pwlJtM2Ba8xOPoWWEGwFO3FBsOlzu-R1v0",
      "title": "AI-Driven Sales Automation -- The time is now!",
      "author": "",
      "published_date": "Jul 8, 2024"
    },
    {
      "link": "https://www.linkedin.com/pulse/dramatic-roi-ai-sales-process-automation-dmitry-shapiro-ds9tc",
      "image": "https://media.licdn.com/dms/image/v2/D5612AQGvabiginA5QA/article-cover_image-shrink_720_1280/article-cover_image-shrink_720_1280/0/1720285865490?e=2147483647&v=beta&t=LJLoaDtSNkv8E1pmgPo-SlfrHapYbOf5hgil5psbx7Y",
      "title": "Dramatic ROI -- AI Sales Process Automation",
      "author": "",
      "published_date": "Jul 6, 2024"
    },
    {
      "link": "https://www.linkedin.com/pulse/youve-never-seen-before-evolving-software-dmitry-shapiro",
      "image": "https://static.licdn.com/scds/common/u/img/pic/pic_pulse_stock_article_17.jpg",
      "title": "You've never seen this before - evolving software",
      "author": "",
      "published_date": "Sep 16, 2020"
    }
  ],
  "description": {},
  "activities": [
    {
      "link": "https://www.linkedin.com/posts/marquis-sampson_salestips-businessintelligence-companyresearch-activity-7350954619461627905-OkHc",
      "image": "https://media.licdn.com/dms/image/v2/D5605AQHnUxZNQf4nBQ/videocover-high/B56ZgPWGL_HMCI-/0/1752604135536?e=2147483647&v=beta&t=a3RCVDehSZ-YiDn3xClq9lnkblvUeLBeHvxcpc_tnYw",
      "title": "Tired of spending hours researching companies before a meeting? 🕵️‍♂️ Introducing the Cheat Sheet Generator! Your new secret weapon for instant…",
      "activity": "Liked by Dmitry Shapiro"
    }
  ],
  "volunteering": [],
  "certification": [],
  "people_also_viewed": [
    {
      "link": "https://www.linkedin.com/in/hyams?trk=public_profile_browsemap-profile",
      "name": "Chris Hyams",
      "summary": "",
      "location": "Austin, Texas Metropolitan Area"
    },
    {
      "link": "https://www.linkedin.com/in/jonvferrara?trk=public_profile_browsemap-profile",
      "name": "Jon Ferrara",
      "summary": "",
      "location": "Asheville, NC"
    },
    {
      "link": "https://www.linkedin.com/in/hillferguson?trk=public_profile_browsemap-profile",
      "name": "Hill Ferguson",
      "summary": "",
      "location": "San Francisco, CA"
    },
    {
      "link": "https://www.linkedin.com/in/vikas?trk=public_profile_browsemap-profile",
      "name": "Vikas Sharan",
      "summary": "",
      "location": "San Francisco Bay Area"
    },
    {
      "link": "https://www.linkedin.com/in/richardreed1992?trk=public_profile_browsemap-profile",
      "name": "Richard Reed",
      "summary": "",
      "location": "Las Vegas, NV"
    },
    {
      "link": "https://www.linkedin.com/in/mkorsunsky?trk=public_profile_browsemap-profile",
      "name": "Michael Korsunsky",
      "summary": "",
      "location": "Charlotte Metro"
    },
    {
      "link": "https://www.linkedin.com/in/rahulchaturvedimd?trk=public_profile_browsemap-profile",
      "name": "Rahul Chaturvedi",
      "summary": "CEO @ Moolex LLC | Start-ups, R&D, Project Capital, Business Strategy",
      "location": "New York, NY"
    },
    {
      "link": "https://www.linkedin.com/in/foxbrian?trk=public_profile_browsemap-profile",
      "name": "Brian Fox",
      "summary": "",
      "location": "Denver, CO"
    },
    {
      "link": "https://www.linkedin.com/in/drodio?trk=public_profile_browsemap-profile",
      "name": "DROdio - Daniel R. Odio",
      "summary": "",
      "location": "San Francisco Bay Area"
    },
    {
      "link": "https://www.linkedin.com/in/brett-mallory?trk=public_profile_browsemap-profile",
      "name": "Brett Mallory",
      "summary": "",
      "location": "Boston, MA"
    },
    {
      "link": "https://www.linkedin.com/in/jager?trk=public_profile_browsemap-profile",
      "name": "Jager McConnell",
      "summary": "",
      "location": "San Francisco, CA"
    },
    {
      "link": "https://th.linkedin.com/in/jchenard?trk=public_profile_browsemap-profile",
      "name": "Jesse Chenard",
      "summary": "",
      "location": "Amphoe Ban Pong"
    },
    {
      "link": "https://www.linkedin.com/in/davepowell?trk=public_profile_browsemap-profile",
      "name": "Dave Powell",
      "summary": "",
      "location": "Austin, TX"
    },
    {
      "link": "https://www.linkedin.com/in/chris-rothstein-4047012?trk=public_profile_browsemap-profile",
      "name": "Chris Rothstein",
      "summary": "",
      "location": "San Diego, CA"
    },
    {
      "link": "https://il.linkedin.com/in/liadagmon?trk=public_profile_browsemap-profile",
      "name": "Liad Agmon",
      "summary": "",
      "location": "Tel Aviv District, Israel"
    },
    {
      "link": "https://www.linkedin.com/in/masolova?trk=public_profile_browsemap-profile",
      "name": "Elena M.",
      "summary": "",
      "location": "San Francisco Bay Area"
    },
    {
      "link": "https://www.linkedin.com/in/haroldlee?trk=public_profile_browsemap-profile",
      "name": "Harry Lee",
      "summary": "",
      "location": "San Francisco Bay Area"
    },
    {
      "link": "https://www.linkedin.com/in/gt123?trk=public_profile_browsemap-profile",
      "name": "Greg T.",
      "summary": "",
      "location": "Ann Arbor, MI"
    },
    {
      "link": "https://www.linkedin.com/in/mcobrien?trk=public_profile_browsemap-profile",
      "name": "Mike O'Brien",
      "summary": "",
      "location": "Franklin, TN"
    },
    {
      "link": "https://www.linkedin.com/in/sgupta85?trk=public_profile_browsemap-profile",
      "name": "Sunny Gupta",
      "summary": "",
      "location": "Kirkland, WA"
    }
  ],
  "similar_profiles": [
    {
      "link": "https://www.linkedin.com/in/drshapiro?trk=public_profile_samename-profile",
      "name": "Dmitry Shapiro",
      "summary": "",
      "location": "Greater Boston"
    },
    {
      "link": "https://www.linkedin.com/in/dmitryshapiro?trk=public_profile_samename-profile",
      "name": "Dmitry Shapiro",
      "summary": "Problem Solver at cbconstruction",
      "location": "San Francisco, CA"
    },
    {
      "link": "https://www.linkedin.com/in/dmitry-shapiro-8692771?trk=public_profile_samename-profile",
      "name": "Dmitry Shapiro",
      "summary": "",
      "location": "Highland Park, IL"
    },
    {
      "link": "https://www.linkedin.com/in/dmitry-shapiro-10214218?trk=public_profile_samename-profile",
      "name": "Dmitry Shapiro",
      "summary": "--",
      "location": "New York City Metropolitan Area"
    }
  ],
  "recommendations": [
    {
      "link": "https://www.linkedin.com/in/jcuzens?trk=public_profile_recommendations",
      "name": "Jarrod Cuzens",
      "summary": "“Not only is Dmitry one of the most creative and personable individuals I have had the pleasure to work with but he is also one of those people that I will always admire for his ability to come up with and sell these ideas. If I had to sum up Dmitry in one word it would certainly be visionary.”"
    },
    {
      "link": "https://www.linkedin.com/in/sunnygault?trk=public_profile_recommendations",
      "name": "Sunny Gault",
      "summary": "“Dmitry is one of the most unusual CEO's I've ever met- but that's what makes him so great. You feel completely comfortable talking to him and sharing your ideas- which creates an ideal working environment. When you've got a good idea, he commends you for it and gives you the tools you need to go out there and tackle the world!”"
    }
  ],
  "publications": [],
  "courses": [],
  "languages": [
    {
      "name": "Russian",
      "level": "Limited working proficiency"
    },
    {
      "name": "English",
      "level": "Native or bilingual proficiency"
    }
  ],
  "organizations": [],
  "projects": [],
  "awards": [],
  "score": []
}
```


# Scrape X Post

Get X Post Data

The Scrape X Post block retrieves content from a public post on X (formerly Twitter). This allows your workflow to reference real-time data such as post text, author, timestamps, and engagement metrics for use in summaries, responses, or fact-checking.

***

## Configurations

### Post URL

Enter the full URL of the X post you'd like to scrape.

**Example Format:** `https://x.com/username/status/1234567890123456789`

{% hint style="info" %}
Only public posts are supported. Private or deleted posts will return errors.
{% endhint %}

***

### Output Variable

Specify the name of the variable where the post data will be stored.

**Example:** `post_details`

***

## Sample Output

```json
{
  "id": "1945136856297038194",
  "text": "A Chief Economist and a COO walk into a podcast...\n\n@ronniechatterji and @bradlightcap talk about the future of jobs and the economy in the age of AI on Episode 3 of the OpenAI podcast, now live. https://t.co/XhsDR1tLWn",
  "authorName": "OpenAI",
  "authorUsername": "OpenAI",
  "authorProfileImageUrl": "https://pbs.twimg.com/profile_images/1885410181409820672/ztsaR0JW_400x400.jpg",
  "isVerified": true,
  "createdAt": "Tue Jul 15 15:02:20 +0000 2025",
  "stats": {
    "replies": 135,
    "retweets": 221,
    "likes": 1376,
    "bookmarks": 647,
    "views": 892658
  },
  "url": "https://twitter.com/OpenAI/status/1945136856297038194"
}
```


# Scrape X Profile

Get X Profile Data

The Scrape X Profile block retrieves publicly available information from a user's profile on X (formerly Twitter). Use this to enrich workflows with social data such as bio, follower count, username, and engagement metrics.

This is useful for lead enrichment, credibility checks, or contextualizing mentions from a given profile.

***

## Configurations

### Profile URL

Provide the full URL of the X user profile you want to scrape.

**Example Format:** `https://x.com/elonmusk`

{% hint style="info" %}
Only public profiles are supported. If the profile is private, suspended, or deleted, the request will return an error.
{% endhint %}

***

### Output Variable

Enter the name of the variable where the profile data will be stored.

**Example:** `profile_info`

***

## Sample Output

```json
{
  "id": "4398626122",
  "name": "OpenAI",
  "username": "OpenAI",
  "bio": "OpenAI’s mission is to ensure that artificial general intelligence benefits all of humanity. We’re hiring: https://t.co/dJGr6Lg202",
  "profileImageUrl": "https://pbs.twimg.com/profile_images/1885410181409820672/ztsaR0JW_400x400.jpg",
  "bannerImageUrl": "https://pbs.twimg.com/profile_banners/4398626122/1738590484",
  "createdAt": "Sun Dec 06 22:51:08 +0000 2015",
  "stats": {
    "followers": 4220541,
    "following": 3,
    "tweets": 1245,
    "likes": 852,
    "listed": 23991,
    "media": 350
  },
  "isVerified": true,
  "isBusiness": false,
  "url": "https://x.com/OpenAI"
}
```


# Scrape URL Block

Extract text content from a webpage

{% embed url="<https://youtu.be/xcRdYpzAEf0>" %}

The **Scrape URL Block** allows you to extract text content from a webpage and use it within your workflow. This block is ideal for gathering data dynamically from online sources to provide context for your AI Agents.

## **Configurations**

### **URL**

Provide the webpage URL you want to scrape. You can input a static URL directly or use a `{{variable}}` for dynamic URLs.

#### **Example**:

* Static: **`https://example.com/article`**
* Dynamic: **`{{inputURL}}`**

#### Multiple URLs

The Scrape URL block supports scraping **multiple URLs** in a single execution. It accepts input in any of the following formats:

* A JSON array of URLs
* A comma-separated string of URLs
* A newline-separated list of URLs

When multiple URLs are provided, the block returns a JSON array containing the scrape results for each URL, in the order they were received.

### **Output Variable**

Creates a new variable and saves the extracted text to it. Enter a `variable_name` to store the response for later use in the workflow.

### Auto-enhance

Automatically adjust settings for certain URLs to prevent scraping errors. In most cases, it is best to leave this enabled in order to ensure consistent scrape results.

### **Provider**

Select the scraping provider to process the webpage. Different providers will have different configuration settings and outputs. Choose the one that works best for your needs.

***

## Types of Providers for the Scrape URL Block

The **Scrape URL Block** supports multiple providers to extract webpage content, each offering different levels of customization and functionality.

### **Default**

The default provider is the best option for most web scraping tasks.

### **Firecrawl**

[Firecrawl](https://www.firecrawl.dev/) offers advanced configuration options for greater control over how webpages are scraped. You likely do not need to use Firecrawl, especially when auto-enhance is enabled. If you do choose to use Firecrawl, you have access to some additional options.

#### **Only Main Content**

When enabled, this setting returns only the main content of the page, such as the body text, while excluding headers, navigation bars, and footers. Disabling it includes the entire page content, including headers and sidebars.

#### **Include Screenshot**

When enabled, captures and returns a screenshot of the top of the page you are scraping. When disabled, it does not include a screenshot.

#### **Wait For**

Allows you to specify a delay (in milliseconds) before scraping begins to let the page fully load. By default, no wait time is applied. For example, setting it to **`500`** waits half a second before scraping.

#### **Absolute Paths**

Converts all relative paths in the scraped content to absolute URLs when enabled. This ensures that links and resources in the scraped content are fully qualified. When disabled, relative paths remain as they are.

#### **Headers**

Lets you include custom HTTP headers with your scraping request. This is useful for adding cookies, specifying a **`User-Agent`**, or passing authentication tokens.

#### **Remove Tags**

Allows you to define HTML tags to exclude from the scraped content. For instance, adding **`<footer>`** removes footer elements from the output.

***

## Best Practices

* **Validate URLs**: Ensure the URL points to a publicly accessible page with the desired content.
* **Monitor Structure Changes**: Webpages may change structure over time, which could affect scraping accuracy.
* **Use Variables**: Leverage dynamic variables to adapt the block to multiple use cases without manually changing the URL.
* **Set Clear Outputs**: Choose meaningful variable names to make workflow debugging and customization easier.


# Search Bluesky Posts

Search for posts on Bluesky in a MindStudio Workflow

{% embed url="<https://www.youtube.com/embed/RrSCc71sMwM>" %}

## Configuration

### Search Query&#x20;

Type in the text query that will be sent to Bluesky. The search query can include variables.&#x20;

### Output Variable&#x20;

Specify the name of the output variable that will store the results. Example: `Bluesky_results`

### Sample Output

```json
{
  "posts": [
    {
      "uri": "at://did:plc:xxxxxxxxxxxxxx/app.bsky.feed.post/xxxxxx",
      "cid": "bafyreixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "author": {
        "did": "did:plc:xxxxxxxxxxxxxx",
        "handle": "xxxxx.bsky.social",
        "displayName": "xxxxx",
        "avatar": "https://cdn.bsky.app/img/avatar/plain/did:plc:xxxxxxxxxxxxxx/bafkreixxxxxxxxxxxxxxxxxxxxxx@jpeg",
        "labels": [],
        "createdAt": "2025-01-20T10:53:19.743Z"
      },
      "record": {
        "$type": "app.bsky.feed.post",
        "createdAt": "2025-03-04T08:18:50.233Z",
        "embed": {
          "$type": "app.bsky.embed.images",
          "images": [
            {
              "alt": "",
              "aspectRatio": {
                "height": 1350,
                "width": 1080
              },
              "image": {
                "$type": "blob",
                "ref": {
                  "$link": "bafkreixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
                },
                "mimeType": "image/png",
                "size": 483205
              }
            }
          ]
        },
        "facets": [
          {
            "features": [
              {
                "$type": "app.bsky.richtext.facet#link",
                "uri": "https://vist.ly/xxxxxx"
              }
            ],
            "index": {
              "byteEnd": 277,
              "byteStart": 254
            }
          }
        ],
        "text": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx https://vist.ly/xxxxxx \n#BusinessSolutions #xxxxxxxxx"
      },
      "embed": {
        "$type": "app.bsky.embed.images#view",
        "images": [
          {
            "thumb": "https://cdn.bsky.app/img/feed_thumbnail/plain/did:plc:xxxxxxxxxxxxxx/bafkreixxxxxxxxxxxxxxxxxxxxxx@jpeg",
            "fullsize": "https://cdn.bsky.app/img/feed_fullsize/plain/did:plc:xxxxxxxxxxxxxx/bafkreixxxxxxxxxxxxxxxxxxxxxx@jpeg",
            "alt": "",
            "aspectRatio": {
              "height": 1350,
              "width": 1080
            }
          }
        ]
      },
      "replyCount": 1,
      "repostCount": 0,
      "likeCount": 1,
      "quoteCount": 0,
      "indexedAt": "2025-03-04T08:18:54.853Z",
      "labels": []
    }
  ]
}
```


# Search Google

Retrieve Google search results in a MindStudio workflow

{% embed url="<https://www.youtube.com/embed/xIH-bhsZ1jQ>" %}

## Configuration

### Search Query&#x20;

Type in the text query that will be sent to Google. The search query can include variables.&#x20;

### Output Variable&#x20;

Specify the name of the output variable that will store the results. Example: `googleSearch_results`

### Format

Select the format you want to save the returned result as:

* **Plain Text**
* **JSON**

## Sample Output - Plain text

```json
Title: [Topic] - Wikipedia
Description: [Brief overview of topic with generic information]
URL: https://en.wikipedia.org/wiki/[Topic]

Title: [Topic] Explained - Expert Guide
Description: Comprehensive breakdown of key concepts, history, and current trends in [topic area]
URL: https://www.example-expert-site.com/guide/[topic]

Title: Top [Number] [Topic] Insights
Description: In-depth analysis of [topic] including recent developments and important considerations
URL: https://www.research-platform.com/insights/[topic]

Title: Understanding [Topic]: A Complete Resource
Description: Detailed exploration of [topic], covering essential aspects and practical applications
URL: https://www.learning-center.org/[topic]-guide
```

## Sample Output - JSON

```json
[
    {
        "title": "Example Website",
        "description": "Placeholder website description",
        "url": "https://example.com/"
    },
    {
        "title": "Another Website",
        "description": "Generic website description",
        "url": "https://example-b.org"
    }
]
```


# Search Google Images

Retrieve Google Image search results in a MindStudio workflow

{% embed url="<https://www.youtube.com/embed/o3dOD6cdZFs>" %}

## Configuration

### Search Query&#x20;

Type in the text query that will be sent to Google. The search query can include variables.&#x20;

### Output Variable&#x20;

Specify the name of the output variable that will store the results. Example: `imageSearch_results`

### Format

Select the format you want to save the returned result as:

* **Plain Text**
* **JSON**

## Sample Output - Plain Text

```json
Title: Domestic Cat Sample
URL: https://example.com/sample-cat-image.jpg
Dimensions: 1920px x 1280px
Source: www.example.com

Title: Cat Sample Image
URL: https://example.com/another-cat-image.jpg
Dimensions: 1600px x 1024px
Source: www.sample-source.com

Title: Cat Breed Representation
URL: https://example.com/cat-breed-image.jpg
Dimensions: 1440px x 900px
Source: www.cat-example.org
```

## Sample Output - JSON

```json
[
  {
    "title": "Example Cat Image",
    "imageUrl": "https://example.com/placeholder-cat-image.jpg",
    "imageWidth": 1000,
    "imageHeight": 800,
    "thumbnailUrl": "https://example.com/placeholder-cat-thumbnail.jpg",
    "thumbnailWidth": 275,
    "thumbnailHeight": 183,
    "source": "Example Source",
    "domain": "example.com",
    "link": "https://example.com/cat-information",
    "googleUrl": "https://example.com/google-image-link",
    "position": 1
  }
]
```


# Search Google News

Retrieve Google News search results in a MindStudio workflow

{% embed url="<https://www.youtube.com/embed/UcpYnTeASRo>" %}

## Configuration

### Text&#x20;

Define the search query that will be sent to Google News. The search query can include variables.

### Output Variable&#x20;

Specify the name of the output variable that will store the results. Example: `GoogleNews_result`

### Format

Select the format you want to save the returned result as:

* **Plain Text**
* **JSON**

## Sample Output - Plain Text

```json
Title: Over 50 Cats Rescued from Storage Unit
Date: 03/04/2025
Location: Bucks County, Pennsylvania
Key Details:
- 53 cats discovered in "filthy" public storage unit
- Some animals found in serious medical condition
- Local animal rescue team conducted comprehensive rescue operation
- Ongoing investigation into potential animal hoarding situation

Title: Free Microchipping Event for Cats and Dogs
Date: 03/06/2025
Location: Oxford
Key Details:
- Community event offering free pet microchipping
- Scheduled for March 15
- Aims to support responsible pet ownership
- Open to both cats and dogs
```

## Sample Output - JSON

```json
[
    {
        "position": 1,
        "title": "Herding cats: It's past time to include pets in disease surveillance",
        "source": {
            "name": "Example News Source",
            "icon": "https://example.com/icon.jpg",
            "authors": [
                "John Doe",
                "John Doe",
                "John Doe"
            ]
        },
        "link": "https://example.com/article",
        "thumbnail": "https://example.com/thumbnail.jpg",
        "thumbnail_small": "https://example.com/small-thumbnail.jpg",
        "date": "03/04/2025, 09:33 AM, +0000 UTC"
    }
]
```

***

## Search Operators Reference

Your search query can include Google Search Operators, like `site:bbc.co.uk`  to only return news results from the BBC, or `when:24h`  to only return news results from the past 24 hours. See the below table for the full list of supported search operators.

| Operator / Parameter         | Purpose                                        | Example                                                          |
| ---------------------------- | ---------------------------------------------- | ---------------------------------------------------------------- |
| `"exact phrase"`             | Search for an exact phrase                     | `"Apple Watch Series 10"`                                        |
| words (space-separated)      | Search for any of several keywords             | `Nikon mirrorless`                                               |
| `-word`                      | Exclude a keyword                              | `NBA Playoffs -Celtics`                                          |
| `site:domain`                | Limit to a specific website                    | `Apple site:techradar.com`                                       |
| `when:[timeframe]`           | Filter by publication time frame               | `when:1d` for past 24 hours (or `when:1h`, `when:1w`, `when:1y`) |
| Combinations                 | Mix/search restrictively                       | `Apple site:pcmag.com when:1d -Meta -Microsoft -Google`          |
| `topic_token`                | Filter by Google News topic                    | (token provided by API / UI; e.g. Technology)                    |
| `publication_token`          | Filter by publisher                            | (token representing PCMag, Forbes, etc.)                         |
| `section_token` (with above) | Filter by subsection within topic/publisher    | (e.g. Artificial intelligence under Technology)                  |
| `story_token`                | Filter by a specific news story                | (e.g. “Samsung Galaxy Unpacked event”)                           |
| `so`                         | Sort grouped story results (with story\_token) | `so` (sort by date descending)                                   |


# Search Google Trends

Retrieve Google Trends keyword results in a MindStudio workflow

{% embed url="<https://www.youtube.com/embed/Tc6py1k0V0I>" %}

## Configuration

### Query&#x20;

Type in the text queries you want to send. Make sure each query is separated by a comma. Example: `coffee,pizza,dark chocolate`.

The search query can include variables.&#x20;

### Output Variable&#x20;

Specify the name of the output variable that will store the results. Example: `Trends_result`

### Advanced Settings&#x20;

#### Data Type

Specify the type of search you want to make. The following options are:

* `Interest over time (TIMESERIES)`
* `Breakdown by Region`
* `Interest by Region (GEO_MAP_0)`
* `Related Topics`
* `Related Queries`

#### Category&#x20;

This parameter is used to define the search category. By default this parameter is set to `0` which defines `All Categories`. You can see the full list of parameters [here.](https://serpapi.com/google-trends-categories)

#### Language&#x20;

Define the language parameter. The default is set to `en` for English. See the full list of parameters [here.](https://serpapi.com/google-languages)

#### Location&#x20;

This parameter defines the location from where you want the search to originate. The default is set to Worldwide. You can see the full list of parameters [here.](https://serpapi.com/google-trends-locations)&#x20;

#### Date&#x20;

Specify the date range of the trends you are searching. Available parameters to define a date include:

* `now 1-H` - Past hour
* `now 4-H` - Past 4 hours
* `now 1-d` - Past day
* `now 7-d` - Past 7 days
* `today 1-m` - Past 30 days
* `today 3-m` - Past 90 days
* `today 12-m` - Past 12 months
* `today 5-y` - Past 5 years
* `all` - 2004 - present

You can also pass custom values by using `yyyy-mm-dd yyyy-mm-dd`

#### Time Offset&#x20;

This parameter is used to define the timezone. The default timezone is set to `420` (Pacific Day Time (PDT): -07:00). Value is shown in minutes and can span from `-1439` to `1439`.

Other Timezone examples:\
`420` - PDT\
`600` - Pacific/Tahiti\
`-540` - Asia/Tokyo\
`-480` - Canada/Pacific.

## Sample Output

```json
{
  "search_metadata": {
    "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "status": "Success",
    "json_endpoint": "https://example.com/search/sample.json",
    "created_at": "2025-03-06 20:15:25 UTC",
    "processed_at": "2025-03-06 20:15:25 UTC",
    "google_trends_url": "https://example.com/trends",
    "raw_html_file": "https://example.com/search/sample.html",
    "prettify_html_file": "https://example.com/search/sample.prettify",
    "total_time_taken": 16.09
  },
  "search_parameters": {
    "engine": "google_trends",
    "q": "example_query",
    "hl": "en",
    "date": "today 12-m",
    "tz": "420",
    "data_type": "TIMESERIES"
  },
  "interest_over_time": {
    "timeline_data": [
      {
        "date": "Sample Date Range",
        "timestamp": "0000000000",
        "values": [
          {
            "query": "example_query",
            "value": "80",
            "extracted_value": 80
          }
        ]
      }
    ]
  }
}
```


# Search X Posts

Search for posts on X by keyword in a MindStudio workflow

{% embed url="<https://www.youtube.com/embed/bOZ2-hWYucs>" %}

## Configuration

### Search Query

Enter the text or keyword phrase you want to search for. You can include variables (e.g., `{{user_input}}`) to make the query dynamic.

**Example:**\
`"fact checking"`

`{{topic}} AND ("AI" OR "machine learning")`

> **Note:** You may include [X advanced search operators](https://developer.twitter.com/en/docs/twitter-api/tweets/search/integrate/build-a-query).

***

### Max Results

Set the maximum number of posts to retrieve. This can range from 10 to 100. Use the slider or type in a number.

***

### After Date *(Optional)*

Return only posts made after a specific date/time. Accepts relative expressions using `{{dateSubtract}}`, `{{currentDate}}`, or static ISO timestamps.

**Example:**

`{{dateSubtract currentDate 3 "days"}}`

This would fetch posts from the last 3 days.

***

### Before Date *(Optional)*

Return only posts made before a specific date/time. Use ISO format (`YYYY-MM-DD HH:mm:ss`).

**Example:**

`2025-07-01 00:00:00`

***

### Output Variable

Specify the variable name where the results will be saved. This variable can be used in later blocks.

**Example:**

`genAIReporting` or `Xpost_results`

## Sample Output

```json
{
  "data": [
    {
      "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "text": "RT @example: Sample tweet text about a topic.",
      "author_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "edit_history_tweet_ids": [
        "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
      ]
    },
    {
      "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "text": "RT @example: Sample tweet text about indie games.",
      "author_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "edit_history_tweet_ids": [
        "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
      ]
    }
  ],
  "meta": {
    "newest_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "oldest_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "result_count": 2,
    "next_token": "example-token-string"
  }
}
```


# Search YouTube

Retrieve YouTube search results in a MindStudio workflow

{% embed url="<https://www.youtube.com/embed/HhABlKsq6sk>" %}

## Configuration&#x20;

### Search Query

Enter the search query you want to send to Youtube. This section can include variables.

### Content Type

Select the type of content you want to return from your search. Options include:

* **Anything (default)**
* **Videos**
* **Channels**
* **Use Custom SP Filter** (for more information refer to [this article](https://serpapi.com/blog/youtube-sp-filters-paginating-sorting-and-filtering-with-the-youtube-api/))
  * You can use the Custom SP filter to filter and sort more specific types of content in your search. **Examples might include:**
    * Only searching for **4K resolution videos**
    * Only searching for videos that are **less than 4 minutes long**
  * Copy the `sp` value, and paste it in the space provided.&#x20;

### Pages

Specify the numbers of pages you want to scrape. The default will always be set to 1. The max amount of pages that can be scraped is 5.

### Output Variable&#x20;

Save the returned Youtube search data in a variable. Example: `YT_search`

### Format&#x20;

The returned Youtube video data will always be exported in **JSON**.&#x20;

## Sample Output

```json
{
  "suggestions": [
    "example studio",
    "example studios",
    "example tool",
    "example studio",
    "example studio variant",
    "example ai"
  ],
  "channels": [
    {
      "position": 3,
      "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "title": "Example Studio",
      "link": "https://www.youtube.com/@ExampleStudio",
      "description": "Create AI solutions–simple, fast, hassle-free No expertise required",
      "subscribers": 25000,
      "thumbnail": {
        "static": "https://example.com/placeholder-thumbnail.jpg",
        "rich": "https://example.com/placeholder-thumbnail-rich.jpg"
      }
    },
    {
      "position": 14,
      "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "title": "Example Training Studio",
      "link": "https://www.youtube.com/@examplestudio",
      "description": "Channel about training and development",
      "subscribers": 8000,
      "thumbnail": {
        "static": "https://example.com/placeholder-thumbnail.jpg",
        "rich": "https://example.com/placeholder-thumbnail-rich.jpg"
      }
    }
  ],
  "videos": [
    {
      "position": 1,
      "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "title": "Example Studio: AI Builder Overview",
      "link": "https://www.youtube.com/watch?v=example",
      "description": "Introduction to AI building tool",
      "views": 42000,
      "channel": {
        "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "title": "John Doe",
        "link": "https://www.youtube.com/@example",
        "thumbnail": "https://example.com/placeholder-channel-thumbnail.jpg"
      },
      "length": "7:23",
      "published_time": "1 year ago",
      "badges": ["CC"],
      "thumbnail": {
        "static": "https://example.com/placeholder-video-thumbnail.jpg",
        "rich": "https://example.com/placeholder-video-thumbnail-rich.jpg"
      }
    }
  ]
}
```


# Search YouTube Trends

Search for trends by a specified category in a MindStudio workflow

{% embed url="<https://www.youtube.com/embed/5_uY3QHJCdI>" %}

## Configuration&#x20;

### Category&#x20;

Specify the trend category you want to search. The options include:

* **Now (default)**
* **Music**&#x20;
* **Gaming**
* **Films**

### Country&#x20;

Select the country of origin you want to use. United States is chosen by default. For the full list of supported countries [look here. ](https://www.searchapi.io/docs/parameters/youtube/gl)

### Language&#x20;

Specify the language you want you want use. English is selected by default. For the full list of supported languages [look here. ](https://www.searchapi.io/docs/parameters/youtube/hl)

### Output Variable&#x20;

Save the returned data as a variable. Example: `Trends_Return`

## Sample Output

```json
{
  "trending": [
    {
      "position": 1,
      "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "title": "Sample Video Title",
      "link": "https://www.youtube.com/watch?v=example",
      "views": 3142370,
      "channel": {
        "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "title": "John Doe Channel",
        "link": "https://www.youtube.com/@example",
        "is_verified": true,
        "thumbnail": "https://example.com/thumbnail.jpg"
      },
      "length": "2:00:11",
      "published_time": "Streamed recently",
      "thumbnail": "https://example.com/video_thumbnail.jpg"
    }
  ],
  "recently_trending": [
    {
      "position": 1,
      "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "title": "Sample Trending Video",
      "link": "https://www.youtube.com/watch?v=example",
      "views": 11472521,
      "channel": {
        "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "title": "John Doe Pictures",
        "link": "https://www.youtube.com/@example",
        "is_verified": true,
        "thumbnail": "https://example.com/channel_thumbnail.jpg"
      },
      "length": "0:28",
      "published_time": "7 days ago",
      "thumbnail": "https://example.com/trending_thumbnail.jpg"
    }
  ],
  "shorts": [
    {
      "position": 1,
      "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "title": "Sample Short Video",
      "link": "https://www.youtube.com/shorts/example",
      "views": 3500000,
      "thumbnail": "https://example.com/shorts_thumbnail.jpg"
    }
  ],
  "featured_artist_videos": [
    {
      "position": 1,
      "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "title": "Sample Artist Video",
      "link": "https://www.youtube.com/watch?v=example",
      "views": 8791803,
      "channel": {
        "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "title": "John Doe Artist",
        "link": "https://www.youtube.com/channel/example",
        "thumbnail": "https://example.com/artist_thumbnail.jpg"
      },
      "length": "3:06",
      "published_time": "1 month ago",
      "thumbnail": "https://example.com/artist_video_thumbnail.jpg"
    }
  ]
}
```


# Send Email

Send an email to a registered address

## Configuration&#x20;

### Account&#x20;

#### Dynamic (Ask at runtime)

This setting will ask a user to provide a registered email when they run the app.

#### Connect a New Account

Follow the instructions on the pop-up window to directly connect a registered email to your MindStudio account.&#x20;

### Subject

Enter the subject of the email you want to send. This section can include variables.&#x20;

### Body

Enter the body of the email you want to send. This section can include variables.

The body of the email can be written in **Markdown syntax** or **HTML.**&#x20;

**Note:** You can use the Send Email block alongside the Generate Asset block. Simply set the body of the email to the variable value generated by the Generate Asset block. The block will automatically fetch the generated HTML and use it as the email body.


# Send SMS

Send an SMS to a valid phone number

## Configuration&#x20;

### Account&#x20;

#### Dynamic (Ask at runtime)

This setting will ask a user to provide a valid phone number when they run the app.

#### Connect a New Account

Follow the instructions on the pop-up window to directly connect a valid phone number to your MindStudio account.&#x20;

### Message&#x20;

Enter the message you'd like to send to the selected phone number. This section can include variables.


# Set Run Title

Update the title in the user's history

The Set Run Title block updates the title that appears in the user's run history for a given Run. This makes it easier for users to identify and organize previous interactions, especially when agents are used repeatedly with different content or contexts.

***

## Configurations

### New Title

Define the custom title that should appear in the user’s session history. **You may include variables** such as `{{user_input}}`, `{{summary}}`, or any previously defined step output to personalize the title.

***

#### **Examples**

**Example 1: Personalized Summary**\
`Summary of conversation with {{user_name}}`

**Example 2: Workflow Context**\
`Invoice generated for {{client_company}} on {{current_date}}`

***

## How It Works

1. When the block is reached during execution, it updates the title of the current run session in the user’s history.
2. The new title will immediately be reflected in the Workspace or Extension history views.
3. If no variables are present, the block will use the static text as-is.


# Start Block

The first part of any workflow in MindStudio

The **Start Block** is the first part of any workflow in MindStudio. It initializes your AI Agent, defines how and when the workflow begins, and sets up key variables that are used throughout the workflow.

## Configurations

### **Triggers**

Define how the workflow is activated. Triggers can be configured to run:

* **On-Demand**: The default trigger. Requires manual execution.
* **Scheduled**: At specific times or intervals, such as daily at 8:00 AM.
* **Event-Driven**: Based on external inputs like API requests, webhooks, email.

### **Launch Variables**

Variables that are initialized at the start of the workflow and passed through the entire process. Launch variables can be referenced throughout the workflow using `{{variable_name}}`.

Launch variables can be defined in different ways, depending on the how the workflow is being started. They can be:

* Set in the body of an API request
* Defined in the settings of a [Run Workflow](/building-ai-agents/blocks-reference/run-workflow-block) block, if the workflow is being started by another workflow
* Defined in the schedule rules (see below) for scheduled runs
* Passed via query string parameters to the URL of the agent (e.g., `https://app.mindstudio.ai/agents/agent_id/run?variableName=variable_value&anotherVariable=different_value`). Note that this pattern also works for Signed URLs and Guest Access embeds.

***

## Run Modes

### On-Demand

The default mode for new Agents. These workflows only run when manually triggered by a user or system.

***

### Schedule

The **Scheduler** is a feature within the Start Block that allows you to set up automated, time-based triggers for your workflow. To enable the Scheduler, change the **Triggers > Run Mode** configuration from “On-Demand” to “Scheduled”. You may create multiple schedules for a workflow.

#### Creating Schedules

1. **Define the Schedule** using natural language to describe how often and when the workflow should run.
   * Examples:
     * "Every day at 8:00 AM"
     * "Every Monday and Wednesday at 3:00 PM"
     * "First day of every month at 9:00 AM"
2. **Set the Time Zone** based the relative hours you’d like the workflow to run .
3. **(Optional) Add Launch Variable arguments** using `key:value` \*\*\*\*pairs.
4. Generate the Schedule by clicking on the **Generate Schedule Button**
5. **Save** the schedule.

***

### Browser Extension

Triggered directly via [Chrome Extension](/get-started/mindstudio-chrome-extension) while browsing the web. Enabling users to run Agents on the current page or selected content. Data from the page you are browsing are extracted as Launch Variables through the workflow.

**Launch Variables:**

* **`url`** - the URL of the page you are browsing
* **`metadata`** - A dictionary of metadata including page title, description, and other OpenGraph data when available.&#x20;
* **`pageContent`** - All main content extracted from the visible portion of the page. ON sites like youtube, pageContent is also used to extract the video transcript.
* **`fullText`** - A complete text dump of the page, including hidden and non-visible content.
* **`userSelection`** - The text manually highlighted by the user (if any) at the time the Agent is triggered.
* **`rawHtml`** - The full HTML source of the page

***

### Email Run

Triggered by sending an email to a unique, agent-specific email address. This mode is useful for processing inbound email data or automating responses. Content from the email are passed as Launch Variables through the workflow.

**Launch Variables:**

* **`from`** – The sender’s email address
* **`subject`** – The subject line of the incoming email
* **`message`** – The full text content of the email
* **`attachments`** – Any files included in the email

***

### Webhook Run

Use this mode to start workflows automatically in response to external webhooks. The webhook endpoint is generated for each workflow and can be connected to other tools or services. Data sent in the webhook payload (e.g., JSON body) is mapped to Launch Variables, enabling full dynamic control over workflow behavior.&#x20;


# Terminator Block

End the workflow with multiple end behaviors

The **Terminator Block** marks the endpoint of a workflow. It offers multiple behaviors to customize the user’s experience or finalize the workflow’s output. End behaviors define how workflow concludes, whether through interaction, document processing, or returning structured data.

## **Configurations**

Choose one of the following behaviors to define how the workflow ends:

### **Chat**

Provides a frontend native chat experience, ideal for conversational workflows.

#### **System Introduction (Optional)**:

An introductory message displayed at the start of the chat session. This is for display purposes only and is not included in the AI prompt.

#### **Message Processing Strategy**:

Choose how user inputs are processed before being sent to the AI. Options include no processing or custom strategies.

**No processing:** Does not pre-process the message in any way.

**Retrieval-Augmented Generation (RAG):** Incorporates external context from [Data Sources](/building-ai-agents/data-sources) into the AI’s responses. Enabling this strategy opens the following configurations:

* **Data Source**: Select or create a Data Source to provide the AI with additional context.
* **Max Results**: Set the maximum number of relevant results retrieved from the Data Source.
* **Template**: Define how retrieved context is combined with the user’s input.
  * <mark style="color:red;">`{{queryResult}}`</mark>: refers to the result of the Data Source query
  * <mark style="color:red;">`{{originalMessage}}`</mark>: refers to the message sent by the end user in the chat

#### **Other Settings**:

* **Model Mixer**: Allow users to use multiple LLM models during the chat. For example, a user can send a message and use model mixer to get a response from both Claude 3 Opus and GPT-4o.

***

### **End Session**

Finalizes the workflow and returns output values to the calling function or user.

#### **Return Data**:

* **JSON Output**: Define the final data to return using JSON format. Create key value pairs and use <mark style="color:red;">`{{variables}}`</mark> for [dynamic content](/building-ai-agents/variables).

#### **Notifications**:

* **Email**: Enable email notifications when the workflow ends.
  * When enabled, click on **+ Add** to enter the emails you’d like the notification sent to.
* **Slack**: Configure Slack notifications for workflow completion.
  * Click **Add to Slack** to authenticate and link your Slack account.
  * Once connected, select the desired channel from your Slack workspace you’d like the notification sent to.


# Text to Speech Block

Convert text into voice-over audio

The **Text to Speech Block** converts written text into voice-over audio, allowing you to dynamically generate audio content based on workflow inputs.

## Configurations

### **Text**

Define the text you want to convert to audio. Use `{{variables}}` to dynamically insert text you’d like converted into audio.

### **Output Variable**

Creates a new variable and saves the audio file URL to it. Enter a `variable_name` to store the response for later use in the workflow.

### **Model Settings**

Choose the AI Model you’d like to use to generate the audio. Different models will have unique settings to adjust the output’s characteristics. Review the selected model’s specific options for a full list of configurations.


# Transcribe Audio Block

Use AI to transcribe an audio file.

## Configuration&#x20;

### Audio URL

Add the URL for the audio that you want to transcribe. This section may include variables.

### Additional Context

Provide the AI model with additional context to aid in the transcription of the audio file.

### Output Variable

Save the transcription to a variable.

### Model Settings

Select the AI model you want to use. Optionals include:

* Eleven Labs Scribe V1
* OpenAI GPT 4o mini Transcribe
* OpenAI GPT 40 Transcribe
* OpenAI Whisper


# Update Calendar Event

Update a Google Calendar event.

## Configuration

### Account

#### Add account&#x20;

Connect your Google Calendar account by signing in with the proper credentials.

#### Dynamic (Ask at Runtime)

Ask the user to connect their account when the AI agent runs.&#x20;

### Event ID

Add the event ID for the calendar event that will be updated.

### Event Title&#x20;

Add an updated name for the event.

### Description&#x20;

Add an updated description for the event.

### Location&#x20;

Add an updated physical location or a link to the event.

### Time

Add an updated start time and end time for the event. Make sure to use ISO format (YYYY-MM-DD).

### Attendees

Add and update the email addresses for the attendees of the event. Only 1 address per line.

### Output Variable&#x20;

Save the event ID and url as a variable.


# Update Google Doc

Update values of an existing Google Doc in a MindStudio workflow

## Configuration

### Account&#x20;

#### Dynamic (Ask at runtime)

This setting will ask a user to login to their Google Drive account when they run the app.

#### Connect a New Account

Follow the instructions on the pop-up window to directly connect MindStudio to your Google Drive account.&#x20;

### Document&#x20;

Add the document URL for the document you want to update. If you have connected your Google Drive account, you can search for your document by selecting the **search folder icon** next to the text field.&#x20;

### Operation

Select how you would like to update the document. Options include:

* **Overwrite Content:** Overwrites the existing content
* **Add to Top:** Adds new content to the top of the document&#x20;
* **Add to Bottom:** Adds new content to the bottom of the document

### Document Format&#x20;

Select the format for the content being sent to the document. The options include:

* **Plain Text**
* **Markdown**
* **HTML**

### **Content**&#x20;

Add the content that will be added to the document. This section can include variables.


# Update Google Sheet

Update values of an existing Google Sheet in a MindStudio workflow

## Configuration

### Account&#x20;

#### Dynamic (Ask at runtime)

This setting will ask a user to login to their Google Drive account when they run the app.

#### Connect a New Account

Follow the instructions on the pop-up window to directly connect MindStudio to your Google Drive account.&#x20;

### Spreadsheet&#x20;

Add the spreadsheet URL for the Google sheet you want to update. If you have connected your Google Drive account, you can search for your spreadsheet by selecting the **search folder icon** next to the text field.&#x20;

### Operation

Select how you would like to update the document. Options include:

* **Overwrite Data:** Overwrites the current spreadsheet or selected rage.
* **Update by Range:** Adds new content to specified range.&#x20;
* **Add to Bottom:** Adds new content to the bottom of the spreadsheet.

### Range

Enter the range you want to update. Example: `Sheet1!A1:B2`

### **Spreadsheet Content**&#x20;

Add the content that will be added to the spreadsheet. This section can include variables.


# User Context Block

Dynamically gather information from a user.

The User Context block utilizes AI to generate a series of questions to the user based on certain parameters.&#x20;

## Configuration

### Prompt&#x20;

Define the additional data you want to collect from the user. Like the Generate Text block, the prompt serves as a message to the AI, directing it to produce a specific output. In this instance, that output is a set of interview-style questions designed to gather more context from the user.

{% hint style="info" %}
The prompt may include variables.
{% endhint %}

### Interview Depth

Specify the level of context gathered by the AI. This setting will inform how probing the questions are and how comprehensive the final report will be.&#x20;

Three options are provided:

1. Quick (default)
2. Medium&#x20;
3. Thorough

### Max Questions

Set the amount of questions to be asked. By default, the max amount of questions will be set to 5.

{% hint style="info" %}
If the maximum is reached, the workflow will cotinue regardless of whether or not the model thinks the interview is complete.
{% endhint %}

### Variable Name

Save the responses to a variable that can be used in other parts of the workflow. Example: `My_Var`

### Output Format

Select the output format for the response data:

1. Text (Default)
2. JSON


# User Input Block

Collect data directly from end users

{% embed url="<https://www.youtube.com/embed/p28WmgLd8ZU>" %}

The **User Input Block** lets your workflows to collect data directly from end users. Unlike AI-focused blocks, this block presents the forms or interfaces where users can provide input. When New User Inputs are automatically added to the **User Inputs** folder in the left-side **Explorer** tab.

## What is a User Input?

A **User Input** in MindStudio is a form-based interface that collects data directly from your end users. This data serves as context or input for workflows, and is stored as a `variable` and serves as context for downstream processes and AI-powered actions within your workflow .

When New User Inputs are created, they are automatically added to the **User Inputs** folder in the left-side **Explorer** tab.

## Add Existing User Inputs to the Block

1. Click on the + button at the bottom of the User Inputs Configuration Panel.
2. In the modal, choose from created User Inputs to add to the block.
3. (Optional) Click and drag User Inputs up and down to reorder them.
4. Click the **Add** button to confirm your choices.

## Create A New User Input

#### **From the User Input Block:**

1. Click on the (+) button at the bottom of the User Inputs Configuration Panel.
2. In the modal, click the **Create New**… button at the bottom left. A new User Input will be created in Explorer within the User Inputs folder, **and will be automatically added to the block**.
3. Configure the user input.

#### **From the Explorer:**

1. Hover over the User Inputs folder, then click on the + button to the right of the folder. A new User Input will be created in Explorer within the User Inputs folder.
2. Configure your User Input.
3. After configuring the User Input, you will need to add the User Input to the User Input Block.

### Edit A User Input

1. Open the **User Inputs** folder from the **Explorer** tab.
2. Click on the User Input that you’d like to modify
3. Changes to configurations are automatically saved.

### **Duplicate a User Input**

1. Open the **User Inputs** folder in the **Explorer** tab.
2. Right-click on the User Input to duplicate.
3. Select the **Duplicate** option.

The duplicated User Input displays in the **User Input** folder using the root name of the original with a number following it.

### **Delete a User Input**

Deleting a User Input removes it from all User Input Blocks across all Workflows.

1. Open the **User Input** folder in the **Explorer** tab.
2. Right-click on the User Input to delete.
3. Select the **Delete** option from the drop-down menu.
4. Confirm your deletion.

***

## Anatomy of a User Input

### Type

The type of User Input determines its functionality and format. See the table below for a full list of User Input types.

| Input Type       | Description                                                                                                  | Best For                                      | Example                                              |
| ---------------- | ------------------------------------------------------------------------------------------------------------ | --------------------------------------------- | ---------------------------------------------------- |
| **Short Text**   | Collects small amounts of text for concise inputs.                                                           | Names, URLs, locations.                       | "Enter your city."                                   |
| **Long Text**    | Collects large amounts of text, such as detailed descriptions or pasted content.                             | Long-form responses, content uploads.         | "Describe your project in detail."                   |
| **Text Choice**  | Allows users to select one or multiple text-based choices.                                                   | Yes/No questions, multiple-choice selections. | "Which services do you use? (Select all that apply)" |
| **Image Choice** | Enables selection of one or multiple images, each labeled with text.                                         | Visual comparisons or preferences.            | "Select your preferred design."                      |
| **Rating**       | Provides a 1–5 scale rating input.                                                                           | Feedback or satisfaction scoring.             | "Rate our service (1=Poor, 5=Excellent)."            |
| **Date**         | Displays a date picker for selecting specific dates.                                                         | Scheduling or logging events.                 | "Select your appointment date.”                      |
| **Display**      | Shows static text or images for guidance or instructions. No user input required.                            | Providing information or directing users.     | "Enter a URL to analyze the page content.”           |
| **Upload File**  | Presents an upload option for text-based files. Supported formats include Excel, CSV, Word, Text, PDF, HTML. | Uploading documents for AI analysis.          | "Upload your report for review.”                     |
| **Upload Image** | Allows users to upload images for analysis or storage.                                                       | Collecting visual content or custom inputs.   | "Upload an example visual."                          |

### Variable

The <mark style="color:red;">`variable_name`</mark> is a unique identifier for the User Input. It is used to reference the collected data in downstream workflow blocks. Use a variable name that is unique to the data being collected. (**Example:** <mark style="color:red;">`customer_goal`</mark> , <mark style="color:red;">`client_industry`</mark> , <mark style="color:red;">`first_name`</mark> )

### Multiple File Upload

The User Input block allows for multiple file upload. Multiple files are stored in one JSON variable via index. **Example**: <mark style="color:red;">`[0: file 1 extracted text, 1: file 2 extracted text]`</mark>

You can extract the contents of each file by using the proper [JSON structure variable syntax.](/building-ai-agents/variables#extracting-a-value-from-a-json-structure)

### Configurations

Configurations define how the User Input behaves and what options are available. These settings vary depending on the input type.

### Featured Image

An optional image displayed above the input field when presented to the end user. It enhances visual appeal and provides context to your end user.

### Test Value

Pre-fills the input field with a sample response when previewing workflows. This simplifies front-end testing when viewing a draft preview of an AI Agent.

***

## Dynamic Multiple Choice Inputs

{% embed url="<https://youtu.be/k80ewAADazw?si=NvQxfA5fBZ3G9rDg>" %}

You can create **Multiple Choice User Inputs** that dynamically display options generated during a previous step in your workflow. This is useful when you want users to select from data collected or processed earlier—such as a list of entities extracted from an article or scraped from a webpage.

### Example Use Case

Let’s say your AI Agent scrapes a URL, extracts named entities, and then asks the user to choose one for further research. Instead of hardcoding the options, you can populate them dynamically using a JSON variable.

### Step-by-Step Instructions

1. **Create a JSON Array in a Previous Block**
   * In the automation step where you extract or define options (e.g., from text analysis or scraping), generate an array of objects with the following structure:

     ```json
     [
       {
         "label": "OpenAI",
         "subtitle": "AI research organization"
       },
       {
         "label": "Google",
         "subtitle": "Technology company"
       }
     ]
     ```
   * Ensure the output is formatted as JSON and save it as a variable, e.g., `entities`.
2. **Configure the User Input Block**
   * Add a **Multiple Choice** input block.
   * Set the question prompt, such as:\
     `Which entity would you like to research further?`
   * Scroll down to the “Dynamic Source” section and set the source to the variable you created (`entities`).
3. **How It Works**
   * When the workflow reaches this input step, the Agent will present the dynamically generated list of entities to the user.
   * The `label` is shown as the choice text.
   * The selected `label` is what gets stored in the variable tied to the user input.

### Notes

* Make sure the variable used for dynamic choices is structured exactly as shown, with both `label` and `subtitle` fields in each object.
* You can further process the selected input in subsequent blocks—for example, by conducting more research or generating reports.


# Update Notion Page

Update a page in Notion

## Configuration&#x20;

### Account&#x20;

#### Dynamic (Ask at runtime)

This setting will ask a user to login to their Notion account when they run the app.

#### Connect a New Account

Follow the instructions on the pop-up window to directly connect MindStudio to your Notion account.&#x20;

### Parent Page

Enter the parent page ID of the page you want to update.

If you have connected your Notion account to MindStudio, you can search for the parent page ID by selecting the **search folder icon** next to the text field. This section can include variables.&#x20;

### Mode

**Append:** Selecting this mode will add new content to the bottom of the parent page.

**Overwrite:** Selecting this mode will replace the existing text with the new content.

### Page Content

Enter the updated content you want to send to the parent page. This section can include variables.


# Verify Email

Use Hunter.io to verify a person's email address in a MindStudio workflow

## Configuration&#x20;

### Email

Enter the email address that you want to verify. This section can include variables.

### Output Variable&#x20;

Save the output of the email verification to a variable. Example: `EmailVer`

## Sample Output

```json
{
  "data": {
    "status": "valid",
    "result": "deliverable",
    "_deprecation_notice": "Using result is deprecated, use status instead",
    "score": 100,
    "email": "patrick@stripe.com",
    "regexp": true,
    "gibberish": false,
    "disposable": false,
    "webmail": false,
    "mx_records": true,
    "smtp_server": true,
    "smtp_check": true,
    "accept_all": false,
    "block": false,
    "sources": [
      {
        "domain": "beta.paganresearch.io",
        "uri": "http://beta.paganresearch.io/details/stripe",
        "extracted_on": "2020-06-17",
        "last_seen_on": "2020-06-17",
        "still_on_page": true
      },
      {
        "domain": "icloudnewz.blogspot.com",
        "uri": "http://icloudnewz.blogspot.com/2017/11/follow-patrick-collison-mike-birbiglia.html",
        "extracted_on": "2020-03-25",
        "last_seen_on": "2020-06-29",
        "still_on_page": true
      }
    ]
  },
  "meta": {
    "params": {
      "email": "patrick@stripe.com"
    }
  }
}
```


# Zapier Webhook

Trigger a Zap from MindStudio

The **Zapier Webhook Block** allows your AI Agent to trigger and send data to a Zapier Zap. This enables seamless integration with thousands of apps supported by Zapier — including Google Sheets, Slack, Salesforce, Gmail, and more. Ideal for pushing data out of MindStudio into external systems without writing custom code.

***

## Configurations

### Webhook URL

Enter the full webhook URL from your Zapier "Catch Hook" trigger. This is where the data payload will be sent when the block runs.

**Example:**\
`https://hooks.zapier.com/hooks/catch/123456/abcde`

To create a webhook in Zapier, choose “Webhooks by Zapier” as your trigger app and select **Catch Hook**.

***

### Data

Define the payload to send with the request using key-value pairs. You can include variables in the values to send dynamic content from earlier blocks in your workflow.

**Add a Field:**\
Use the **+ Add** button to create a new key-value pair.

**Supported Format:**

* Keys must be plain strings (e.g., `"email"`, `"subject"`).
* Values can be strings or variables (e.g., `{{user_email}}`, `{{summary_text}}`).

**Example 1: Lead Capture**

| Key      | Value            |
| -------- | ---------------- |
| `email`  | `{{user_email}}` |
| `source` | `Lead Form`      |

**Example 2: Task Creation**

| Key        | Value                    |
| ---------- | ------------------------ |
| `title`    | `{{task_name}}`          |
| `due_date` | `{{formatted_due_date}}` |

***

### Output Variable

You can store the response from the Zapier webhook (if any) in a variable for use later in the workflow.

**Example:**\
Set `Output Variable` to `zap_response` to use the returned data in another block.

***

## How It Works

1. The block sends a POST request to the configured Zapier webhook URL.
2. The defined key-value pairs are included in the body of the request.
3. If Zapier returns a response (e.g., confirmation, generated data), the response is stored in the specified output variable.
4. The workflow continues to the next connected block.

***

## Best Practices

* **Test Your Zap:** Use sample data to ensure your Zapier trigger and actions are correctly configured.
* **Use Descriptive Keys:** Make your key names easy to understand for downstream Zap steps.
* **Validate Webhook Behavior:** In Zapier, check the task history to view the payloads received from MindStudio.
* **Secure Sensitive Data:** Avoid sending sensitive information unless your Zapier endpoint and downstream apps are secure.


# Writing Prompts

Learn about prompt engineering for AI tasks.

{% embed url="<https://youtu.be/YXK7YpQamiw>" %}

Prompts are the foundation of how your AI Agent understands and executes tasks. A well-written prompt ensures your AI Agent delivers precise and meaningful results.

***

## What is a Prompt?

A prompt is a set of instructions that tells the AI Agent what to do. It provides the context and parameters for generating the desired output. Just like giving someone directions, a good prompt ensures the AI knows exactly what to deliver. In MindStudio, prompts can be used at two levels: **System Prompts** and **Block Prompts**.

***

### System Prompt

The System Prompt appears in the **Prompt Tab** of a workflow file. It serves as the AI Agent's core instructions, defining its role, capabilities, and constraints and acts as the foundation, guiding how the AI behaves throughout the workflow.

<figure><img src="/files/gEHMZIpQZdpmZyYcsvfB" alt=""><figcaption></figcaption></figure>

When you write a system prompt, you’re establishing the AI's "role" and general approach to tasks. Every action in the workflow will follow this overarching guidance unless overridden by specific block prompts.

You can write a system prompt manually by typing into the blank space of the **Prompt Tab**, or you can click on the **Generate Prompt** button at the bottom left to have the **Prompt Generator** to write the prompt for you.

#### Using the Prompt Generator

1. Click on the **Generate Prompt** button at the bottom left of the prompt area. This will open the Prompt Generator Modal.
2. Using natural language, enter a brief description of what your AI Agent is supposed to do.
   1. **Example:**

      <pre class="language-markdown" data-overflow="wrap"><code class="lang-markdown">Assistant finds daily technology news, summarize it, and send an email at 8:00 AM. It includes up-to-date, and accurate information based on the context it is provided.
      </code></pre>
3. After entering your description, click the **Generate** button. The system will automatically create a structured prompt based on your input.
4. Carefully review the generated prompt to make sure it aligns with your requirements. You can edit the prompt directly in the editor if adjustments are needed.

<figure><img src="/files/2o5hulMokk8UhmDlMggA" alt=""><figcaption></figcaption></figure>

***

### Block Prompt

A **block prompt** is used for specific tasks within the workflow. While the system prompt provides overall guidance, a block prompt gives detailed instructions for a particular step.

<figure><img src="/files/Sfl9ZB446rsoL37MMiX3" alt=""><figcaption></figcaption></figure>

**Example of a Block Prompt (within a Generate Text block):**

{% code overflow="wrap" %}

```markdown
Summarize the following news articles: {{google_result}}.
```

{% endcode %}

Here, the block prompt tells the AI to focus on summarizing a specific piece of information (e.g., the result of a Google search). This allows you to customize how the AI performs at different stages of the workflow.

#### **How System Prompts and Block Prompts Work Together**

| System Prompt                                                                                       | Block Prompt                                                                                             |
| --------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
| **Purpose:** Acts like the big picture instruction. It’s the AI’s mindset for the entire workflow.  | **Purpose:** Adds specific, step-by-step instructions for individual tasks.                              |
| **Example:** "You are a tech-savvy assistant that simplifies complex topics for general audiences.” | **Example:** "Write a one-paragraph summary of the latest AI breakthrough using non-technical language." |

***

### Key Aspects of Prompt Writing

A good prompt is clear, specific, and provides enough context for the AI to understand what’s needed.

#### **Key aspects of an effective Prompts:**

* **Clarity**: Use straightforward language to avoid confusion. Clearly define the AI Agent's purpose and main tasks
* **Specificity**: Be detailed about what you want. Specify any limitations or guidelines that your AI Agent should follow when executing its task
* **Context**: Explain the purpose or provide a scenario to guide the AI. Context can be provided via direct instruction or by calling Variables within a prompt.
* **Output Format**: Outline the expected format or structure of its output.

#### **Examples of Good Prompts vs. Bad Prompts**

| Scenario                   | Good Prompt                                                                                         | Bad Prompt                           |
| -------------------------- | --------------------------------------------------------------------------------------------------- | ------------------------------------ |
| **Summarizing an Article** | "Summarize this article in 3 bullet points, focusing on key trends in technology."                  | "Summarize this."                    |
| **Writing an Email**       | "Write a professional email to a client, introducing our new AI tool and inviting them for a demo." | "Write an email about our product."  |
| **Data Analysis**          | "Analyze the provided sales data and list the top 3 trends for Q4 in bullet points."                | "Analyze this data."                 |
| **Creative Writing**       | "Write a 150-word humorous story about a robot learning to make ice cream."                         | "Write a funny story about a robot." |

***

## **Using Markdown to Write Prompts**

Markdown is a lightweight formatting language that can be used to structure prompts, making them clearer and easier for the AI to interpret. By using Markdown, you can organize your instructions in a readable and visually structured way.

### **Why Use Markdown in Prompts?**

1. **Clarity**: Break down complex instructions into digestible sections.
2. **Readability**: Using formatting like headers, bullet points, and code blocks to make prompts easier to follow.
3. **Consistency**: Ensure your prompt has a standardized structure, especially for complex tasks.
4. **Debugging:** Allows for easier debugging and refinement of prompts.

### **Common Markdown Elements for Prompts**

Here are some common Markdown features and how to use them:

1. **Headers**
   * **Purpose:** Use headers to introduce sections or tasks.
   * **Variations:**
     * `#` for H1
     * `##` for H2
     * `###` for H3
     * `####` for H4
   * Example:

     ```markdown
     # Task: Summarize the Article
     ```
2. **Bullet Points**
   * **Purpose:** Break down requirements into bullet points for clarity.
   * Example:

     ```markdown
     - Summarize the following text.
     - Highlight key trends in technology.
     - Keep the summary under 100 words.
     ```
3. **Numbered Lists**
   * **Purpose:** Use for step-by-step instructions.
   * Example:

     ```markdown
     1. Analyze the data provided.
     2. Identify the top three trends.
     3. Provide a summary in bullet points.
     ```
4. **Code Blocks**
   * **Purpose:** Use code blocks for examples or templates.
   * Example:

     ````markdown
     ```json
     {
         "topic": "daily tech news",
         "summary_length": "3 sentences"
     }
     ````
5. **Bold and Italics**
   * **Purpose:** Emphasize key instructions.
   * Example:

     ```markdown
     **Focus on key trends only.**
     *Avoid including minor details.*
     ```

***

**Example System Prompt Using Markdown**

````markdown

# Daily Tech News Assistant

## Role:
You are an AI assistant designed to summarize daily technology news for a non-technical audience. Your goal is to deliver concise, accurate, and well-structured summaries.

---

## Guidelines:
- Focus on **key trends and developments** in technology.
- Summaries must be written in simple, clear language suitable for readers with no technical background.
- Avoid including unnecessary details or jargon.

---

## Tasks:
1. Perform a search for the latest **technology news** based on the provided topic.
2. Summarize the articles into concise bullet points.
3. Format the output in the specified structure.

---

## Output Format:
The summary should be formatted as follows:

```markdown
### Daily Tech News Summary
1. [Key Trend 1]
2. [Key Trend 2]
3. [Key Trend 3]
````

For more information on Markdown, see the [Markdown Cheatsheet](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet).

***

### Auto-Enhance Prompts

The Auto-Enhance feature helps polish and refine your prompts after you've made modifications. It analyzes your prompt for clarity, formatting, and potential ambiguities, then suggests improvements while maintaining your original intent.

<figure><img src="/files/4si4PYEn0IdgqQVOw3IC" alt=""><figcaption></figcaption></figure>

#### How Auto-Enhance Works

1. **Access the feature:** Click the "Enhance" button in the bottom bar or use the keyboard shortcut Option + K
2. **Review suggestions:** The system presents an enhanced version of your prompt with improvements in:
   * Grammar and spelling
   * Markdown formatting consistency
   * Clarity and precision of instructions
   * Structure and organization
3. **Accept or reject changes:** Choose whether to implement the suggested improvements

This feature works both in the main **Prompt Tab** and in fullscreen **Send Message blocks**, making it easy to maintain high-quality prompts throughout your workflow.

{% hint style="info" %}
**Pro Tip:** Auto-Enhance is particularly useful when you've started with a generated prompt and made manual modifications, helping ensure your customizations maintain professional quality and clarity.
{% endhint %}

Creating a structured template lets the model knows exactly **where** and **how** to inject content. By pairing a template with your data, you get consistent, predictable results every time.

***

## Writing Templates

A template is a block of text (in Markdown, HTML, or JSON) containing **placeholders** for your variables. When your workflow runs, MindStudio replaces those placeholders with the actual values you’ve collected (via user inputs, scraped data, files, etc.) and sends the combined prompt to the model.

* **Placeholders** can use either XML-style tags <mark style="color:red;">`<company>…</company>`</mark> or square-bracket notation <mark style="color:red;">`[company]`</mark>.
* Inside a Generate Text or Generate Asset block, you supply:
  1. **Your data** (e.g., user inputs saved to variables)
  2. **The template** itself
* The model fills each placeholder according to your template’s structure.

***

### Why Use Templates?

* **Consistency**: Ensure every output follows the same format.
* **Clarity**: Guide the model step-by-step—no guessing about headings, sections, or order.
* **Scalability**: One template handles countless inputs.
* **Flexibility**: Swap templates for different formats (HTML vs. Markdown vs. JSON) without rewriting your workflow.

***

### Writing Templates

#### **Using Square Bracket Notation**

Square brackets are ideal for quick and easy placeholders in Markdown templates or ad-hoc prompts. They are simple to identify in plain text and work best when you have single-word placeholders like <mark style="color:red;">`[title]`</mark> or <mark style="color:red;">`[body]`</mark>.&#x20;

Use them when writing short, straightforward templates, such as bullet lists or paragraphs, where the format resembles a "fill-in-the-blanks" approach.

**Example prompt that uses Square brackets:**

```markdown
Write a blog post about {{blogTopic}}. Use Markdown.

[Blog Title]

[Hook+Context]

[Main Point 1]
- [Supporting Detail]
- [Example]

[Main Point 2]
- [Supporting Detail]
- [Example]

[Summary + Call to Action]
```

#### **Using XML Tags**

XML-style tags clearly show where each placeholder starts and ends to help avoid confusion with nearby text or symbols. This is particularly helpful for making sure variables are clearly displayed to the AI model.&#x20;

**Prompt Example (Generate Blog Post):**

```markdown
Write a blog post using Markdown.

<topic>
{{blog_topic}}
</topic>
```

You can also use them when you have longer placeholders, or for creating HTML templates with the **Generate Asset block**.

**HTML Example (Marketing Email):**

{% code overflow="wrap" %}

```html
<html>
  <body>
    <h1>Hey <recipient_name>{{name}}</recipient_name>,</h1>
    <p>We’re excited to introduce <product_name>{{product}}</product_name>—<product_tagline>{{tagline}}</product_tagline>.</p>
    <ul>
      <li><feature_1>{{feature_1}}</feature_1></li>
      <li><feature_2>{{feature_2}}</feature_1></li>
    </ul>
    <p><cta_text>{{CTA}}</cta_text></p>
  </body>
</html>
```

{% endcode %}

{% hint style="info" %}
For more information on creating HTML templates please review the [Generate Asset block](/building-ai-agents/blocks-reference/generate-asset-block) article.
{% endhint %}

***

### Best Practices for Template Writing

* **Name your placeholders** clearly (e.g. <mark style="color:red;">`[project_summary]`</mark>, not <mark style="color:red;">`[x]`</mark>).
* **Wrap variables** in tags to avoid ambiguity <mark style="color:red;">`<budget>{{budgetVariable}}<budget>`</mark> .
* **Test incrementally**: start with one section, preview, then expand.
* **Use Markdown** for quick proofs; **HTML** when you need precise styling.


# AI Models

Learn about choosing the right AI models for the right task.

{% embed url="<https://youtu.be/fTq0GFGL-vk>" %}

MindStudio provides access to over 90 AI models from leading providers, allowing you to tailor your workflows for a variety of tasks and use cases.

## **Select an Underlying AI Model**

The underlying model is the AI model that is inherited by the rest of the workflow. It’s configuration will be used as the default model for all blocks that use AI.

1. Navigate to the **Model Settings Tab** in your workflow editor.
2. Click on the Model Card to view information about the AI Model.
3. Click the **Use Button** to confirm your selection
4. (Optional) Click the heart icon to add preferred AI Models to your Favorites section

<figure><img src="/files/gIGQX0tgsToUUGLPSbri" alt=""><figcaption></figcaption></figure>

***

## **Configuring Model Settings**

There are two configuration options for AI models:

1. **Temperature**
   * Controls the randomness of responses:
     * **Higher Temperature**: More creative, but less predictable.
     * **Lower Temperature**: More consistent, but less diverse.
2. **Max Response Size**
   * Defines the maximum size of the model’s response in tokens.
   * Example: 400 tokens ≈ 300 words.

<figure><img src="/files/pryrPgetCUnnox6Ig1xu" alt=""><figcaption></figcaption></figure>

### **Best Practices for AI Model Configuration**

* Start the slider in the center for temperature and adjust based on your needs.
* Use larger response sizes for detailed outputs and smaller sizes for concise ones.

***

## **Using Multiple AI Models Within a Workflow**

Every block that uses AI has the ability to override the underlying models settings and use its own unique AI model and configuration. This allows you to use different models in the workflow based on the task required at each specific step of the workflow.

<figure><img src="/files/7jQsT2DNOu60WfPTrhFW" alt=""><figcaption></figcaption></figure>

***

## **Considerations When Selecting an AI Model**

Choosing the right AI model is critical to ensuring your workflow meets performance, cost, and quality requirements. MindStudio provides a variety of models with different capabilities, trade-offs, and configurations. When selecting a model, it's often necessary to balance these considerations to align with your workflow's goals and constraints.

### **Price**

AI models come with varying pricing structures based on usage, typically measured in tokens for prompt and response.

Use cost-effective models for high-volume, repetitive tasks (e.g., bulk summarization). Opt for premium models only when high output quality is critical.

### **Latency**

Latency refers to the time the model takes to generate a response. Low-latency models are essential for real-time or interactive workflows.

Prioritize low-latency models for use cases like chatbots or live applications. For non-time-sensitive workflows (e.g., scheduled reports), higher latency models with better quality may be acceptable.

### **Output Quality**

Different models vary in their ability to generate coherent, creative, or factual responses. Output quality depends on the model’s training and capabilities.

Choose advanced models for nuanced tasks like legal summaries or creative writing. Use simpler models for straightforward tasks like data extraction.

### **Context Window**

The context window determines the maximum amount of text the model can process at once. Larger context windows are essential for tasks involving lengthy inputs.

Use models with large context windows for summarizing lengthy documents or analyzing extensive datasets. For shorter inputs, a smaller context window may suffice and reduce costs.

## AI Models Reference

See [Usage Pricing Reference](/usage-pricing-reference#ai-models-reference).

### Image Models

See [Usage Pricing Reference](/usage-pricing-reference#image-models).

### Vision Models

See [Usage Pricing Reference](/usage-pricing-reference#vision-models).

### Video Models

See [Usage Pricing Reference](/usage-pricing-reference#video-models).

### Text-To-Speech Models

See [Usage Pricing Reference](/usage-pricing-reference#text-to-speech-models).

### Speech-To-Text Models

See [Usage Pricing Reference](/usage-pricing-reference#speech-to-text-models).


# Variables

Learn how to properly leverage variables in your AI Workflows

{% embed url="<https://youtu.be/Q5XEPAk8ziI>" %}

Variables in MindStudio are dynamic placeholders that store data during workflow execution. They allow you to pass information between blocks and workflows seamlessly.

**Example:**

* Variable Name: `userName`
* Usage: `"Hello {{username}}! Welcome to our app."`&#x20;

***

## **Types of Variables**

#### **Runtime Variables**

Most blocks, such as **Generate Text Blocks** or **User Input Blocks**, assign values for the variable while the workflow is running. For Example, after performing a Google Search, the block can store the results in a variable called `google_result`.

<figure><img src="/files/tT49jQyDszJFQ0LVYJ7d" alt=""><figcaption></figcaption></figure>

#### **Launch Variables**

These are defined in the **Start Block** of your workflow. Values for these variables are passed in as arguments when a workflow is run via API or via the Run Workflow block.

<figure><img src="/files/xMjHzQXontAXWNrgF3gh" alt=""><figcaption></figcaption></figure>

#### **Global Variables**

These variables values are scoped to the agent and stored in between Agent Runs. They are assigned in the onboarding flow or can be defined in blocks using `global.myVariable` syntax.

<figure><img src="/files/everJv8JVD0XChFwjYmJ" alt=""><figcaption></figcaption></figure>

#### User Variables

These variable values are scoped specifically to the user as the agent runs and are stored between runs for each specific user. User variables are defined using `user.myVariable` syntax.

***

## Creating Variables

Variables are created automatically in MindStudio whenever:

* A [**User Input**](#user-inputs) collects data.
* A block generates an output (e.g., [**Generate Text Block**](/building-ai-agents/blocks-reference/generate-text-block), [**Analyze Image Block**](/building-ai-agents/blocks-reference/analyze-image-block)).
* You manually define them in the [**Start Block**](/building-ai-agents/blocks-reference/start-block).

***

### Using Variables

To use a variable in any block or prompt, reference it by enclosing the variable name in double curly braces: `{{variable_name}}`.

**Example Using Variables in a Generate Text Block**:

```markdown
Summarize the article titled "{{articleTitle}}". 

In the summary, make sure to write about the following topic: 
{{topic}}
```

***

### Tips for Working with Large Variables

Variables are replaced with their values before the text is sent to the AI model. You must make sure your message will be coherent and legible after the variables have been substituted with their values. For longer variables, this means using things like XML tags to offset variable content from instructions.

**Incorrect:**

```
Summarize this article {{articleContent}} and find all mentions of {{personName}}.
```

This pattern does not work because `{{articleContent}}` will be replaced with the raw text or HTML of an article. If you execute this prompt and view its logs in the [Debugger](/test-and-evaluate/debugger), you will see that what is sent to the model is a giant sentence like "Summarize this article The history of lorem ipsum has long been thought to contain dolor sit amet \[...1000 more words from the article directly pasted in] and find all mentions of Taylor Swift".&#x20;

While AI models are great at parsing text, using simple formatting can make prompts dramatically more effective, as well as easier for you to maintain.

**Correct:**

```
<article_content>
{{articleContent}}
</article_content>

Using the provided article content, create a summary of the article as well as a list of all mentions of {{personName}}.
```

Offsetting with XML-style tags (it doesn't matter what the actual tags are, you can make up anything you like as long as it makes sense) helps the model understand which aspects of your prompt are instructions and which are context. [Anthropic](https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering/long-context-tips#example-quote-extraction) found that placing long variables at the top of the prompt using XML tags improved response quality by up to 30%.

To achieve best results, you should strive to make your prompt as easy to read for a human as possible. A handy test is to imagine that you were to print out your prompt on paper (after all variables have been substituted) and give it to someone. Would they be able to understand what you want them to do? Or would it look like gibberish?

MindStudio leverages the [**Handlebars templating language**](https://handlebarsjs.com/guide/expressions.html#basic-usage) to make working with variables intuitive and powerful. Handlebars allows you to include, manipulate, and conditionally render data directly in your prompts, outputs, and logic.

***

## Using Handlebars Templating

MindStudio leverages the [**Handlebars templating language**](https://handlebarsjs.com/guide/expressions.html#basic-usage) to make working with variables intuitive and powerful. Handlebars allows you to include, manipulate, and conditionally render data directly in your prompts, outputs, and logic.

### **Conditional Logic**

Handlebars supports `if-else` logic for dynamic outputs, as well as other control expressions. **For a full list of expressions, visit the** [**Handlebars Documentation**](https://handlebarsjs.com/guide/expressions.html#basic-usage) **site.**

```markdown
{{#if userName}}
Hello, {{userName}}! How can we assist you today?
{{else}}
Hello! Please log in to get started.
{{/if}}
```

***

#### <mark style="color:red;">`{{#if condition}}`</mark>

Converts a conditional block that renders content only when the condition is true.

Example:

If `isLoggedIn` is true

**Usage:**

```handlebars
{{#if isLoggedIn}}
  Welcome back!
{{/if}}
```

**Output:**

```handlebars
Welcome back!
```

***

#### <mark style="color:red;">`{{#unless condition}}`</mark>

Converts a conditional block that renders content only when the condition is false.

**Example:**

If `isLoggedIn` is false

**Usage:**

```handlebars
{{#unless isLoggedIn}}
  Please sign in.
{{/unless}}
```

**Output:**

```handlebars
Please sign in.
```

***

#### <mark style="color:red;">`{{#each array}}`</mark>

Iterates over an array or object and renders the block for every item.

**Example:**

If `items` contains:

```handlebars
["Apple", "Banana", "Cherry"]
```

**Usage:**

```handlebars
{{#each items}}
  {{this}}
{{/each}}
```

**Output:**

```handlebars
Apple
Banana
Cherry
```

***

#### <mark style="color:red;">`{{#with object}}`</mark>

Changes the evaluation context to the provided object for the enclosed block.

**Example:**

If `user` contains:

```handlebars
{ "name": "Alice", "age": 25 }
```

**Usage:**

```handlebars
{{#with user}}
  {{name}} is {{age}} years old.
{{/with}}
```

**Output:**

```handlebars
Alice is 25 years old.
```

***

### **Special Handlebars Methods in MindStudio**

In addition to standard Handlebars features, MindStudio introduces special methods for advanced functionality:

#### <mark style="color:red;">**`{{json varName}}`**</mark>

Converts a JSON object into a string format.

**Example**:

If `userProfile` contains:

```json
{
    "name": "John",
    "age": 30
}
```

**Usage:**

```
{{json userProfile}}
```

**Output:**

```json
{"name":"John","age":30}
```

***

#### <mark style="color:red;">**`{{sample varName number token}}`**</mark>

Extracts a portion of the variable's content based on specified parameters.

* **Parameters**:
  * **varName**: The variable to sample.
  * **number**: The number of items (e.g., lines, words, or letters). If negative, starts from the end.
  * **token**: The type of unit to extract (`line`, `word`, or `letter`).
* **Examples**:
  * Extract the first 5 words:

    ```handlebars
    {{sample textVar 5 "word"}}
    ```
  * Extract the last 3 lines:

    ```handlebars
    {{sample textVar -3 "line"}}
    ```
  * Extract the first 10 letters:

    ```handlebars
    {{sample textVar 10 "letter"}}
    ```

***

#### <mark style="color:red;">`{{lookup object key}}`</mark>

Dynamically looks up a property from an object using a key.

**Example:**

If `user` contains:

```handlebars
{ "name": "Alice", "role": "admin" }
```

Usage:

```handlebars
{{lookup user "role"}}
```

Output:

```handlebars
admin
```

***

#### <mark style="color:red;">`{{get varName "property"}}`</mark>

Retrieves a nested property using a JSONPath expression from a JSON object.

**Example:**

If **`userData`**&#x63;ontains:

```handlebars
{
  "name": "Alice",
  "contact": { "email": "alice@example.com" }
}
```

**Usage:**

```handlebars
{{get userData "$.contact.email"}}
```

**Output:**

```handlebars
alice@example.com
```

***

#### <mark style="color:red;">`{{add num increment}}`</mark>

Adds a numeric increment to a given number.

**Example:**

If `num` is:

```handlebars
5
```

**Usage:**

```handlebars
{{add 5 3}}
```

**Output:**

```handlebars
8
```

***

#### <mark style="color:red;">`{{subtract num decrement}}`</mark>

Subtracts a numeric value from a given number.

**Example**:

If `num` is:

```handlebars
10
```

**Usage:**

```handlebars
{{subtract 10 4}}
```

**Output:**

```handlebars
6
```

***

#### <mark style="color:red;">`{{multiply value multiplier}}`</mark>

Multiplies two numbers.

**Example:**

If `value` is:

```
2
```

**Usage:**

```
{{multiply 2 5}}
```

**Output:**

```
10
```

***

#### <mark style="color:red;">`{{divide dividend divisor}}`</mark>

Divides one number by another.

**Example:**

If `dividend` is:

```handlebars
10
```

**Usage:**

```handlebars
{{divide 10 2}}
```

**Output:**

```handlebars
5
```

***

#### <mark style="color:red;">`{{eq var1 var2}}`</mark>

Checks if two values are equal using the double-equals operator.

**Example:**

If `var1` contains:

```handlebars
5
```

and `var2` contains:

```handlebars
"5"
```

**Usage:**

```handlebars
{{eq 5 "5"}}
```

**Output:**

```handlebars
true
```

***

#### <mark style="color:red;">`{{gt value1 value2}}`</mark>

Checks if the first value is greater than the second value.

**Example:**

If `value1` is:

```handlebars
10
```

and `value2` is:

```handlebars
5
```

**Usage:**

```handlebars
{{gt 10 5}}
```

**Output:**

```handlebars
true
```

***

#### <mark style="color:red;">`{{gte value1 value2}}`</mark>

Checks if the first value is greater than or equal to the second value.

**Example:**

If `value1` is:

```handlebars
10
```

and **value2** is:

```handlebars
10
```

**Usage:**

```handlebars
{{gte 10 10}}
```

**Output:**

```handlebars
true
```

***

#### <mark style="color:red;">`{{lt value1 value2}}`</mark>

Checks if the first value is less than the second value.

**Example:**

If `value1` is:

```handlebars
5
```

and `value2` is:

```handlebars
10
```

**Usage:**

```handlebars
{{lt 5 10}}
```

**Output:**

```handlebars
true
```

***

#### <mark style="color:red;">`{{lte value1 value2}}`</mark>

Checks if the first value is less than or equal to the second value.

**Example:**

If `value1` is:

```handlebars
5
```

and `value2` is:

```handlebars
5
```

**Usage:**

```handlebars
{{lte 5 5}}
```

**Output:**

```handlebars
true
```

***

#### <mark style="color:red;">`{{isEmpty varName}}`</mark>

Evaluates whether a variable is empty (null, undefined, an empty string, an empty array, or an empty object).

**Example:**

If `data` contains:

```handlebars
""
```

Usage:

```handlebars
{{isEmpty data}}
```

Output:

```handlebars
true
```

***

#### <mark style="color:red;">`{{length varName}}`</mark>

Returns the length of an array or a string. Returns "NaN" if the variable is not an array or string.

**Example:**

If `list` contains:

```handlebars
["a", "b", "c"]
```

**Usage:**

```handlebars
{{length list}}
```

**Output:**

```handlebars
3
```

***

#### <mark style="color:red;">`{{itemAt varName index}}`</mark>

Return an item from an array.

**Example:**

If `list` contains:

```
["a", "b", "c"]
```

**Usage:**

```
{{itemAt list 1}}
```

**Output:**

```
b
```

*Note that the first item in an array is always index `0`.*

***

#### <mark style="color:red;">`{{firstItem varName}}`</mark>

Return the first item from an array.

**Example:**

If `list` contains:

```
["a", "b", "c"]
```

**Usage:**

```
{{firstItem list}}
```

**Output:**

```
a
```

***

#### <mark style="color:red;">`{{lastItem varName}}`</mark>

Return the last item from an array.

**Example:**

If `list` contains:

```
["a", "b", "c"]
```

**Usage:**

```
{{lastItem list}}
```

**Output:**

```
c
```

***

#### <mark style="color:red;">`{{markdown varName}}`</mark>

Converts a Markdown-formatted string into HTML.

**Example:**

If `markdownText` contains:

```markdown
# Hello World
This is **bold** text.
```

**Usage:**

```handlebars
{{markdown markdownText}}
```

**Output:**

```html
<h1>Hello World</h1>
<p>This is <strong>bold</strong> text.</p>
```

***

#### <mark style="color:red;">`{{formattedNumber number fractionDigits}}`</mark>

Formats a number using locale‑specific formatting with a fixed number of fractional digits.

**Example:**

If `amount` is:

```handlebars
1234.567
```

**Usage:**

```handlebars
{{formattedNumber 1234.567 2}}
```

**Output:**

```handlebars
1,234.57
```

***

#### <mark style="color:red;">`{{abbreviatedNumber number fractionDigits}}`</mark>

Formats a number into a compact, abbreviated notation (e.g., 1K, 1M) with a specified number of fractional digits.

**Example:**

If `amount` is:

```handlebars
1500
```

**Usage:**

```handlebars
{{abbreviatedNumber 1500 1}}
```

**Output:**

```handlebars
1.5k
```

***

#### <mark style="color:red;">`{{date varName format}}`</mark>

Formats a date string according to the specified format. Supports both custom formats (e.g., "YYYY-MM-DD") and relative keywords like "fromNow" or "toNow". Any [Moment.js-compatible](https://momentjs.com/docs/#/displaying/format/) date format can be used.

**Example:**

If `dateString` contains:

```handlebars
2020-01-01T00:00:00Z
```

**Usage:**

```handlebars
{{date dateString "YYYY-MM-DD"}}
```

**Output:**

```handlebars
2020-01-01
```

You can also format the current date by using `currentDate` as the variable:

**Usage:**

```handlebars
{{date currentDate "dddd, MMMM Do YYYY, h:mm:ss a"}}
```

**Output:**

<pre class="language-handlebars"><code class="lang-handlebars"><strong>Monday, June 9th 2025, 3:25:50 pm
</strong></code></pre>

***

#### <mark style="color:red;">`{{dateAdd date amount unit}}`</mark>

Add a specified amount of time to a given date. Date can be currentDate or a any [Moment.js-compatible](https://momentjs.com/docs/#/displaying/format/) date string. Amount must be a number. Unit must be a [Moment.js-compatible](https://momentjs.com/docs/#/manipulating/add/) unit.

**Example:**

**Usage:**

```handlebars
{{dateAdd currentDate 3 "days"}}
```

**Output:**

```handlebars
2025-07-12T17:01:00.000Z
```

You can use `dateAdd` as a nested expression inside a date formtter:

**Usage:**

```handlebars
{{date (dateAdd currentDate 3 "days") "dddd, MMMM Do YYYY, h:mm:ss a"}}
```

**Output:**

```handlebars
Saturday, July 12th 2025, 5:02:00 pm
```

***

#### <mark style="color:red;">`{{dateSubtract date amount unit}}`</mark>

Subtract a specified amount of time from a given date. Date can be currentDate or a any [Moment.js-compatible](https://momentjs.com/docs/#/displaying/format/) date string. Amount must be a number. Unit must be a [Moment.js-compatible](https://momentjs.com/docs/#/manipulating/add/) unit.

**Example:**

**Usage:**

```handlebars
{{dateSubtract currentDate 3 "days"}}
```

**Output:**

```handlebars
2025-07-06T17:01:00.000Z
```

You can use `dateSubtract` as a nested expression inside a date formtter:

**Usage:**

```handlebars
{{date (dateSubtract currentDate 3 "days") "dddd, MMMM Do YYYY, h:mm:ss a"}}
```

**Output:**

```handlebars
Saturday, July 6th 2025, 5:02:00 pm
```




---

[Next Page](/llms-full.txt/1)

