FlowApps are plugin-style integrations that extend your agents with external service capabilities. Unlike providers (LLM, TTS, STT) that handle core AI functions, FlowApps add custom actions and data sources to the conversation flow.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/abdofallah/IqraAI/llms.txt
Use this file to discover all available pages before exploring further.
What are FlowApps?
A FlowApp is a self-contained integration module that provides:- Actions - Operations the agent can execute (e.g., book a meeting, send an email)
- Data fetchers - Dynamic data sources for UI dropdowns (e.g., list of calendars)
- Integration credentials - Secure storage of API keys and configuration
Architecture
Core interface
Action interface
Data fetcher interface
Built-in FlowApps
Cal.com integration
App Key:cal_comImplementation:
CalComApp.cs
Integrate with Cal.com for meeting scheduling and calendar management.
Available actions
- Book meeting
- Get slots
- Cancel booking
- Reschedule booking
- Get all bookings
- Other actions
Action Key:
Output:Example use case:
book_meetingSchedule a new meeting on a Cal.com calendar.Input parameters:| Parameter | Type | Required | Description |
|---|---|---|---|
eventTypeId | number | Yes | Event type ID from Cal.com |
start | datetime | Yes | Meeting start time (ISO 8601) |
attendeeName | text | Yes | Attendee full name |
attendeeEmail | Yes | Attendee email address | |
attendeePhone | text | No | Attendee phone number |
notes | text | No | Meeting notes |
timezone | text | No | Timezone (default: UTC) |
Caller: “I’d like to schedule a consultation for next Tuesday at 2 PM.”
Agent: Executes book_meeting action with detected date/time
Agent: “Perfect! I’ve scheduled your consultation for Tuesday, March 15th at 2:00 PM. You’ll receive a confirmation email with the meeting link.”
Data fetchers
get_event_types - Fetches list of available event types
Used to populate dropdowns in the Script Builder when configuring booking actions.
Output:
Configuration
To use Cal.com integration:- Create Cal.com account at https://cal.com
- Generate API key in Settings → Developer → API Keys
- Add integration in Iqra AI Admin Dashboard:
- Integration Type:
cal_com - API Key: Your Cal.com API key
- Integration Type:
- Configure in agent - FlowApp becomes available in Script Builder
FlowApp discovery and registration
FlowApps are automatically discovered at runtime:- Assembly scanning -
FlowAppManageruses reflection to findIFlowAppimplementations - Dependency injection - Apps can request services (e.g.,
IHttpClientFactory) - Registration - Apps added to in-memory registry keyed by
AppKey - Permission loading - Database permissions merged with app definitions
FlowAppManager.cs:59-95 for implementation.
Using FlowApps in scripts
FlowApps appear as action nodes in the Script Builder:- Drag FlowApp action from sidebar into canvas
- Configure inputs using static values or variables
- Map credentials - System auto-injects integration credentials
- Handle output - Access returned data via output ports
Example: Booking flow
Variable mapping
FlowApp inputs can use conversation variables:Creating custom FlowApps
Step 1: Define the app class
Step 2: Implement actions
Step 3: Define integration in admin
Create integration definition inIqraInfrastructure/Managers/Integrations/IntegrationsManager.cs:
Step 4: Test and deploy
- Restart application - FlowApp auto-registers
- Add integration in Admin Dashboard
- Test in Script Builder - Drag action node and configure
- Verify execution - Test with real API calls
FlowApps support dependency injection. Request any registered service (e.g.,
ILogger, IHttpClientFactory, IMemoryCache) in the constructor.Permission management
FlowApps support granular permission control:App-level permissions
Disable entire app:Action-level permissions
Disable specific actions:FlowAppData collection) and merged with app definitions at runtime.
Security considerations
Credential handling
- Encryption - API keys encrypted with AES-256 before storage
- Scoped access - Credentials only accessible during action execution
- No logging - Credentials never logged or exposed in errors
Input validation
FlowApps should validate all inputs:Rate limiting
Implement rate limiting for external API calls:Best practices
Action design
- Atomic operations - Each action should do one thing well
- Clear naming - Use verb + noun (e.g.,
book_meeting, nothandle_calendar) - Descriptive errors - Return actionable error messages
- Idempotency - Support retries without side effects where possible
Data fetcher design
- Caching - Cache expensive fetcher results using
IMemoryCache - Pagination - Limit results to reasonable sizes (100-1000 items)
- Filtering - Support filtering via input parameters
Testing
- Unit tests - Test action logic in isolation
- Integration tests - Verify API integration with real credentials
- Error scenarios - Test network failures, API errors, invalid inputs
Roadmap
Planned FlowApp integrations:- Email - SendGrid, Mailgun, AWS SES
- CRM - Salesforce, HubSpot, Pipedrive
- Ticketing - Zendesk, Freshdesk, Intercom
- Payments - Stripe, Square, PayPal
- SMS - Twilio, Vonage, Telnyx
- Databases - PostgreSQL, MySQL, Airtable
Next steps
Build conversation flows
Use FlowApps in the Script Builder
Integration management
Configure integration credentials
Custom actions
Build your own FlowApp integrations
Script variables
Map conversation data to action inputs