Skip to main content

Agent Profiles

What agent profiles are

An agent profile is a specialist persona with:

  • A dedicated system prompt defining its expertise and approach
  • A tool whitelist — only the tools this agent is allowed to use
  • Auto-routing keywords — phrases that automatically route messages to this agent
  • An agent type — research, execution, delivery, or synthesis
  • An optional memory namespace — isolated memory so this agent's context doesn't bleed into others

When you route a goal to @fin-analyst, the Financial Analyst profile's system prompt, tool whitelist, and memory context are loaded instead of the default agent.


Built-in profiles

Go to Settings → Agent Profiles to see and edit all profiles.

Research cluster

ProfileSlugKeywordsBest for
Web Researcher@researcher"research", "find", "search", "look up"Multi-source web research with citation
Fact Checker@fact-checker"verify", "check", "confirm", "is it true"Cross-referencing claims against sources
Trend Spotter@trend-spotter"trending", "latest", "news", "what's hot"News monitoring, trend analysis

Development cluster

ProfileSlugKeywordsBest for
Python Developer@python-dev"python", "script", "automate", "pandas"Python code generation and execution
Node.js Developer@node-dev"node", "javascript", "typescript", "npm"Node.js/TypeScript development
Debugger@debugger"debug", "error", "fix", "broken", "why is"Root cause analysis and code fixes
Shell Operator@shell-op"shell", "bash", "command", "terminal"System administration and shell scripts

Data cluster

ProfileSlugKeywordsBest for
Financial Analyst@fin-analyst"stock", "market", "revenue", "valuation", "NIFTY"Market data, financial modeling, portfolio
Data Analyst@data-analyst"data", "csv", "analyze", "statistics", "chart"Data wrangling, statistical analysis, charts
Excel Builder@excel-builder"excel", "spreadsheet", "table", "formula"Complex Excel files with formulas and formatting

Content cluster

ProfileSlugKeywordsBest for
Report Generator@report-gen"report", "document", "write up", "summary"Structured document generation
Summarizer@summarizer"summarize", "tldr", "brief", "condense"Text condensation and executive summaries
Tech Writer@tech-writer"documentation", "readme", "guide", "explain"Technical documentation
Prompt Architect@prompt-arch"prompt", "system prompt", "llm", "few-shot"LLM prompt engineering
Task Planner@task-planner"plan", "breakdown", "roadmap", "steps"Goal decomposition and project planning

Delivery cluster

ProfileSlugKeywordsBest for
Publisher@publisher"publish", "broadcast", "tweet", "post to slack", "post to twitter", "email the team"Multi-channel delivery (Slack / Twitter / Gmail / Telegram / Discord / WhatsApp) with audit receipts. Reads pre-approved content from a file, picks the right channel tool, writes a receipt JSON. Always preferred over single-channel reporters for new workflows.
Telegram Reporter@tg-reporter"telegram", "notify", "send to phone", "alert me"Legacy single-channel — Telegram only. Use @publisher for new templates.

Using profiles

Explicit routing — prefix your message with @profile-slug:

@fin-analyst What is the current P/E ratio for RELIANCE.NS?
@python-dev Write a web scraper for LinkedIn job listings
@excel-builder Create a monthly budget tracker with conditional formatting

Auto-routing — type naturally and the ModelRouter matches keywords:

"trending AI startups this week" → auto-routes to @trend-spotter
"debug this Python error: ..." → auto-routes to @debugger
"summarize this article" → auto-routes to @summarizer

Auto-routing uses both keyword matching and embedding similarity. You can see which profile was selected in the Inspector → PERSONA section.


Creating a custom profile

Go to Settings → Agent Profiles → + New Profile:

  1. 1
    Basic info
    Name: Legal Analyst
    Slug: legal-analyst
    Type: research (research / execution / delivery / synthesis)
  2. 2
    System prompt

    Write the persona for this agent. This is injected at the start of every conversation routed to this profile:

    You are a senior legal analyst specializing in Indian corporate law and
    contract review. You identify risks, flag ambiguous clauses, and suggest
    protective language. You cite relevant sections of Indian law where applicable.
    You are precise, cautious, and always recommend professional legal review
    for binding decisions.

    Or click Generate from description to have AI Partner write the system prompt for you based on a short description.

  3. 3
    Tool whitelist

    Select which tools this agent can use. For a Legal Analyst:

    • ✅ web_search (for case law research)
    • ✅ web_fetch (for reading legal documents)
    • ✅ knowledge_search (for uploaded contracts)
    • ✅ generate_word (for drafting)
    • ❌ execute_python (not needed)
    • ❌ stripe_* (not appropriate)

    Unchecked tools are completely unavailable to this profile, even if they're enabled globally.

  4. 4
    Keywords

    Add phrases that automatically trigger this profile:

    contract, legal, clause, compliance, liability, GDPR, NDA, agreement,
    terms of service, indemnity
  5. 5
    Memory namespace (optional)

    Enable isolated memory so this agent's context is separate from your main agent. Useful when you want the Legal Analyst to have a separate knowledge base from the Financial Analyst.


Tool whitelists in practice

Tool whitelists are enforced at the MCP dispatcher level — not just in the prompt. Even if you ask @excel-builder to "send a Slack message", it cannot, because slack_send is not in the Excel Builder's whitelist.

This is intentional: it prevents accidentally running the wrong tool with the wrong context, and limits the blast radius of any individual profile.


Per-profile memory

When a profile has memory namespace isolation enabled, it maintains separate:

  • Episodic memory entries
  • Biographic facts
  • Vector embeddings

This means your Financial Analyst's "Bob is our CFO" fact doesn't appear in the Legal Analyst's context, keeping each profile's knowledge domain clean.

Access a profile's memory directly:

GET /api/agent-profiles/:slug/memory

Editing built-in profiles

All built-in profiles are editable. Changes take effect immediately — no restart needed. If you break a profile, click Reset to Default to restore the original system prompt and tool whitelist.

Built-in profiles ship with the app. Your customizations are saved to your account and persist across restarts. The built-in defaults are only applied on first run or when you reset a profile.


Domain profiles (Phase 4)

Beyond the general specialists, AI Partner ships with domain-specific orchestrators + their sub-agents. The orchestrator is the entry point — it decomposes the goal and delegates to its specialists. You only need to know the orchestrators; the specialists run as sub-agents under the hood (same pattern existing @fin-analyst → @data-analyst → @excel-builder uses).

Cybersecurity cluster (Tier 1)

For authorized vulnerability assessments and pentest engagements. cybersec-pm writes a scope_authorization.txt first and refuses to delegate to the scanner without it.

ProfileRoleOwned classes
@cybersec-pmOrchestrator — write authorization, delegate the full chainsecurity_assessment, pentest_engagement
@cybersec-reconPassive OSINT — subfinder, amass, httpx, dnsx, theHarvester(sub-agent)
@cybersec-scannerActive scans — nmap, nuclei, nikto, sslyze, sqlmap (test mode); refuses without scope_authorization.txt(sub-agent)
@cybersec-analystTriage findings, CVSS scoring, remediation guidance(sub-agent)
@cybersec-reporterFinal pentest PDF + 1-page executive summary(sub-agent)

Trigger examples: @partner pentest staging.example.com — I own this domain and authorize testing · audit my staging cluster for vulnerabilities, authorized · do a VAPT on app.example.com

Agile / feature-delivery cluster (Tier 1)

For shipping features through to a merged-ready PR. The receipt is the PR URL — verified via gh_pr_exists. Reuses existing python-dev / node-dev / qa-tester / tech-writer profiles for implementation work.

ProfileRoleOwned classes
@agile-pmOrchestrator — read repo, decompose into design → impl → tests → docs → PRfeature_implementation, deployment
@agile-architectWrites the ADR (Architecture Decision Record) before code(sub-agent)
@agile-devopsRuns tests + linters, commits + pushes, opens PR via gh pr create(sub-agent)

Trigger examples: @partner implement password reset for the dashboard repo, open a PR · add JWT refresh tokens to the auth module · fix the bug where login fails on Safari

Submission specialist (Tier 1)

For web-form submissions: directories, signups, applications, listings. Captures confirmation_screenshot.png as the contract receipt, with screenshot_contains vision-grounded verification.

ProfileRoleOwned classes
@submission-specialistNavigate → fill → submit → capture confirmation screenshotsubmission

Trigger examples: submit AI Partner to https://theresanaiforthat.com · add my tool to these 5 AI directories · fill out the application at https://...

Inbox handler (Tier 2)

For email triage and threaded replies in the user's voice. The receipt is the Gmail message_id from a successful send, verified via email_sent.

ProfileRoleOwned classes
@inbox-handlerSearch inbox → read thread → draft + (optionally approve) → send with correct threadingemail_sent

Trigger examples: @partner reply to all client emails from this week, keep my voice · draft an email to sarah@example.com about pushing the deadline a week

Meeting coordinator (Tier 2)

For booking meetings, finding mutual slots, sending invites. The receipt is the calendar event ID, verified via api_returns against the calendar API.

ProfileRoleOwned classes
@meeting-coordinatorFind slots → create event → send invite → return confirmationbooking, meeting_attended

Trigger examples: @partner book a 30-min slot with Sarah next Tuesday morning · schedule a call with the design team for Thursday

Ops runner (Tier 2)

For deeper deployment work — Kubernetes, Helm, Terraform, cloud infra. The receipt is deploy/receipt.json + a successful smoke test (url_responds); rollback on failure.

ProfileRoleOwned classes
@ops-runnerPreflight (terraform plan / helm diff) → apply → smoke test → save receiptdeployment

Trigger examples: @partner deploy the staging branch to prod · rollback the last helm release · apply the terraform plan I just generated

How any profile gets picked (4-layer routing)

Same routing applies to every profile — domain or generic — in this priority order:

  1. Explicit @-mention@cybersec-pm assess example.com (highest priority, always wins)
  2. goal_class matchGoalClassifier (Phase 2) decides class; profiles whose goal_classes includes that class become candidates
  3. autoSelectKeywords match — keyword scan over the request text (the legacy path)
  4. Default fallback — generic profile (coder / general) when nothing matches

Open any profile in the Agent Profiles panel to view and customize its prompt and tool access.