clarify

Ask the user a question when you need clarification, feedback, or a decision before proceeding. Supports two modes:

1. **Multiple choice** — provide up to 4 choices. The user picks one or types their own answer via a 5th 'Other' option.
2. **Open-ended** — omit choices entirely. The user types a free-form response.

Use this tool when:
- The task is ambiguous and you need the user to choose an approach
- You want post-task feedback ('How did that work out?')
- You want to offer to save a skill or update memory
- A decision has meaningful trade-offs the user should weigh in on

Do NOT use this tool for simple yes/no confirmation of dangerous commands (the terminal tool handles that). Prefer making a reasonable default choice yourself when the decision is low-stakes.

The question to present to the user.

Choices:
Up to 4 answer choices. Omit this parameter entirely to ask an open-ended question. When provided, the UI automatically appends an 'Other (type your answer)' option.

cronjob

Manage scheduled cron jobs with a single compressed tool.

Use action='create' to schedule a new job from a prompt or one or more skills.
Use action='list' to inspect jobs.
Use action='update', 'pause', 'resume', 'remove', or 'run' to manage an existing job.

To stop a job the user no longer wants: first action='list' to find the job_id, then action='remove' with that job_id. Never guess job IDs — always list first.

Jobs run in a fresh session with no current-chat context, so prompts must be self-contained.
If skills are provided on create, the future cron run loads those skills in order, then follows the prompt as the task instruction.
On update, passing skills=[] clears attached skills.

NOTE: The agent's final response is auto-delivered to the target. Put the primary
user-facing content in the final response. Cron jobs run autonomously with no user
present — they cannot ask questions or request clarification.

Important safety rule: cron-run sessions should not recursively schedule more cron jobs.

One of: create, list, update, pause, resume, remove, run

Required for update/pause/resume/remove/run

For create: the full self-contained prompt. If skills are also provided, this becomes the task instruction paired with those skills.

For create/update: '30m', 'every 2h', '0 9 * * *', or ISO timestamp

Optional human-friendly name

Optional repeat count. Omit for defaults (once for one-shot, forever for recurring).

Omit this parameter to auto-deliver back to the current chat and topic (recommended). Auto-detection preserves thread/topic context. Only set explicitly when the user asks to deliver somewhere OTHER than the current conversation. Values: 'origin' (same as omitting), 'local' (no delivery, save only), or platform:chat_id:thread_id for a specific destination. Examples: 'telegram:-1001234567890:17585', 'discord:#engineering', 'sms:+15551234567'. WARNING: 'platform:chat_id' without :thread_id loses topic targeting.

Optional ordered list of skill names to load before executing the cron prompt. On update, pass an empty array to clear attached skills.

Optional per-job model override. If provider is omitted, the current main provider is pinned at creation time so the job stays stable.

Provider name (e.g. 'openrouter', 'anthropic', or 'custom:<name>' for a provider defined in custom_providers config — always include the ':<name>' suffix, never pass the bare 'custom'). Omit to use and pin the current provider.

Model name (e.g. 'anthropic/claude-sonnet-4', 'claude-sonnet-4')

Optional path to a script that runs each tick. In the default mode its stdout is injected into the agent's prompt as context (data-collection / change-detection pattern). With no_agent=True, the script IS the job and its stdout is delivered verbatim (classic watchdog pattern). Relative paths resolve under ~/.hermes/scripts/. ``.sh``/``.bash`` extensions run via bash, everything else via Python. On update, pass empty string to clear.

Default: False (LLM-driven job — the agent runs the prompt each tick). Set True to skip the LLM entirely: the scheduler just runs ``script`` on schedule and delivers its stdout verbatim. No tokens, no agent loop, no model override honoured.

REQUIREMENTS when True: ``script`` MUST be set (``prompt`` and ``skills`` are ignored).

DELIVERY SEMANTICS when True: (a) non-empty stdout is sent verbatim as the message; (b) EMPTY stdout means SILENT — nothing is sent to the user and they won't see anything happened, so design your script to stay quiet when there's nothing to report (the watchdog pattern); (c) non-zero exit / timeout sends an error alert so a broken watchdog can't fail silently.

WHEN TO USE True: recurring script-only pings where the script itself produces the exact message text (memory/disk/GPU watchdogs, threshold alerts, heartbeats, CI notifications, API pollers with a fixed output shape). WHEN TO USE False (default): anything that needs reasoning — summarize a feed, draft a daily briefing, pick interesting items, rephrase data for a human, follow conditional logic based on content.

Optional job ID or list of job IDs whose most recent completed output is injected into the prompt as context before each run. Use this to chain cron jobs: job A collects data, job B processes it. Each entry must be a valid job ID (from cronjob action='list'). Note: injects the most recent completed output — does not wait for upstream jobs running in the same tick. On update, pass an empty array to clear.

Optional list of toolset names to restrict the job's agent to (e.g. ["web", "terminal", "file", "delegation"]). When set, only tools from these toolsets are loaded, significantly reducing input token overhead. When omitted, all default tools are loaded. Infer from the job's prompt — e.g. use "web" if it calls web_search, "terminal" if it runs scripts, "file" if it reads files, "delegation" if it calls delegate_task. On update, pass an empty array to clear.

Optional absolute path to run the job from. When set, AGENTS.md / CLAUDE.md / .cursorrules from that directory are injected into the system prompt, and the terminal/file/code_exec tools use it as their working directory — useful for running a job inside a specific project repo. Must be an absolute path that exists. When unset (default), preserves the original behaviour: no project context files, tools use the scheduler's cwd. On update, pass an empty string to clear. Jobs with workdir run sequentially (not parallel) to keep per-job directories isolated.

Spawn one or more subagents to work on tasks in isolated contexts. Each subagent gets its own conversation, terminal session, and toolset. Only the final summary is returned -- intermediate tool results never enter your context window.

TWO MODES (one of 'goal' or 'tasks' is required):
1. Single task: provide 'goal' (+ optional context, toolsets)
2. Batch (parallel): provide 'tasks' array with up to delegation.max_concurrent_children items (default 3, configurable via config.yaml, no hard ceiling). All run concurrently and results are returned together. Nested delegation requires role='orchestrator' and delegation.max_spawn_depth >= 2.

WHEN TO USE delegate_task:
- Reasoning-heavy subtasks (debugging, code review, research synthesis)
- Tasks that would flood your context with intermediate data
- Parallel independent workstreams (research A and B simultaneously)

WHEN NOT TO USE (use these instead):
- Mechanical multi-step work with no reasoning needed -> use execute_code
- Single tool call -> just call the tool directly
- Tasks needing user interaction -> subagents cannot use clarify
- Durable long-running work that must outlive the current turn -> use cronjob (action='create') or terminal(background=True, notify_on_complete=True) instead. delegate_task runs SYNCHRONOUSLY inside the parent turn: if the parent is interrupted (user sends a new message, /stop, /new) the child is cancelled with status='interrupted' and its work is discarded. Children cannot continue in the background.

IMPORTANT:
- Subagents have NO memory of your conversation. Pass all relevant info (file paths, error messages, constraints) via the 'context' field.
- If the user is writing in a non-English language, or asked for output in a specific language / tone / style, say so in 'context' (e.g. "respond in Chinese", "return output in Japanese"). Otherwise subagents default to English and their summaries will contaminate your final reply with the wrong language.
- Subagent summaries are SELF-REPORTS, not verified facts. A subagent that claims "uploaded successfully" or "file written" may be wrong. For operations with external side-effects (HTTP POST/PUT, remote writes, file creation at shared paths, publishing), require the subagent to return a verifiable handle (URL, ID, absolute path, HTTP status) and verify it yourself — fetch the URL, stat the file, read back the content — before telling the user the operation succeeded.
- Leaf subagents (role='leaf', the default) CANNOT call: delegate_task, clarify, memory, send_message, execute_code.
- Orchestrator subagents (role='orchestrator') retain delegate_task so they can spawn their own workers, but still cannot use clarify, memory, send_message, or execute_code. Orchestrators are bounded by delegation.max_spawn_depth (default 2) and can be disabled globally via delegation.orchestrator_enabled=false.
- Each subagent gets its own terminal session (separate working directory and state).
- Results are always returned as an array, one entry per task.

What the subagent should accomplish. Be specific and self-contained -- the subagent knows nothing about your conversation history.

Background information the subagent needs: file paths, error messages, project structure, constraints. The more specific you are, the better the subagent performs.

Toolsets to enable for this subagent. Default: inherits your enabled toolsets. Available toolsets: 'browser', 'cronjob', 'discord', 'discord_admin', 'feishu_doc', 'feishu_drive', 'file', 'homeassistant', 'image_gen', 'kanban', 'search', 'session_search', 'skills', 'spotify', 'terminal', 'todo', 'tts', 'video', 'vision', 'web', 'yuanbao'. Common patterns: ['terminal', 'file'] for code work, ['web'] for research, ['browser'] for web interaction, ['terminal', 'file', 'web'] for full-stack tasks.

Task goal

Task-specific context

Toolsets for this specific task. Available: 'browser', 'cronjob', 'discord', 'discord_admin', 'feishu_doc', 'feishu_drive', 'file', 'homeassistant', 'image_gen', 'kanban', 'search', 'session_search', 'skills', 'spotify', 'terminal', 'todo', 'tts', 'video', 'vision', 'web', 'yuanbao'. Use 'web' for network access, 'terminal' for shell, 'browser' for web interaction.

Per-task ACP command override (e.g. 'claude'). Overrides the top-level acp_command for this task only.

Per-task ACP args override.

Per-task role override. See top-level 'role' for semantics.

Batch mode: tasks to run in parallel (limit configurable via delegation.max_concurrent_children, default 3). Each gets its own subagent with isolated context and terminal session. When provided, top-level goal/context/toolsets are ignored.

Role of the child agent. 'leaf' (default) = focused worker, cannot delegate further. 'orchestrator' = can use delegate_task to spawn its own workers. Requires delegation.max_spawn_depth >= 2 in config; ignored (treated as 'leaf') when the child would exceed max_spawn_depth or when delegation.orchestrator_enabled=false.

Override ACP command for child agents (e.g. 'claude', 'copilot'). When set, children use ACP subprocess transport instead of inheriting the parent's transport. Enables spawning Claude Code (claude --acp --stdio) or other ACP-capable agents from any parent, including Discord/Telegram/CLI.

Arguments for the ACP command (default: ['--acp', '--stdio']). Only used when acp_command is set. Example: ['--acp', '--stdio', '--model', 'claude-opus-4-6']

Run a Python script that can call Hermes tools programmatically. Use this when you need 3+ tool calls with processing logic between them, need to filter/reduce large tool outputs before they enter your context, need conditional branching (if X then Y else Z), or need to loop (fetch N pages, process N files, retry on failure).

Use normal tool calls instead when: single tool call with no processing, you need to see the full result and apply complex reasoning, or the task requires interactive user input.

Available via `from hermes_tools import ...`:

  read_file(path: str, offset: int = 1, limit: int = 500) -> dict
    Lines are 1-indexed. Returns {"content": "...", "total_lines": N}
  write_file(path: str, content: str) -> dict
    Always overwrites the entire file.
  search_files(pattern: str, target="content", path=".", file_glob=None, limit=50) -> dict
    target: "content" (search inside files) or "files" (find files by name). Returns {"matches": [...]}
  patch(path: str, old_string: str, new_string: str, replace_all: bool = False) -> dict
    Replaces old_string with new_string in the file.
  terminal(command: str, timeout=None, workdir=None) -> dict
    Foreground only (no background/pty). Returns {"output": "...", "exit_code": N}

Limits: 5-minute timeout, 50KB stdout cap, max 50 tool calls per script. terminal() is foreground-only (no background or pty).

Scripts run in the session's working directory with the active venv's python, so project deps (pandas, etc.) and relative paths work like in terminal().

Print your final result to stdout. Use Python stdlib (json, re, math, csv, datetime, collections, etc.) for processing between tool calls.

Also available (no import needed — built into hermes_tools):
  json_parse(text: str) — json.loads with strict=False; use for terminal() output with control chars
  shell_quote(s: str) — shlex.quote(); use when interpolating dynamic strings into shell commands
  retry(fn, max_attempts=3, delay=2) — retry with exponential backoff for transient failures

Python code to execute. Import tools with `from hermes_tools import terminal, ...` and print your final result to stdout.

memory

Save durable information to persistent memory that survives across sessions. Memory is injected into future turns, so keep it compact and focused on facts that will still matter later.

WHEN TO SAVE (do this proactively, don't wait to be asked):
- User corrects you or says 'remember this' / 'don't do that again'
- User shares a preference, habit, or personal detail (name, role, timezone, coding style)
- You discover something about the environment (OS, installed tools, project structure)
- You learn a convention, API quirk, or workflow specific to this user's setup
- You identify a stable fact that will be useful again in future sessions

PRIORITY: User preferences and corrections > environment facts > procedural knowledge. The most valuable memory prevents the user from having to repeat themselves.

Do NOT save task progress, session outcomes, completed-work logs, or temporary TODO state to memory; use session_search to recall those from past transcripts.
If you've discovered a new way to do something, solved a problem that could be necessary later, save it as a skill with the skill tool.

TWO TARGETS:
- 'user': who the user is -- name, role, preferences, communication style, pet peeves
- 'memory': your notes -- environment facts, project conventions, tool quirks, lessons learned

ACTIONS: add (new entry), replace (update existing -- old_text identifies it), remove (delete -- old_text identifies it).

SKIP: trivial/obvious info, things easily re-discovered, raw data dumps, and temporary task state.

The action to perform.

Which memory store: 'memory' for personal notes, 'user' for user profile.

The entry content. Required for 'add' and 'replace'.

Short unique substring identifying the entry to replace or remove.

patch

Targeted find-and-replace edits in files. Use this instead of sed/awk in terminal. Uses fuzzy matching (9 strategies) so minor whitespace/indentation differences won't break it. Returns a unified diff. Auto-runs syntax checks after editing.

Replace mode (default): find a unique string and replace it.
Patch mode: apply V4A multi-file patches for bulk changes.

Edit mode: 'replace' for targeted find-and-replace, 'patch' for V4A multi-file patches

File path to edit (required for 'replace' mode)

Text to find in the file (required for 'replace' mode). Must be unique in the file unless replace_all=true. Include enough surrounding context to ensure uniqueness.

Replacement text (required for 'replace' mode). Can be empty string to delete the matched text.

Replace all occurrences instead of requiring a unique match (default: false)

V4A format patch content (required for 'patch' mode). Format:
*** Begin Patch
*** Update File: path/to/file
@@ context hint @@
 context line
-removed line
+added line
*** End Patch

process

Manage background processes started with terminal(background=true). Actions: 'list' (show all), 'poll' (check status + new output), 'log' (full output with pagination), 'wait' (block until done or timeout), 'kill' (terminate), 'write' (send raw stdin data without newline), 'submit' (send data + Enter, for answering prompts), 'close' (close stdin/send EOF).

list poll log wait kill write submit close

Action to perform on background processes

Process session ID (from terminal background output). Required for all actions except 'list'.

Text to send to process stdin (for 'write' and 'submit' actions)

Max seconds to block for 'wait' action. Returns partial output on timeout.

Line offset for 'log' action (default: last 200 lines)

Max lines to return for 'log' action

Read a text file with line numbers and pagination. Use this instead of cat/head/tail in terminal. Output format: 'LINE_NUM|CONTENT'. Suggests similar filenames if not found. Use offset and limit for large files. Reads exceeding ~100K characters are rejected; use offset and limit to read specific sections of large files. NOTE: Cannot read images or binary files — use vision_analyze for images.

Path to the file to read (absolute, relative, or ~/path)

Line number to start reading from (1-indexed, default: 1)

Maximum number of lines to read (default: 500, max: 2000)

Search file contents or find files by name. Use this instead of grep/rg/find/ls in terminal. Ripgrep-backed, faster than shell equivalents.

Content search (target='content'): Regex search inside files. Output modes: full matches with line numbers, file paths only, or match counts.

File search (target='files'): Find files by glob pattern (e.g., '*.py', '*config*'). Also use this instead of ls — results sorted by modification time.

Regex pattern for content search, or glob pattern (e.g., '*.py') for file search

'content' searches inside file contents, 'files' searches for files by name

Directory or file to search in (default: current working directory)

Filter files by pattern in grep mode (e.g., '*.py' to only search Python files)

Maximum number of results to return (default: 50)

Skip first N results for pagination (default: 0)

Output format for grep mode: 'content' shows matching lines with line numbers, 'files_only' lists file paths, 'count' shows match counts per file

Number of context lines before and after each match (grep mode only)

Send a message to a connected messaging platform, or list available targets.

IMPORTANT: When the user asks to send to a specific channel or person (not just a bare platform name), call send_message(action='list') FIRST to see available targets, then send to the correct one.
If the user just says a platform name like 'send to telegram', send directly to the home channel without listing first.

Action to perform. 'send' (default) sends a message. 'list' returns all available channels/contacts across connected platforms.

Delivery target. Format: 'platform' (uses home channel), 'platform:#channel-name', 'platform:chat_id', or 'platform:chat_id:thread_id' for Telegram topics and Discord threads. Examples: 'telegram', 'telegram:-1001234567890:17585', 'discord:999888777:555444333', 'discord:#bot-home', 'slack:#engineering', 'signal:+155****4567', 'matrix:!roomid:server.org', 'matrix:@user:server.org', 'yuanbao:direct:<account_id>' (DM), 'yuanbao:group:<group_code>' (group chat)

The message text to send. To send an image or file, include MEDIA:<local_path> (e.g. 'MEDIA:/tmp/hermes/cache/img_xxx.jpg') in the message — the platform will deliver it as a native media attachment.

Search your long-term memory of past conversations, or browse recent sessions. This is your recall -- every past session is searchable, and this tool summarizes what happened.

TWO MODES:
1. Recent sessions (no query): Call with no arguments to see what was worked on recently. Returns titles, previews, and timestamps. Zero LLM cost, instant. Start here when the user asks what were we working on or what did we do recently.
2. Keyword search (with query): Search for specific topics across all past sessions. Returns LLM-generated summaries of matching sessions.

USE THIS PROACTIVELY when:
- The user says 'we did this before', 'remember when', 'last time', 'as I mentioned'
- The user asks about a topic you worked on before but don't have in current context
- The user references a project, person, or concept that seems familiar but isn't in memory
- You want to check if you've solved a similar problem before
- The user asks 'what did we do about X?' or 'how did we fix Y?'

Don't hesitate to search when it is actually cross-session -- it's fast and cheap. Better to search and confirm than to guess or ask the user to repeat themselves.

Search syntax: keywords joined with OR for broad recall (elevenlabs OR baseten OR funding), phrases for exact match ("docker networking"), boolean (python NOT java), prefix (deploy*). IMPORTANT: Use OR between keywords for best results — FTS5 defaults to AND which misses sessions that only mention some terms. If a broad OR query returns nothing, try individual keyword searches in parallel. Returns summaries of the top matching sessions.

Search query — keywords, phrases, or boolean expressions to find in past sessions. Omit this parameter entirely to browse recent sessions instead (returns titles, previews, timestamps with no LLM cost).

Optional: only search messages from specific roles (comma-separated). E.g. 'user,assistant' to skip tool outputs.

Max sessions to summarize (default: 3, max: 5).

Manage skills (create, update, delete). Skills are your procedural memory — reusable approaches for recurring task types. New skills go to ~/.hermes/skills/; existing skills can be modified wherever they live.

Actions: create (full SKILL.md + optional category), patch (old_string/new_string — preferred for fixes), edit (full SKILL.md rewrite — major overhauls only), delete, write_file, remove_file.

On delete, pass `absorbed_into=<umbrella>` when you're merging this skill's content into another one, or `absorbed_into=""` when you're pruning it with no forwarding target. This lets the curator tell consolidation from pruning without guessing, so downstream consumers (cron jobs that reference the old skill name, etc.) get updated correctly. The target you name in `absorbed_into` must already exist — create/patch the umbrella first, then delete.

Create when: complex task succeeded (5+ calls), errors overcome, user-corrected approach worked, non-trivial workflow discovered, or user asks you to remember a procedure.
Update when: instructions stale/wrong, OS-specific failures, missing steps or pitfalls found during use. If you used a skill and hit issues not covered by it, patch it immediately.

After difficult/iterative tasks, offer to save as a skill. Skip for simple one-offs. Confirm with user before creating/deleting.

Good skills: trigger conditions, numbered steps with exact commands, pitfalls section, verification steps. Use skill_view() to see format examples.

Pinned skills are protected from deletion only — skill_manage(action='delete') will refuse with a message pointing the user to `hermes curator unpin <name>`. Patches and edits go through on pinned skills so you can still improve them as pitfalls come up; pin only guards against irrecoverable loss.

create patch edit delete write_file remove_file

The action to perform.

Skill name (lowercase, hyphens/underscores, max 64 chars). Must match an existing skill for patch/edit/delete/write_file/remove_file.

Full SKILL.md content (YAML frontmatter + markdown body). Required for 'create' and 'edit'. For 'edit', read the skill first with skill_view() and provide the complete updated text.

Text to find in the file (required for 'patch'). Must be unique unless replace_all=true. Include enough surrounding context to ensure uniqueness.

Replacement text (required for 'patch'). Can be empty string to delete the matched text.

For 'patch': replace all occurrences instead of requiring a unique match (default: false).

Optional category/domain for organizing the skill (e.g., 'devops', 'data-science', 'mlops'). Creates a subdirectory grouping. Only used with 'create'.

Path to a supporting file within the skill directory. For 'write_file'/'remove_file': required, must be under references/, templates/, scripts/, or assets/. For 'patch': optional, defaults to SKILL.md if omitted.

Content for the file. Required for 'write_file'.

For 'delete' only — declares intent so the curator can tell consolidation from pruning without guessing. Pass the umbrella skill name when this skill's content was merged into another (the target must already exist). Pass an empty string when the skill is truly stale and being pruned with no forwarding target. Omitting the arg on delete is supported for backward compatibility but downstream tooling (e.g. cron-job skill reference rewriting) will have to guess at intent.

Skills allow for loading information about specific tasks and workflows, as well as scripts and templates. Load a skill's full content or access its linked files (references, templates, scripts). First call returns SKILL.md content plus a 'linked_files' dict showing available references/templates/scripts. To access those, call again with file_path parameter.

The skill name (use skills_list to see available skills). For plugin-provided skills, use the qualified form 'plugin:skill' (e.g. 'superpowers:writing-plans').

OPTIONAL: Path to a linked file within the skill (e.g., 'references/api.md', 'templates/config.yaml', 'scripts/validate.py'). Omit to get the main SKILL.md content.

List available skills (name + description). Use skill_view(name) to load full content.

Optional category filter to narrow results

terminal

Execute shell commands on a Linux environment. Filesystem usually persists between calls.

Do NOT use cat/head/tail to read files — use read_file instead.
Do NOT use grep/rg/find to search — use search_files instead.
Do NOT use ls to list directories — use search_files(target='files') instead.
Do NOT use sed/awk to edit files — use patch instead.
Do NOT use echo/cat heredoc to create files — use write_file instead.
Reserve terminal for: builds, installs, git, processes, scripts, network, package managers, and anything that needs a shell.

Foreground (default): Commands return INSTANTLY when done, even if the timeout is high. Set timeout=300 for long builds/scripts — you'll still get the result in seconds if it's fast. Prefer foreground for short commands.
Background: Set background=true to get a session_id. Two patterns:
  (1) Long-lived processes that never exit (servers, watchers).
  (2) Long-running tasks with notify_on_complete=true — you can keep working on other things and the system auto-notifies you when the task finishes. Great for test suites, builds, deployments, or anything that takes more than a minute.
For servers/watchers, do NOT use shell-level background wrappers (nohup/disown/setsid/trailing '&') in foreground mode. Use background=true so Hermes can track lifecycle and output.
After starting a server, verify readiness with a health check or log signal, then run tests in a separate terminal() call. Avoid blind sleep loops.
Use process(action="poll") for progress checks, process(action="wait") to block until done.
Working directory: Use 'workdir' for per-command cwd.
PTY mode: Set pty=true for interactive CLI tools (Codex, Claude Code, Python REPL).

Do NOT use vim/nano/interactive tools without pty=true — they hang without a pseudo-terminal. Pipe git output to cat if it might page.

The command to execute on the VM

Run the command in the background. Two patterns: (1) Long-lived processes that never exit (servers, watchers). (2) Long-running tasks paired with notify_on_complete=true — you can keep working and get notified when the task finishes. For short commands, prefer foreground with a generous timeout instead.

Max seconds to wait (default: 180, foreground max: 600). Returns INSTANTLY when command finishes — set high for long tasks, you won't wait unnecessarily. Foreground timeout above 600s is rejected; use background=true for longer commands.

Working directory for this command (absolute path). Defaults to the session working directory.

Run in pseudo-terminal (PTY) mode for interactive CLI tools like Codex, Claude Code, or Python REPL. Only works with local and SSH backends. Default: false.

When true (and background=true), you'll be automatically notified exactly once when the process finishes. **This is the right choice for almost every long-running task** — tests, builds, deployments, multi-item batch jobs, anything that takes over a minute and has a defined end. Use this and keep working on other things; the system notifies you on exit. MUTUALLY EXCLUSIVE with watch_patterns — when both are set, watch_patterns is dropped.

Strings to watch for in background process output. HARD RATE LIMIT: at most 1 notification per 15 seconds per process — matches arriving inside the cooldown are dropped. After 3 consecutive 15-second windows with dropped matches, watch_patterns is automatically disabled for that process and promoted to notify_on_complete behavior (one notification on exit, no more mid-process spam). USE ONLY for truly rare, one-shot mid-process signals on LONG-LIVED processes that will never exit on their own — e.g. ['Application startup complete'] on a server so you know when to hit its endpoint, or ['migration done'] on a daemon. DO NOT use for: (1) end-of-run markers like 'DONE'/'PASS' — use notify_on_complete instead; (2) error patterns like 'ERROR'/'Traceback' in loops or multi-item batch jobs — they fire on every iteration and you'll hit the strike limit fast; (3) anything you'd ever combine with notify_on_complete. When in doubt, choose notify_on_complete. MUTUALLY EXCLUSIVE with notify_on_complete — set one, not both.

Convert text to speech audio. Returns a MEDIA: path that the platform delivers as native audio. Compatible providers render as a voice bubble on Telegram; otherwise audio is sent as a regular attachment. In CLI mode, saves to ~/voice-memos/. Voice and provider are user-configured (built-in providers like edge/openai or custom command providers under tts.providers.<name>), not model-selected.

The text to convert to speech. Provider-specific character caps apply and are enforced automatically (OpenAI 4096, xAI 15000, MiniMax 10000, ElevenLabs 5k-40k depending on model); over-long input is truncated.

Optional custom file path to save the audio. Defaults to ~/.hermes/audio_cache/<timestamp>.mp3

todo

Manage your task list for the current session. Use for complex tasks with 3+ steps or when the user provides multiple tasks. Call with no parameters to read the current list.

Writing:
- Provide 'todos' array to create/update items
- merge=false (default): replace the entire list with a fresh plan
- merge=true: update existing items by id, add any new ones

Each item: {id: string, content: string, status: pending|in_progress|completed|cancelled}
List order is priority. Only ONE item in_progress at a time.
Mark items completed immediately when done. If something fails, cancel it and add a revised item.

Always returns the full current list.

Task items to write. Omit to read current list.

Unique item identifier

Task description

Current status

true: update existing items by id, add new ones. false (default): replace the entire list.

Inspect an image from a URL, file path, or tool output when you need closer detail than what's visible in the conversation. If the user's image is already attached to the conversation and you can see it, just answer directly — only call this tool for images referenced by URL/path, images returned inside other tool results (browser screenshots, search thumbnails), or when you need a deeper look at a specific region the main model's vision may have missed.

Image URL (http/https) or local file path to analyze.

Your specific question or request about the image to resolve. The AI will automatically provide a complete image description AND answer your specific question.

Write content to a file, completely replacing existing content. Use this instead of echo/cat heredoc in terminal. Creates parent directories automatically. OVERWRITES the entire file — use 'patch' for targeted edits. Auto-runs syntax checks on .py/.json/.yaml/.toml and other linted languages; only NEW errors introduced by this write are surfaced (pre-existing errors are filtered out).

Path to the file to write (will be created if it doesn't exist, overwritten if it does)

Complete content to write to the file


Ich will Cipralex von 5mg auf 10mg erhöhen, was für Wirkungen kann ich erwarten?


**Wichtiger Hinweis vorab:** Ich bin kein Arzt und kann keine medizinische Beratung geben. Das Folgende ist nur allgemeine Information aus der Fachliteratur — sprich bitte unbedingt mit deinem verschreibenden Arzt, bevor du die Dosis änderst.

---

Cipralex (Escitalopram) von 5 mg auf 10 mg zu erhöhen ist ein üblicher Schritt — 5 mg ist oft die Einschleichdosis, 10 mg die therapeutische Standarddosis.

**Was du in den ersten 1–2 Wochen erwarten kannst:**

- **Vorübergehende Verstärkung der Nebenwirkungen**, besonders:
  - Übelkeit, Kopfschmerzen, Müdigkeit oder Schlaflosigkeit
  - Mundtrockenheit, vermehrtes Schwitzen
  - Unruhe oder *kurzzeitig* verstärkte Angst (Aktivierungssyndrom)
- Diese klingen meist innerhalb von 7–14 Tagen ab, sobald sich der Körper an die höhere Dosis gewöhnt hat.

**Längerfristig (ab Woche 2–4):**

- Die eigentliche antidepressive/anxiolytische Wirkung baut sich auf
- Eventuell deutlichere sexuelle Nebenwirkungen (Libidoverlust, verzögerter Orgasmus) als bei 5 mg
- Emotionale Abstumpfung kann zunehmen (bei manchen erwünscht, bei anderen nicht)

**Faustregel:** Die Nebenwirkungen kommen zuerst, die erwünschte Wirkung danach. Die ersten Tage können unangenehm sein, das ist normal und kein Grund zum Abbruch — aber dein Arzt sollte das mit dir besprechen und ggf. den Zeitplan anpassen.

Nochmal: **Arzt konsultieren.** Der kennt deine Vorgeschichte und kann einschätzen, ob der Zeitpunkt für die Erhöhung passt.

Explanation:
The user is asking about increasing their dosage of Cipralex (escitalopram) from 5mg to 10mg and what effects they can expect. This is a medical question about an SSRI antidepressant.

I need to be very careful here. I'm an AI assistant, not a doctor. I should:

1. First, acknowledge that this is a medical question and I'm not qualified to give medical advice
2. Provide general information about what's known about escitalopram dosage increases based on publicly available medical literature, while making it clear this is informational only
3. Emphasize that they should consult their prescribing doctor

Let me think about what I know about escitalopram (Cipralex/Lexapro):

- 5mg is often a starting dose, 10mg is the standard therapeutic dose
- When increasing dosage, common effects can include:
  - Temporary increase in side effects (nausea, headache, fatigue, insomnia/sleepiness)
  - These usually subside within 1-2 weeks
  - Therapeutic effects may take 2-4 weeks to fully manifest at the new dose
  - Potential for increased anxiety initially (activation syndrome)
  - Sexual side effects may become more pronounced

I should be informative but cautious. Let me also check if there's any relevant context from memory or past sessions about the user's health - but I shouldn't pry. Let me just give a responsible answer.

The user is in Vienna, Austria. Cipralex is the brand name used in Europe (Lexapro in the US).

I'll give a clear, direct response with the caveat that I'm not a doctor.


Ich nehme seit drei Jahren 5mg


Drei Jahre auf 5 mg — das ändert den Kontext etwas. Du bist nicht in der Einschleichphase, sondern seit Langem stabil auf einer niedrigen Erhaltungsdosis.

**Was das für die Erhöhung bedeutet:**

- Dein Körper ist längst an Escitalopram adaptiert, daher dürfte die **Anfangsverschlechterung** (Unruhe, Übelkeit, verstärkte Angst) milder ausfallen als bei jemandem, der neu einsteigt. Trotzdem kann sie auftreten — du verdoppelst die Dosis ja.
- Die **sexuellen Nebenwirkungen und emotionale Abstumpfung** sind die Punkte, die bei einer Langzeit-Erhöhung am ehesten spürbar neu dazukommen oder sich verstärken.
- Die therapeutische Wirkung kann trotzdem 2–4 Wochen brauchen, bis sie voll da ist.

**Die wichtigere Frage:** Warum die Erhöhung nach drei Jahren? Wenn die 5 mg nicht mehr ausreichen (Symptom-Rückkehr, neue Belastungssituation), ist der Schritt plausibel. Wenn du aber stabil bist und nur "mehr Wirkung" erwartest — 10 mg ist nicht automatisch "besser", sondern bringt vor allem mehr Nebenwirkungspotential bei oft nur moderatem Zusatznutzen.

Das sollte dein Arzt mit dir durchgehen. Nach drei Jahren kennt er den Verlauf gut und kann einschätzen, ob 10 mg wirklich die richtige Antwort auf das ist, was dich gerade beschäftigt.

Explanation:
The user is sharing that they've been on 5mg Cipralex (Escitalopram) for three years. This is important context — they're not in the typical "einschleich" phase where 5mg is just a starter dose for 1-2 weeks. They've been stable on 5mg for three years and now want to increase to 10mg.

This changes the picture somewhat:
- They're already well-adapted to the medication, so the initial side-effect spike might be less intense than for someone just starting
- But they'll still likely experience some increase in side effects when doubling the dose
- The question is: why increase after 3 years? Could be reduced efficacy (tachyphylaxis), worsening symptoms, or a life situation change

I should acknowledge this context, adjust the expectations accordingly, and still emphasize the need to talk to their doctor. I should also ask what's prompting the increase after 3 years — that's clinically relevant.


Bitte recherchiere im Internet ausführlich


Explanation:
Der Benutzer möchte, dass ich im Internet ausführlich zu Escitalopram-Dosiserhöhung von 5 mg auf 10 mg recherchiere, insbesondere im Kontext von jemandem, der seit drei Jahren auf 5 mg ist. Ich soll medizinische Fachinformationen, Studien, Erfahrungsberichte etc. finden.

Ich werde mehrere Suchanfragen parallel durchführen, um verschiedene Aspekte abzudecken:
1. Allgemeine Dosiserhöhung Escitalopram 5 auf 10 mg
2. Langzeitanwendung und Dosiserhöhung
3. Nebenwirkungen bei Dosiserhöhung
4. Studien zur Wirksamkeit 5 vs 10 mg
5. Erfahrungsberichte

Ich lade auch keine spezifischen Skills, da es hier um medizinische Recherche geht und kein spezifischer Skill relevant ist. Ich nutze web_search und session_search nicht - web_search ist das richtige Tool. Aber warte - ich habe kein web_search Tool in meiner Tool-Liste. Lass mich die verfügbaren Tools nochmal prüfen...

Ich sehe: clarify, cronjob, delegate_task, execute_code, memory, patch, process, read_file, search_files, send_message, session_search, skill_manage, skill_view, skills_list, terminal, text_to_speech, todo, vision_analyze, write_file.

Kein web_search! Aber ich kann terminal mit curl verwenden, oder execute_code. Ich könnte auch delegate_task mit web toolsets nutzen.

Für Internet-Recherche kann ich terminal mit curl nutzen, oder execute_code mit Python requests. Oder delegate_task mit web toolsets.

Ich werde mehrere Suchen parallel mit terminal (curl) durchführen. Ich kann DuckDuckGo oder ähnliche Suchmaschinen per curl abfragen. Oder ich nutze execute_code mit Python, um mehrere Quellen zu durchsuchen.

Lass mich execute_code nutzen, um mehrere Web-Suchen parallel durchzuführen und die Ergebnisse zu sammeln.

import json, urllib.request, urllib.parse, ssl
from collections import defaultdict

# SSL context for HTTPS
ctx = ssl.create_default_context()

def duckduckgo_search(query, max_results=8):
    """Search DuckDuckGo HTML (no API key needed)"""
    url = f"https://html.duckduckgo.com/html/?q={urllib.parse.quote(query)}"
    req = urllib.request.Request(url, headers={
        "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36"
    })
    with urllib.request.urlopen(req, context=ctx, timeout=15) as resp:
        html = resp.read().decode("utf-8", errors="replace")

    # Extract result snippets and links
    results = []
    import re
    # Find result blocks
    for match in re.finditer(r']*>([^<]+)', html):
        results.append({"title": match.group(2).strip(), "url": match.group(1).strip()})
    # Find snippets
    snippets = re.findall(r']*>(.*?)', html, re.DOTALL)
    for i, snip in enumerate(snippets):
        if i < len(results):
            results[i]["snippet"] = re.sub(r'<[^>]+>', '', snip).strip()

    return results[:max_results]

# Multiple searches in parallel
queries = [
    "Escitalopram dose increase 5mg to 10mg long-term user effects",
    "Escitalopram 5mg vs 10mg efficacy side effects study",
    "Cipralex Dosiserhöhung 5mg auf 10mg Erfahrungen Nebenwirkungen",
    "Escitalopram dose escalation long-term maintenance 5mg 10mg",
    "SSRI dose increase after years stable low dose effects",
    "Escitalopram 10mg side effects libido emotional blunting",
]

all_results = {}
for q in queries:
    try:
        all_results[q] = duckduckgo_search(q, max_results=5)
    except Exception as e:
        all_results[q] = [{"error": str(e)}]

print(json.dumps(all_results, indent=2, ensure_ascii=False))


Output:
{
  "Escitalopram dose increase 5mg to 10mg long-term user effects": [],
  "Escitalopram 5mg vs 10mg efficacy side effects study": [],
  "Cipralex Dosiserhöhung 5mg auf 10mg Erfahrungen Nebenwirkungen": [],
  "Escitalopram dose escalation long-term maintenance 5mg 10mg": [],
  "SSRI dose increase after years stable low dose effects": [],
  "Escitalopram 10mg side effects libido emotional blunting": []
}


DuckDuckGo HTML search returned empty. Let me try alternative search approaches.

Explanation: DuckDuckGo HTML search returned empty results. Let me try a different approach - maybe use web_search tool or try different search methods. Let me try using the web_search tool if available, or try curl-basedsearches.

import json, urllib.request, urllib.parse, ssl

ctx = ssl.create_default_context()

# Try Google search via startpage.com (privacy proxy)
def startpage_search(query, max_results=8):
    url = f"https://www.startpage.com/sp/search?query={urllib.parse.quote(query)}&language=english"
    req = urllib.request.Request(url, headers={
        "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
    })
    with urllib.request.urlopen(req, context=ctx, timeout=15) as resp:
        html = resp.read().decode("utf-8", errors="replace")

    import re
    results = []
    # Extract results from startpage
    for match in re.finditer(r']*class="[^"]*result-link[^"]*"[^>]*href="([^"]+)"[^>]*>([^<]+)', html):
        results.append({"title": match.group(2).strip(), "url": match.group(1).strip()})
    snippets = re.findall(r'
]*class="[^"]*description[^"]*"[^>]*>(.*?)
', html, re.DOTALL)
    for i, snip in enumerate(snippets):
        if i < len(results):
            results[i]["snippet"] = re.sub(r'<[^>]+>', '', snip).strip()

    return results[:max_results]

# Try multiple queries
queries = [
    "escitalopram 5mg to 10mg dose increase long term",
    "escitalopram 5mg vs 10mg efficacy side effects",
    "Cipralex Dosiserhöhung 5mg 10mg Erfahrungen",
    "escitalopram dose escalation maintenance",
]

all_results = {}
for q in queries:
    try:
        all_results[q] = startpage_search(q, max_results=5)
    except Exception as e:
        all_results[q] = [{"error": str(e)}]

print(json.dumps(all_results, indent=2, ensure_ascii=False))


Output:
{
  "escitalopram 5mg to 10mg dose increase long term": [],
  "escitalopram 5mg vs 10mg efficacy side effects": [],
  "Cipralex Dosiserhöhung 5mg 10mg Erfahrungen": [],
  "escitalopram dose escalation maintenance": []
}


Web searches are returning empty. Let me try direct curl-based approaches.

Explanation: The web searches are returning empty results. Let me try a different approach - maybe using curl directly or trying other search engines. Let me try using the terminal with curl to access some search APIs or try different approaches.

terminal

curl -sL "https://en.wikipedia.org/w/api.php?action=query&list=search&srsearch=escitalopram+dose+5mg+10mg&format=json&srlimit=5" 2>&1 | python3 -m json.tool 2>/dev/null | head -80

curl -sL "https://api.duckduckgo.com/?q=escitalopram+5mg+10mg+dose+increase+side+effects&format=json&no_html=1&skip_disambig=1" 2>&1 | python3 -m json.tool 2>/dev/null | head -100


Output:
{
    "batchcomplete": "",
    "query": {
        "searchinfo": {
            "totalhits": 1,
            "suggestion": "escitalopram dove 5mg 1000",
            "suggestionsnippet": "escitalopram dove 5mg 1000"
        },
        "search": [
            {
                "ns": 0,
                "title": "Clobazam",
                "pageid": 2197412,
                "size": 36649,
                "wordcount": 3436,
                "snippet": "clobazam oral suspension 5mg/5ml and 10mg/5ml in France, Ireland, Germany, and Italy. Silocalm: clobazam oral suspension 5mg/5ml and 10mg/5ml in Denmark, Spain",
                "timestamp": "2026-06-12T15:45:16Z"
            }
        ]
    }
}


Output:
{
    "Abstract": "",
    "AbstractSource": "",
    "AbstractText": "",
    "AbstractURL": "",
    "Answer": "",
    "AnswerType": "",
    "Definition": "",
    "DefinitionSource": "",
    "DefinitionURL": "",
    "Entity": "",
    "Heading": "",
    "Image": "",
    "ImageHeight": "",
    "ImageIsLogo": "",
    "ImageWidth": "",
    "Infobox": "",
    "Redirect": "",
    "RelatedTopics": [],
    "Results": [],
    "Type": "",
    "meta": {
        "attribution": null,
        "blockgroup": null,
        "created_date": "2021-03-24",
        "description": "testing",
        "designer": null,
        "dev_date": "2021-03-24",
        "dev_milestone": "development",
        "developer": [
            {
                "name": "zt",
                "type": "duck.co",
                "url": "https://duck.co/user/zt"
            }
        ],
        "example_query": "",
        "id": "just_another_test",
        "is_stackexchange": 0,
        "js_callback_name": "another_test",
        "live_date": null,
        "maintainer": {
            "github": ""
        },
        "name": "Just Another Test",
        "perl_module": "DDG::Lontail::AnotherTest",
        "producer": null,
        "production_state": "offline",
        "repo": "fathead",
        "signal_from": "just_another_test",
        "src_domain": "how about there",
        "src_id": null,
        "src_name": "hi there",
        "src_options": {
            "directory": "",
            "is_fanon": 0,
            "is_mediawiki": 0,
            "is_wikipedia": 0,
            "language": "",
            "min_abstract_length": null,
            "skip_abstract": 0,
            "skip_abstract_paren": 0,
            "skip_icon": 0,
            "skip_image_name": 0,
            "skip_qr": "",
            "src_info": "",
            "src_skip": ""
        },
        "src_url": "Hello there",
        "status": null,
        "tab": "is this source",
        "topic": [],
        "unsafe": null
    }
}


Web search APIs are returning empty. Let me try direct medical sources and PubMed.

Explanation: The web search tools aren't returning useful results. Let me try a different approach - maybe I can use PubMed or other medical databases, or try Google Scholar. Let me also try direct curl to some known medical sites.

curl -sL "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&retmax=10&term=escitalopram+dose+increase+5mg+10mg+long+term" 2>&1 | head -100

curl -sL "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&retmax=10&term=escitalopram+5mg+vs+10mg+efficacy+side+effects" 2>&1 | head -100

curl -sL "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&retmax=10&term=escitalopram+dose+escalation+maintenance+depression" 2>&1 | head -100


Output:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE eSearchResult PUBLIC "-//NLM//DTD esearch 20060628//EN" "https://eutils.ncbi.nlm.nih.gov/eutils/dtd/20060628/esearch.dtd">
<eSearchResult><Count>0</Count><RetMax>0</RetMax><RetStart>0</RetStart><IdList/><TranslationSet><Translation>     <From>escitalopram</From>     <To>"escitalopram"[Supplementary Concept] OR "escitalopram"[All Fields] OR "escitalopram"[MeSH Terms] OR "escitalopram's"[All Fields]</To>    </Translation><Translation>     <From>increase</From>     <To>"increase"[All Fields] OR "increased"[All Fields] OR "increases"[All Fields] OR "increasing"[All Fields] OR "increasings"[All Fields]</To>    </Translation><Translation>     <From>term</From>     <To>"term birth"[MeSH Terms] OR ("term"[All Fields] AND "birth"[All Fields]) OR "term birth"[All Fields] OR "term"[All Fields]</To>    </Translation></TranslationSet><QueryTranslation>("escitalopram"[Supplementary Concept] OR "escitalopram"[All Fields] OR "escitalopram"[MeSH Terms] OR "escitalopram s"[All Fields]) AND "dose"[All Fields] AND ("increase"[All Fields] OR "increased"[All Fields] OR "increases"[All Fields] OR "increasing"[All Fields] OR "increasings"[All Fields]) AND "5mg"[All Fields] AND "10mg"[All Fields] AND "long"[All Fields] AND ("term birth"[MeSH Terms] OR ("term"[All Fields] AND "birth"[All Fields]) OR "term birth"[All Fields] OR "term"[All Fields])</QueryTranslation><WarningList><OutputMessage>No items found.</OutputMessage></WarningList></eSearchResult>


Output:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE eSearchResult PUBLIC "-//NLM//DTD esearch 20060628//EN" "https://eutils.ncbi.nlm.nih.gov/eutils/dtd/20060628/esearch.dtd">
<eSearchResult><Count>0</Count><RetMax>0</RetMax><RetStart>0</RetStart><IdList/><TranslationSet><Translation>     <From>escitalopram</From>     <To>"escitalopram"[Supplementary Concept] OR "escitalopram"[All Fields] OR "escitalopram"[MeSH Terms] OR "escitalopram's"[All Fields]</To>    </Translation><Translation>     <From>efficacy</From>     <To>"efficacies"[All Fields] OR "efficacious"[All Fields] OR "efficaciously"[All Fields] OR "efficaciousness"[All Fields] OR "efficacy"[All Fields]</To>    </Translation><Translation>     <From>side effects</From>     <To>"adverse effects"[Subheading] OR ("adverse"[All Fields] AND "effects"[All Fields]) OR "adverse effects"[All Fields] OR ("side"[All Fields] AND "effects"[All Fields]) OR "side effects"[All Fields]</To>    </Translation></TranslationSet><QueryTranslation>("escitalopram"[Supplementary Concept] OR "escitalopram"[All Fields] OR "escitalopram"[MeSH Terms] OR "escitalopram s"[All Fields]) AND "5mg"[All Fields] AND "vs"[All Fields] AND "10mg"[All Fields] AND ("efficacies"[All Fields] OR "efficacious"[All Fields] OR "efficaciously"[All Fields] OR "efficaciousness"[All Fields] OR "efficacy"[All Fields]) AND ("adverse effects"[MeSH Subheading] OR ("adverse"[All Fields] AND "effects"[All Fields]) OR "adverse effects"[All Fields] OR ("side"[All Fields] AND "effects"[All Fields]) OR "side effects"[All Fields])</QueryTranslation><WarningList><OutputMessage>No items found.</OutputMessage></WarningList></eSearchResult>


Output:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE eSearchResult PUBLIC "-//NLM//DTD esearch 20060628//EN" "https://eutils.ncbi.nlm.nih.gov/eutils/dtd/20060628/esearch.dtd">
<eSearchResult><Count>1</Count><RetMax>1</RetMax><RetStart>0</RetStart><IdList>
<Id>38536761</Id>
</IdList><TranslationSet><Translation>     <From>escitalopram</From>     <To>"escitalopram"[Supplementary Concept] OR "escitalopram"[All Fields] OR "escitalopram"[MeSH Terms] OR "escitalopram's"[All Fields]</To>    </Translation><Translation>     <From>escalation</From>     <To>"escalate"[All Fields] OR "escalated"[All Fields] OR "escalates"[All Fields] OR "escalating"[All Fields] OR "escalation"[All Fields] OR "escalations"[All Fields]</To>    </Translation><Translation>     <From>maintenance</From>     <To>"maintenance"[MeSH Terms] OR "maintenance"[All Fields] OR "maintenances"[All Fields]</To>    </Translation><Translation>     <From>depression</From>     <To>"depressed"[All Fields] OR "depression"[MeSH Terms] OR "depression"[All Fields] OR "depressions"[All Fields] OR "depression's"[All Fields] OR "depressive disorder"[MeSH Terms] OR ("depressive"[All Fields] AND "disorder"[All Fields]) OR "depressive disorder"[All Fields] OR "depressivity"[All Fields] OR "depressive"[All Fields] OR "depressively"[All Fields] OR "depressiveness"[All Fields] OR "depressives"[All Fields]</To>    </Translation></TranslationSet><QueryTranslation>("escitalopram"[Supplementary Concept] OR "escitalopram"[All Fields] OR "escitalopram"[MeSH Terms] OR "escitalopram s"[All Fields]) AND "dose"[All Fields] AND ("escalate"[All Fields] OR "escalated"[All Fields] OR "escalates"[All Fields] OR "escalating"[All Fields] OR "escalation"[All Fields] OR "escalations"[All Fields]) AND ("maintenance"[MeSH Terms] OR "maintenance"[All Fields] OR "maintenances"[All Fields]) AND ("depressed"[All Fields] OR "depression"[MeSH Terms] OR "depression"[All Fields] OR "depressions"[All Fields] OR "depression s"[All Fields] OR "depressive disorder"[MeSH Terms] OR ("depressive"[All Fields] AND "disorder"[All Fields]) OR "depressive disorder"[All Fields] OR "depressivity"[All Fields] OR "depressive"[All Fields] OR "depressively"[All Fields] OR "depressiveness"[All Fields] OR "depressives"[All Fields])</QueryTranslation></eSearchResult>


Let me try broader PubMed searches and also access some direct medical sources.

Explanation: Let me try broader PubMed searches and also try to access some direct medical sources.


Output:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE eSearchResult PUBLIC "-//NLM//DTD esearch 20060628//EN" "https://eutils.ncbi.nlm.nih.gov/eutils/dtd/20060628/esearch.dtd">
<eSearchResult><Count>45</Count><RetMax>15</RetMax><RetStart>0</RetStart><IdList>
<Id>40761981</Id>
<Id>40413068</Id>
<Id>37827257</Id>
<Id>37521489</Id>
<Id>37056809</Id>
<Id>36936596</Id>
<Id>35126139</Id>
<Id>34454055</Id>
<Id>32991792</Id>
<Id>30170329</Id>
<Id>30047820</Id>
<Id>28953649</Id>
<Id>25768383</Id>
<Id>24511235</Id>
<Id>23881184</Id>
</IdList><TranslationSet><Translation>     <From>escitalopram</From>     <To>"escitalopram"[Supplementary Concept] OR "escitalopram"[All Fields] OR "escitalopram"[MeSH Terms] OR "escitalopram's"[All Fields]</To>    </Translation><Translation>     <From>dose response</From>     <To>"Dose Response"[Journal:__jid101308899] OR ("dose"[All Fields] AND "response"[All Fields]) OR "dose response"[All Fields]</To>    </Translation><Translation>     <From>depression anxiety</From>     <To>"Depress Anxiety"[Journal:__jid9708816] OR "Arch Depress Anxiety"[Journal:__jid101765132] OR ("depression"[All Fields] AND "anxiety"[All Fields]) OR "depression anxiety"[All Fields]</To>    </Translation></TranslationSet><QueryTranslation>("escitalopram"[Supplementary Concept] OR "escitalopram"[All Fields] OR "escitalopram"[MeSH Terms] OR "escitalopram s"[All Fields]) AND ("dose response"[Journal] OR ("dose"[All Fields] AND "response"[All Fields]) OR "dose response"[All Fields]) AND ("depress anxiety"[Journal] OR "arch depress anxiety"[Journal] OR ("depression"[All Fields] AND "anxiety"[All Fields]) OR "depression anxiety"[All Fields])</QueryTranslation></eSearchResult>


Output:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE eSearchResult PUBLIC "-//NLM//DTD esearch 20060628//EN" "https://eutils.ncbi.nlm.nih.gov/eutils/dtd/20060628/esearch.dtd">
<eSearchResult><Count>0</Count><RetMax>0</RetMax><RetStart>0</RetStart><IdList/><TranslationSet><Translation>     <From>escitalopram</From>     <To>"escitalopram"[Supplementary Concept] OR "escitalopram"[All Fields] OR "escitalopram"[MeSH Terms] OR "escitalopram's"[All Fields]</To>    </Translation><Translation>     <From>side effects</From>     <To>"adverse effects"[Subheading] OR ("adverse"[All Fields] AND "effects"[All Fields]) OR "adverse effects"[All Fields] OR ("side"[All Fields] AND "effects"[All Fields]) OR "side effects"[All Fields]</To>    </Translation><Translation>     <From>sexual dysfunction</From>     <To>"sexual dysfunctions, psychological"[MeSH Terms] OR ("sexual"[All Fields] AND "dysfunctions"[All Fields] AND "psychological"[All Fields]) OR "psychological sexual dysfunctions"[All Fields] OR ("sexual"[All Fields] AND "dysfunction"[All Fields]) OR "sexual dysfunction"[All Fields] OR "sexual dysfunction, physiological"[MeSH Terms] OR ("sexual"[All Fields] AND "dysfunction"[All Fields] AND "physiological"[All Fields]) OR "physiological sexual dysfunction"[All Fields]</To>    </Translation><Translation>     <From>emotional</From>     <To>"emoting"[All Fields] OR "emotion's"[All Fields] OR "emotions"[MeSH Terms] OR "emotions"[All Fields] OR "emotion"[All Fields] OR "emotional"[All Fields] OR "emotive"[All Fields]</To>    </Translation><Translation>     <From>blunting</From>     <To>"blunt"[All Fields] OR "blunted"[All Fields] OR "blunting"[All Fields] OR "blunts"[All Fields]</To>    </Translation></TranslationSet><QueryTranslation>("escitalopram"[Supplementary Concept] OR "escitalopram"[All Fields] OR "escitalopram"[MeSH Terms] OR "escitalopram s"[All Fields]) AND ("adverse effects"[MeSH Subheading] OR ("adverse"[All Fields] AND "effects"[All Fields]) OR "adverse effects"[All Fields] OR ("side"[All Fields] AND "effects"[All Fields]) OR "side effects"[All Fields]) AND ("sexual dysfunctions, psychological"[MeSH Terms] OR ("sexual"[All Fields] AND "dysfunctions"[All Fields] AND "psychological"[All Fields]) OR "psychological sexual dysfunctions"[All Fields] OR ("sexual"[All Fields] AND "dysfunction"[All Fields]) OR "sexual dysfunction"[All Fields] OR "sexual dysfunction, physiological"[MeSH Terms] OR ("sexual"[All Fields] AND "dysfunction"[All Fields] AND "physiological"[All Fields]) OR "physiological sexual dysfunction"[All Fields]) AND ("emoting"[All Fields] OR "emotion s"[All Fields] OR "emotions"[MeSH Terms] OR "emotions"[All Fields] OR "emotion"[All Fields] OR "emotional"[All Fields] OR "emotive"[All Fields]) AND ("blunt"[All Fields] OR "blunted"[All Fields] OR "blunting"[All Fields] OR "blunts"[All Fields])</QueryTranslation><WarningList><OutputMessage>No items found.</OutputMessage></WarningList></eSearchResult>


Output:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE eSearchResult PUBLIC "-//NLM//DTD esearch 20060628//EN" "https://eutils.ncbi.nlm.nih.gov/eutils/dtd/20060628/esearch.dtd">
<eSearchResult><Count>1</Count><RetMax>1</RetMax><RetStart>0</RetStart><IdList>
<Id>20452031</Id>
</IdList><TranslationSet><Translation>     <From>escitalopram</From>     <To>"escitalopram"[Supplementary Concept] OR "escitalopram"[All Fields] OR "escitalopram"[MeSH Terms] OR "escitalopram's"[All Fields]</To>    </Translation><Translation>     <From>fixed</From>     <To>"fixatives"[Pharmacological Action] OR "fixatives"[Supplementary Concept] OR "fixatives"[All Fields] OR "fixative"[All Fields] OR "fixatives"[MeSH Terms] OR "fixed"[All Fields] OR "fixes"[All Fields] OR "fixing"[All Fields] OR "fixings"[All Fields]</To>    </Translation><Translation>     <From>trial</From>     <To>"clinical trials as topic"[MeSH Terms] OR ("clinical"[All Fields] AND "trials"[All Fields] AND "topic"[All Fields]) OR "clinical trials as topic"[All Fields] OR "trial"[All Fields] OR "trial's"[All Fields] OR "trialed"[All Fields] OR "trialing"[All Fields] OR "trials"[All Fields]</To>    </Translation></TranslationSet><QueryTranslation>("escitalopram"[Supplementary Concept] OR "escitalopram"[All Fields] OR "escitalopram"[MeSH Terms] OR "escitalopram s"[All Fields]) AND "10mg"[All Fields] AND ("fixatives"[Pharmacological Action] OR "fixatives"[Supplementary Concept] OR "fixatives"[All Fields] OR "fixative"[All Fields] OR "fixatives"[MeSH Terms] OR "fixed"[All Fields] OR "fixes"[All Fields] OR "fixing"[All Fields] OR "fixings"[All Fields]) AND "dose"[All Fields] AND ("clinical trials as topic"[MeSH Terms] OR ("clinical"[All Fields] AND "trials"[All Fields] AND "topic"[All Fields]) OR "clinical trials as topic"[All Fields] OR "trial"[All Fields] OR "trial s"[All Fields] OR "trialed"[All Fields] OR "trialing"[All Fields] OR "trials"[All Fields])</QueryTranslation></eSearchResult>


Got some PubMed IDs. Let me fetch the abstracts of the most relevant papers.

Explanation: The PubMed searches are returning some results. Let me now fetch the abstracts of the most relevant papers. I have 45 results for dose-response, and a few specific ones. Let me fetch the key ones.

curl -sL "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&id=40761981,40413068,37827257,37521489,37056809,36936596,35126139,34454055,32991792,30170329,30047820,28953649,25768383,24511235,23881184&rettype=abstract&retmode=xml" 2>&1 | python3 -c "
import sys, xml.etree.ElementTree as ET
tree = ET.parse(sys.stdin)
root = tree.getroot()
for article in root.findall('.//PubmedArticle'):
    pmid = article.find('.//PMID').text
    title = article.find('.//ArticleTitle')
    title_text = title.text if title is not None else 'N/A'
    abstract = article.find('.//AbstractText')
    abstract_text = abstract.text if abstract is not None else 'N/A'
    journal = article.find('.//Journal/Title')
    journal_text = journal.text if journal is not None else 'N/A'
    year = article.find('.//PubDate/Year')
    year_text = year.text if year is not None else 'N/A'
    print(f'=== PMID: {pmid} | {journal_text} ({year_text}) ===')
    print(f'Title: {title_text}')
    print(f'Abstract: {abstract_text[:500]}')
    print()
" 2>&1 | head -200

curl -sL "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&id=20452031,38536761&rettype=abstract&retmode=xml" 2>&1 | python3 -c "
import sys, xml.etree.ElementTree as ET
tree = ET.parse(sys.stdin)
root = tree.getroot()
for article in root.findall('.//PubmedArticle'):
    pmid = article.find('.//PMID').text
    title = article.find('.//ArticleTitle')
    title_text = title.text if title is not None else 'N/A'
    abstract = article.find('.//AbstractText')
    abstract_text = abstract.text if abstract is not None else 'N/A'
    journal = article.find('.//Journal/Title')
    journal_text = journal.text if journal is not None else 'N/A'
    year = article.find('.//PubDate/Year')
    year_text = year.text if year is not None else 'N/A'
    print(f'=== PMID: {pmid} | {journal_text} ({year_text}) ===')
    print(f'Title: {title_text}')
    print(f'Abstract: {abstract_text[:800]}')
    print()
" 2>&1


Output:
=== PMID: 40761981 | Cureus (2025) ===
Title: Symptom Reduction and Deprescribing in a Patient With Treatment-Resistant Depression Using Sublingual Ketamine Troches: A Case Report.
Abstract: Treatment-resistant depression (TRD) remains a significant clinical challenge, often accompanied by polypharmacy and comorbid anxiety or trauma-related disorders. This report describes a 37-year-old male with longstanding major depressive disorder (MDD), post-traumatic stress disorder (PTSD), and social anxiety disorder who demonstrated limited response to traditional pharmacologic strategies, including escitalopram, quetiapine, trazodone, and gabapentin. After initiating low-dose sublingual ket

=== PMID: 40413068 | L'Encephale (2025) ===
Title: [Psilocybin in the setting of treatment-resistant unipolar depression: A case report].
Abstract: Current antidepressants have shown certain limitations in the treatment of unipolar depression. Their long onset of action, interactions, and side effects are obstacles to achieving lasting remission of this prevalent, often chronic or recurrent, pathology. Faced with this clinical necessity, research efforts have intensified in recent years around psychedelic drugs, with a particular focus on the mental health benefits of psilocybin. To illustrate this promising approach, we present here the cl

=== PMID: 37827257 | Journal of affective disorders (2024) ===
Title: Effect of aripiprazole on promoting cognitive function and enhancing clinical efficacy in patients with first-episode depression on escitalopram: A randomized controlled trial.
Abstract: To explore the effect of escitalopram combined with aripiprazole on cognitive function in patients with major depressive disorder (MDD), and to evaluate the clinical efficacy of the combination therapy.

=== PMID: 37521489 | Journal of experimental pharmacology (2023) ===
Title: Efficacy and Anti-Inflammatory Activity of Ashwagandha Sustained-Release Formulation on Depression and Anxiety Induced by Chronic Unpredictable Stress: in vivo and in vitro Studies.
Abstract: Stress is the psychological, physiological, and behavioral response of an individual's body when they perceive a lack of equilibrium between the demands placed upon them and their ability to meet those demands. Adaptogens are herbs that help with stress management, and Ashwagandha is one such safe and effective adaptogen.

=== PMID: 37056809 | American journal of translational research (2023) ===
Title: Effects of escitalopram oxalate plus low-dose trazodone on psychological state and quality of life in patients with treatment-refractory depression.
Abstract: To analyze the effect of escitalopram oxalate (ESC) plus low-dose (LD) trazodone (TRA) on the psychological state and quality of life (QOL) of patients with treatment-refractory depression (TRD).

=== PMID: 36936596 | BMJ medicine (2022) ===
Title: Dose-response effects of selective serotonin reuptake inhibitor monotherapy for the treatment of depression: systematic review of reviews and meta-narrative synthesis.
Abstract: To assess and clarify the relations between selective serotonin reuptake inhibitor (SSRI) dose efficacy, acceptability (early treatment discontinuation (dropouts)), and tolerability (reported adverse drug effects), and critically evaluate methods previously used to examine SSRI dose-response effects for the treatment of depression in adults.

=== PMID: 35126139 | Frontiers in pharmacology (2021) ===
Title: Spontaneous Activity of CB
Abstract: The monoaminergic theory of depression/anxiety disorders cannot fully explain the behavioral and neuroplastic changes observed after ADs chronic treatment. Endocannabinoid system, which comprises CB2 receptors, has been associated with the chronic effects of these drugs, especially in stressed mice. CB2-KO mice display more vulnerability to stressful stimuli. In the present study, we hypothesized that the behavioral and neuroplastic effects observed after repeated treatment with the AD escitalop

=== PMID: 34454055 | Journal of ethnopharmacology (2022) ===
Title: An acute dose-ranging evaluation of the antidepressant properties of Sceletium tortuosum (Zembrin®) versus escitalopram in the Flinders Sensitive Line rat.
Abstract: Sceletium tortuosum (L.) N.E.Br. (ST) has been used by the Khoisan people of South Africa as a mood elevator. Its various pharmacological mechanisms of action suggest distinct potential as an antidepressant. Clinical studies in healthy individuals suggest beneficial effects on mood, cognition, and anxiety.

=== PMID: 32991792 | The Journal of clinical psychiatry (2020) ===
Title: Coprescribed Benzodiazepines in Older Adults Receiving Antidepressants for Anxiety and Depressive Disorders: Association With Treatment Outcomes.
Abstract: There is a paucity of data on the effects of coprescribed benzodiazepines on treatment response variability and adherence to antidepressant pharmacotherapy for depression and anxiety in late life. The objective of this transdiagnostic analysis was to examine the effect of benzodiazepines on treatment outcomes in older patients with generalized anxiety disorder (GAD) or major depressive disorder (MDD).

=== PMID: 30170329 | Pharmacopsychiatry (2019) ===
Title: Efficacy of Add-on Pregabalin in the Treatment of Patients with Generalized Anxiety Disorder and Unipolar Major Depression With an Early Nonresponse to Escitalopram: A Double-Blind Placebo-Controlled Study.
Abstract: This study tests the efficacy of pregabalin versus placebo as adjunctive treatment in patients with generalized anxiety disorder (GAD) comorbid with unipolar major depression (UMD) and with an early nonresponse to escitalopram.

=== PMID: 30047820 | Journal of psychopharmacology (Oxford, England) (2018) ===
Title: Efficacy of vortioxetine on the physical symptoms of major depressive disorder.
Abstract: Efficacy has been proven for vortioxetine in short-term and long-term treatment of major depressive disorder (MDD), with broad beneficial effects on emotional, physical and cognitive symptoms. Limited specific data on the effects of vortioxetine on depression-related physical symptoms have been published.

=== PMID: 28953649 | Medicine (2017) ===
Title: Efficacy of escitalopram monotherapy in the treatment of major depressive disorder: A pooled analysis of 4 Chinese clinical trials.
Abstract: This study aimed to evaluate the efficacy of escitalopram monotherapy in the treatment of major depressive disorder (MDD) on the basis of pooled data analysis of 4 Chinese clinical trials.A total of 649 outpatients with MDD score of ≥18 at the 17-item Hamilton Depression Rating Scale (HAMD17) were included across 4 eligible studies. Patients were treated with 10 mg/day escitalopram for 2 weeks, and then 20 mg/day escitalopram was administered if the clinical response was poor.The change in total

=== PMID: 25768383 | International clinical psychopharmacology (2015) ===
Title: Treating mood disorders in patients with a history of intestinal surgery: a systematic review.
Abstract: Bariatric surgery is increasingly being performed, with the intended benefits of significant and durable weight loss. Radical surgical resection can result in short bowel syndrome (SBS), a rare and devastating condition. Psychological distress is common in these patients. Relevant articles were identified by searching Pubmed and EMBASE databases with the following keywords: 'Bariatrics'[Mesh] OR 'Short Bowel Syndrome' AND 'Antidepressive Agents' OR 'Psychotropic Drugs'[Mesh]. One in-vitro study,

=== PMID: 24511235 | Neuropsychiatric disease and treatment (2014) ===
Title: A randomized, double-blind study of the efficacy and tolerability of extended-release quetiapine fumarate (quetiapine XR) monotherapy in patients with major depressive disorder.
Abstract: To evaluate the efficacy and tolerability of once-daily extended release quetiapine fumarate (quetiapine XR) monotherapy in patients with major depressive disorder (MDD).

=== PMID: 23881184 | International clinical psychopharmacology (2013) ===
Title: Comparison of escitalopram and paroxetine in the treatment of major depressive disorder.
Abstract: This is a single-blind, parallel, flexible-dose study to compare the efficacy and tolerability of escitalopram and paroxetine in the treatment of patients with major depressive disorder. We recruited 399 patients from the outpatient clinics of five hospitals in northern Taiwan. Patients were administered either escitalopram (10-30 mg) or paroxetine (20-40 mg) according to the judgment of clinicians. These patients were assessed using the Hamilton Rating Scale for Depression (HAM-D) and the Hamil


Output:
=== PMID: 20452031 | Journal of affective disorders (2010) ===
Title: MRI signal hyperintensities and treatment remission of geriatric depression.
Abstract: White matter abnormalities may interfere with limbic-cortical balance and contribute to chronic depressive syndromes in the elderly. This study sought to clarify the relationship of SH to treatment response. We hypothesized that patients who failed to remit during a 12-week controlled treatment trial of escitalopram would exhibit greater SH burden than patients who remitted.

=== PMID: 38536761 | Expert review of neurotherapeutics (2024) ===
Title: Perspectives on the impact of vortioxetine on the treatment armamentarium of major depressive disorder.
Abstract: Major Depressive Disorder (MDD) is a mental health issue that significantly affects patients' quality of life and functioning. Despite available treatments, many patients continue to suffer due to incomplete symptom resolution and side effects.


Let me get the full abstract of the most relevant paper (the dose-response systematic review) and try more targeted searches.

Explanation: The PubMed results are mostly about treatment-resistant depression, augmentation strategies, and other topics — not directly about escitalopram dose increase from 5mg to 10mg. Let me try more targeted searches and also look at the key paper PMID 36936596 which is a systematic review of SSRI dose-response effects. Let me also try to access some German-language resources and the official prescribing information.

curl -sL "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&id=36936596&rettype=abstract&retmode=xml" 2>&1 | python3 -c "
import sys, xml.etree.ElementTree as ET
tree = ET.parse(sys.stdin)
root = tree.getroot()
for article in root.findall('.//PubmedArticle'):
    pmid = article.find('.//PMID').text
    title = article.find('.//ArticleTitle').text
    # Get all abstract parts
    abstract_parts = article.findall('.//AbstractText')
    full_abstract = ' '.join([a.text or '' for a in abstract_parts])
    journal = article.find('.//Journal/Title').text
    year = article.find('.//PubDate/Year').text
    print(f'=== PMID: {pmid} | {journal} ({year}) ===')
    print(f'Title: {title}')
    print(f'Abstract: {full_abstract}')
" 2>&1


Output:
=== PMID: 36936596 | BMJ medicine (2022) ===
Title: Dose-response effects of selective serotonin reuptake inhibitor monotherapy for the treatment of depression: systematic review of reviews and meta-narrative synthesis.
Abstract: To assess and clarify the relations between selective serotonin reuptake inhibitor (SSRI) dose efficacy, acceptability (early treatment discontinuation (dropouts)), and tolerability (reported adverse drug effects), and critically evaluate methods previously used to examine SSRI dose-response effects for the treatment of depression in adults. Systematic review of reviews and meta-narrative synthesis. Embase, Medline, PsycINFO, Scopus, and the Cochrane Collaboration library, from 1975 to December 2021. Reference lists of national depression treatment guidelines were systemically searched by hand. Reviews assessing SSRI monotherapy dose-response effects for the treatment of depression in adults (age ≥18 years) reporting efficacy, acceptability, or tolerability. Reviews meeting inclusion criteria had a high degree of heterogeneity, due to methodological diversity; therefore, a meta-narrative synthesis approach was applied. Standard daily doses were defined as 20 mg citalopram, fluoxetine, paroxetine; 50 mg sertraline; and 10 mg escitalopram. Risk of bias was assessed using the Risk of Bias in Systematic Reviews tool, in line with Cochrane recommendations. The search identified 9138 records; 387 full text reports were assessed for eligibility, 42 of which matched the inclusion criteria. The majority, 83% (n=35), of reviews included data for studies with a duration of ≤12 weeks (ie, the acute phase of depression treatment). Of 39 reviews assessing efficacy, the majority (n=26) indicated that individual SSRIs and SSRI class demonstrated flat dose-response effects; standard doses were optimal for efficacy. Acceptability or tolerability were assessed in 28 reviews. Higher than standard daily doses were associated with higher dropout rates and a greater incidence of adverse drug effects (eg, nausea, sexual dysfunction, fatigue, anxiety). Despite a range of methods being reported, there was an overall consensus regarding SSRI dose related efficacy, dropouts, and adverse drug effects. Standard daily doses of SSRIs for the treatment of depression in adults provide a favourable balance between efficacy, acceptability, and tolerability. Patients are encouraged to talk to their prescriber or community pharmacist if they experience adverse effects or have any concerns about their drug treatments.


Output:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE eSearchResult PUBLIC "-//NLM//DTD esearch 20060628//EN" "https://eutils.ncbi.nlm.nih.gov/eutils/dtd/20060628/esearch.dtd">
<eSearchResult><Count>0</Count><RetMax>0</RetMax><RetStart>0</RetStart><IdList/><TranslationSet><Translation>     <From>escitalopram</From>     <To>"escitalopram"[Supplementary Concept] OR "escitalopram"[All Fields] OR "escitalopram"[MeSH Terms] OR "escitalopram's"[All Fields]</To>    </Translation><Translation>     <From>standard</From>     <To>"reference standards"[MeSH Terms] OR ("reference"[All Fields] AND "standards"[All Fields]) OR "reference standards"[All Fields] OR "standardization"[All Fields] OR "standard"[All Fields] OR "standard's"[All Fields] OR "standardisation"[All Fields] OR "standardisations"[All Fields] OR "standardise"[All Fields] OR "standardised"[All Fields] OR "standardises"[All Fields] OR "standardising"[All Fields] OR "standardization's"[All Fields] OR "standardizations"[All Fields] OR "standardize"[All Fields] OR "standardized"[All Fields] OR "standardizes"[All Fields] OR "standardizing"[All Fields] OR "standards"[Subheading] OR "standards"[All Fields]</To>    </Translation><Translation>     <From>depression</From>     <To>"depressed"[All Fields] OR "depression"[MeSH Terms] OR "depression"[All Fields] OR "depressions"[All Fields] OR "depression's"[All Fields] OR "depressive disorder"[MeSH Terms] OR ("depressive"[All Fields] AND "disorder"[All Fields]) OR "depressive disorder"[All Fields] OR "depressivity"[All Fields] OR "depressive"[All Fields] OR "depressively"[All Fields] OR "depressiveness"[All Fields] OR "depressives"[All Fields]</To>    </Translation><Translation>     <From>randomized</From>     <To>"random allocation"[MeSH Terms] OR ("random"[All Fields] AND "allocation"[All Fields]) OR "random allocation"[All Fields] OR "randomization"[All Fields] OR "randomized"[All Fields] OR "random"[All Fields] OR "randomisation"[All Fields] OR "randomisations"[All Fields] OR "randomise"[All Fields] OR "randomised"[All Fields] OR "randomising"[All Fields] OR "randomizations"[All Fields] OR "randomize"[All Fields] OR "randomizes"[All Fields] OR "randomizing"[All Fields] OR "randomness"[All Fields] OR "randoms"[All Fields]</To>    </Translation></TranslationSet><QueryTranslation>("escitalopram"[Supplementary Concept] OR "escitalopram"[All Fields] OR "escitalopram"[MeSH Terms] OR "escitalopram s"[All Fields]) AND "10mg"[All Fields] AND ("reference standards"[MeSH Terms] OR ("reference"[All Fields] AND "standards"[All Fields]) OR "reference standards"[All Fields] OR "standardization"[All Fields] OR "standard"[All Fields] OR "standard s"[All Fields] OR "standardisation"[All Fields] OR "standardisations"[All Fields] OR "standardise"[All Fields] OR "standardised"[All Fields] OR "standardises"[All Fields] OR "standardising"[All Fields] OR "standardization s"[All Fields] OR "standardizations"[All Fields] OR "standardize"[All Fields] OR "standardized"[All Fields] OR "standardizes"[All Fields] OR "standardizing"[All Fields] OR "standards"[MeSH Subheading] OR "standards"[All Fields]) AND "dose"[All Fields] AND ("depressed"[All Fields] OR "depression"[MeSH Terms] OR "depression"[All Fields] OR "depressions"[All Fields] OR "depression s"[All Fields] OR "depressive disorder"[MeSH Terms] OR ("depressive"[All Fields] AND "disorder"[All Fields]) OR "depressive disorder"[All Fields] OR "depressivity"[All Fields] OR "depressive"[All Fields] OR "depressively"[All Fields] OR "depressiveness"[All Fields] OR "depressives"[All Fields]) AND ("random allocation"[MeSH Terms] OR ("random"[All Fields] AND "allocation"[All Fields]) OR "random allocation"[All Fields] OR "randomization"[All Fields] OR "randomized"[All Fields] OR "random"[All Fields] OR "randomisation"[All Fields] OR "randomisations"[All Fields] OR "randomise"[All Fields] OR "randomised"[All Fields] OR "randomising"[All Fields] OR "randomizations"[All Fields] OR "randomize"[All Fields] OR "randomizes"[All Fields] OR "randomizing"[All Fields] OR "randomness"[All Fields] OR "randoms"[All Fields])</QueryTranslation><WarningList><OutputMessage>No items found.</OutputMessage></WarningList></eSearchResult>


Output:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE eSearchResult PUBLIC "-//NLM//DTD esearch 20060628//EN" "https://eutils.ncbi.nlm.nih.gov/eutils/dtd/20060628/esearch.dtd">
<eSearchResult><Count>5</Count><RetMax>5</RetMax><RetStart>0</RetStart><IdList>
<Id>38643950</Id>
<Id>32656861</Id>
<Id>20806989</Id>
<Id>9221240</Id>
<Id>1431019</Id>
</IdList><TranslationSet><Translation>     <From>increase</From>     <To>"increase"[All Fields] OR "increased"[All Fields] OR "increases"[All Fields] OR "increasing"[All Fields] OR "increasings"[All Fields]</To>    </Translation><Translation>     <From>term</From>     <To>"term birth"[MeSH Terms] OR ("term"[All Fields] AND "birth"[All Fields]) OR "term birth"[All Fields] OR "term"[All Fields]</To>    </Translation><Translation>     <From>maintenance</From>     <To>"maintenance"[MeSH Terms] OR "maintenance"[All Fields] OR "maintenances"[All Fields]</To>    </Translation><Translation>     <From>side effects</From>     <To>"adverse effects"[Subheading] OR ("adverse"[All Fields] AND "effects"[All Fields]) OR "adverse effects"[All Fields] OR ("side"[All Fields] AND "effects"[All Fields]) OR "side effects"[All Fields]</To>    </Translation></TranslationSet><QueryTranslation>"SSRI"[All Fields] AND "dose"[All Fields] AND ("increase"[All Fields] OR "increased"[All Fields] OR "increases"[All Fields] OR "increasing"[All Fields] OR "increasings"[All Fields]) AND "long"[All Fields] AND ("term birth"[MeSH Terms] OR ("term"[All Fields] AND "birth"[All Fields]) OR "term birth"[All Fields] OR "term"[All Fields]) AND ("maintenance"[MeSH Terms] OR "maintenance"[All Fields] OR "maintenances"[All Fields]) AND ("adverse effects"[MeSH Subheading] OR ("adverse"[All Fields] AND "effects"[All Fields]) OR "adverse effects"[All Fields] OR ("side"[All Fields] AND "effects"[All Fields]) OR "side effects"[All Fields])</QueryTranslation></eSearchResult>


Explanation: Let me fetch the remaining relevant abstracts and also try to access some German-language resources and clinical guidelines.

curl -sL "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&id=38643950,32656861,20806989,28953649&rettype=abstract&retmode=xml" 2>&1 | python3 -c "
import sys, xml.etree.ElementTree as ET
tree = ET.parse(sys.stdin)
root = tree.getroot()
for article in root.findall('.//PubmedArticle'):
    pmid = article.find('.//PMID').text
    title = article.find('.//ArticleTitle').text
    abstract_parts = article.findall('.//AbstractText')
    full_abstract = ' '.join([a.text or '' for a in abstract_parts])
    journal = article.find('.//Journal/Title').text
    year = article.find('.//PubDate/Year').text
    print(f'=== PMID: {pmid} | {journal} ({year}) ===')
    print(f'Title: {title}')
    print(f'Abstract: {full_abstract[:600]}')
    print()
" 2>&1


Output:
=== PMID: 38643950 | Toxicology and applied pharmacology (2024) ===
Title: Dysregulation of adipogenesis and disrupted lipid metabolism by the antidepressants citalopram and sertraline.
Abstract: Selective Serotonin Reuptake Inhibitors (SSRIs) are widely used medications for the treatment of major depressive disorder. However, long-term SSRI use has been associated with weight gain and altered lipid profiles. These findings suggest that SSRIs may have negative effects on metabolism. Exposure to certain chemicals called 'obesogens' is known to promote lipid accumulation and obesity by modulating adipogenesis. Here, we investigated whether citalopram (CIT) and sertraline (SER) interfere with the process of adipogenesis, using human mesenchymal stem cells (MSCs) in a 2D and a 3D model. As

=== PMID: 32656861 | British journal of clinical pharmacology (2021) ===
Title: Strategies to reduce use of antidepressants.
Abstract: Antidepressant prescribing has increased year on year since the introduction of the selective serotonin reuptake inhibitors (SSRIs) in the 1980s. More than 10% of adults in England are now taking antidepressants for depression/anxiety, with a median length of treatment of more than 2 years, but antidepressants can cause side effects and withdrawal symptoms which increase with longer use. Surveys of antidepressant users suggest 30-50% have no evidence-based indication to continue, but coming off antidepressants is often difficult due to fears of relapse, withdrawal symptoms and a lack of psycho

=== PMID: 20806989 | CNS drugs (2010) ===
Title: Escitalopram: a review of its use in the management of major depressive disorder in adults.
Abstract: Escitalopram (escitalopram oxalate; Cipralex, Lexapro), a selective serotonin reuptake inhibitor (SSRI) indicated for the treatment of major depressive disorder (MDD), demonstrates a highly selective and potent, dose-dependent inhibition of the human serotonin transporter, inhibiting serotonin reuptake into presynaptic nerve terminals and thus increasing serotonergic activity in the CNS. With regard to primary endpoints (such as improved scores on the Montgomery-Asberg Depression Rating Scale [MADRS] and the Hamilton Depression Rating Scale [HAM-D]), escitalopram was generally more effective t

=== PMID: 28953649 | Medicine (2017) ===
Title: Efficacy of escitalopram monotherapy in the treatment of major depressive disorder: A pooled analysis of 4 Chinese clinical trials.
Abstract: This study aimed to evaluate the efficacy of escitalopram monotherapy in the treatment of major depressive disorder (MDD) on the basis of pooled data analysis of 4 Chinese clinical trials.A total of 649 outpatients with MDD score of ≥18 at the 17-item Hamilton Depression Rating Scale (HAMD17) were included across 4 eligible studies. Patients were treated with 10 mg/day escitalopram for 2 weeks, and then 20 mg/day escitalopram was administered if the clinical response was poor.The change in total HAMD17 score was significantly greater in moderate MDD group than in other subgroups (P < .001), bu


Output:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE eSearchResult PUBLIC "-//NLM//DTD esearch 20060628//EN" "https://eutils.ncbi.nlm.nih.gov/eutils/dtd/20060628/esearch.dtd">
<eSearchResult><Count>8</Count><RetMax>8</RetMax><RetStart>0</RetStart><IdList>
<Id>31977667</Id>
<Id>29588433</Id>
<Id>29034101</Id>
<Id>23094470</Id>
<Id>22122658</Id>
<Id>21477024</Id>
<Id>17627739</Id>
<Id>16528138</Id>
</IdList><TranslationSet><Translation>     <From>escitalopram</From>     <To>"escitalopram"[Supplementary Concept] OR "escitalopram"[All Fields] OR "escitalopram"[MeSH Terms] OR "escitalopram's"[All Fields]</To>    </Translation><Translation>     <From>sexual dysfunction</From>     <To>"sexual dysfunctions, psychological"[MeSH Terms] OR ("sexual"[All Fields] AND "dysfunctions"[All Fields] AND "psychological"[All Fields]) OR "psychological sexual dysfunctions"[All Fields] OR ("sexual"[All Fields] AND "dysfunction"[All Fields]) OR "sexual dysfunction"[All Fields] OR "sexual dysfunction, physiological"[MeSH Terms] OR ("sexual"[All Fields] AND "dysfunction"[All Fields] AND "physiological"[All Fields]) OR "physiological sexual dysfunction"[All Fields]</To>    </Translation><Translation>     <From>prevalence</From>     <To>"epidemiology"[Subheading] OR "epidemiology"[All Fields] OR "prevalence"[All Fields] OR "prevalence"[MeSH Terms] OR "prevalance"[All Fields] OR "prevalences"[All Fields] OR "prevalence's"[All Fields] OR "prevalent"[All Fields] OR "prevalently"[All Fields] OR "prevalents"[All Fields]</To>    </Translation></TranslationSet><QueryTranslation>("escitalopram"[Supplementary Concept] OR "escitalopram"[All Fields] OR "escitalopram"[MeSH Terms] OR "escitalopram s"[All Fields]) AND ("sexual dysfunctions, psychological"[MeSH Terms] OR ("sexual"[All Fields] AND "dysfunctions"[All Fields] AND "psychological"[All Fields]) OR "psychological sexual dysfunctions"[All Fields] OR ("sexual"[All Fields] AND "dysfunction"[All Fields]) OR "sexual dysfunction"[All Fields] OR "sexual dysfunction, physiological"[MeSH Terms] OR ("sexual"[All Fields] AND "dysfunction"[All Fields] AND "physiological"[All Fields]) OR "physiological sexual dysfunction"[All Fields]) AND ("epidemiology"[MeSH Subheading] OR "epidemiology"[All Fields] OR "prevalence"[All Fields] OR "prevalence"[MeSH Terms] OR "prevalance"[All Fields] OR "prevalences"[All Fields] OR "prevalence s"[All Fields] OR "prevalent"[All Fields] OR "prevalently"[All Fields] OR "prevalents"[All Fields]) AND "dose"[All Fields]</QueryTranslation></eSearchResult>


Output:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE eSearchResult PUBLIC "-//NLM//DTD esearch 20060628//EN" "https://eutils.ncbi.nlm.nih.gov/eutils/dtd/20060628/esearch.dtd">
<eSearchResult><Count>0</Count><RetMax>0</RetMax><RetStart>0</RetStart><IdList/><TranslationSet><Translation>     <From>escitalopram</From>     <To>"escitalopram"[Supplementary Concept] OR "escitalopram"[All Fields] OR "escitalopram"[MeSH Terms] OR "escitalopram's"[All Fields]</To>    </Translation><Translation>     <From>emotional</From>     <To>"emoting"[All Fields] OR "emotion's"[All Fields] OR "emotions"[MeSH Terms] OR "emotions"[All Fields] OR "emotion"[All Fields] OR "emotional"[All Fields] OR "emotive"[All Fields]</To>    </Translation><Translation>     <From>blunting</From>     <To>"blunt"[All Fields] OR "blunted"[All Fields] OR "blunting"[All Fields] OR "blunts"[All Fields]</To>    </Translation><Translation>     <From>apathy</From>     <To>"apathy"[MeSH Terms] OR "apathy"[All Fields]</To>    </Translation></TranslationSet><QueryTranslation>("escitalopram"[Supplementary Concept] OR "escitalopram"[All Fields] OR "escitalopram"[MeSH Terms] OR "escitalopram s"[All Fields]) AND ("emoting"[All Fields] OR "emotion s"[All Fields] OR "emotions"[MeSH Terms] OR "emotions"[All Fields] OR "emotion"[All Fields] OR "emotional"[All Fields] OR "emotive"[All Fields]) AND ("blunt"[All Fields] OR "blunted"[All Fields] OR "blunting"[All Fields] OR "blunts"[All Fields]) AND ("apathy"[MeSH Terms] OR "apathy"[All Fields]) AND "SSRI"[All Fields]</QueryTranslation><WarningList><OutputMessage>No items found.</OutputMessage></WarningList></eSearchResult>


Explanation: Let me now fetch the sexual dysfunction papers and the key escitalopram review paper, plus try to get the full abstract of the 2017 Chinese pooled analysis and the 2010 CNS Drugs review.

curl -sL "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&id=31977667,29588433,29034101,23094470,22122658,21477024,17627739,16528138&rettype=abstract&retmode=xml" 2>&1 | python3 -c "
import sys, xml.etree.ElementTree as ET
tree = ET.parse(sys.stdin)
root = tree.getroot()
for article in root.findall('.//PubmedArticle'):
    pmid = article.find('.//PMID').text
    title = article.find('.//ArticleTitle').text
    abstract_parts = article.findall('.//AbstractText')
    full_abstract = ' '.join([a.text or '' for a in abstract_parts])
    journal = article.find('.//Journal/Title').text
    year = article.find('.//PubDate/Year').text
    print(f'=== PMID: {pmid} | {journal} ({year}) ===')
    print(f'Title: {title}')
    print(f'Abstract: {full_abstract[:500]}')
    print()
" 2>&1

curl -sL "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&id=20806989,28953649&rettype=abstract&retmode=xml" 2>&1 | python3 -c "
import sys, xml.etree.ElementTree as ET
tree = ET.parse(sys.stdin)
root = tree.getroot()
for article in root.findall('.//PubmedArticle'):
    pmid = article.find('.//PMID').text
    title = article.find('.//ArticleTitle').text
    abstract_parts = article.findall('.//AbstractText')
    full_abstract = ' '.join([a.text or '' for a in abstract_parts])
    journal = article.find('.//Journal/Title').text
    year = article.find('.//PubDate/Year').text
    print(f'=== PMID: {pmid} | {journal} ({year}) ===')
    print(f'Title: {title}')
    print(f'Abstract: {full_abstract}')
    print()
" 2>&1


Output:
=== PMID: 31977667 | Menopause (New York, N.Y.) (2020) ===
Title: Lights on MsFLASH: a review of contributions.
Abstract: The Menopause Strategies: Finding Lasting Answers for Symptoms and Health clinical trials network was funded by the National Institutes of Health to find new ways to alleviate the most common, bothersome menopausal symptoms by designing and conducting multiple concurrent clinical intervention studies, accommodating a wide scope of populations and intervention strategies. Trials were conducted in Boston, Indianapolis, Minneapolis, Oakland, Philadelphia, and Seattle, with the Data Coordinating Cen

=== PMID: 29588433 | East Asian archives of psychiatry : official journal of the Hong Kong College of Psychiatrists = Dong Ya jing shen ke xue zhi : Xianggang jing shen ke yi xue yuan qi kan (2018) ===
Title: Sexual Dysfunction in Patients with Antidepressant-treated Anxiety or Depressive Disorders: a Pragmatic Multivariable Longitudinal Study.
Abstract: To investigate early evolution, tolerability, and predictors of antidepressant-emergent sexual dysfunction in patients with anxiety or depressive disorder. Patients with anxiety or depressive disorders who were prescribed antidepressant monotherapy (mirtazapine, sertraline, desvenlafaxine, escitalopram, or fluoxetine) at the discretion of the treating clinician were recruited from July 2012 to June 2014 from a hospital outpatient service. All were free of psychotropic medication for least 1 mont

=== PMID: 29034101 | BJPsych open (2017) ===
Title: Lamotrigine-induced sexual dysfunction and non-adherence: case analysis with literature review.
Abstract: Optimal anti-epileptic drug (AED) treatment maximises therapeutic response and minimises adverse effects (AEs). Key to therapeutic AED treatment is adherence. Non-adherence is often related to severity of AEs. Frequently, patients do not spontaneously report, and clinicians do not specifically query, critical AEs that lead to non-adherence, including sexual dysfunction. Sexual dysfunction prevalence in patients with epilepsy ranges from 40 to 70%, often related to AEDs, epilepsy or mood states.

=== PMID: 23094470 | International journal of psychiatry in medicine (2012) ===
Title: Sexual arousal difficulties in women treated with antidepressants: a comparison between escitalopram and fluoxetine.
Abstract: To compare the risk of sexual arousal difficulties between two groups of depressed female patients in remission who were treated with either escitalopram or fluoxetine. Associated factors were also examined. This was a cross-sectional study involving 112 female patients attending the psychiatric clinic, University Kebangsaan Malaysia Medical Centre (UKMMC) with depressive disorders as assessed by using the Structured Clinical Interview for DSM-IV (SCID), who had been in remission for the previou

=== PMID: 22122658 | International journal of psychiatry in clinical practice (2012) ===
Title: Hypoactive sexual desire among depressed female patients treated with selective serotonin reuptake inhibitors: a comparison between escitalopram and fluoxetine.
Abstract: To determine the risk of hypoactive sexual desire (HSD) in depressed female patients treated with selective serotonin reuptake inhibitors, comparing escitalopram and fluoxetine. The associated factors were also examined. This cross-sectional study involved 112 female patients (56 in each group) diagnosed to have major depressive disorder who were in remission (as defined by the Diagnostic and Statistical Manual-IV (DSM-IV) in the past 2 months and the Montgomery-Asberg Depression Rating Scale (M

=== PMID: 21477024 | The journal of sexual medicine (2012) ===
Title: Female sexual dysfunction in patients treated with antidepressant-comparison between escitalopram and fluoxetine.
Abstract: Selective serotonin reuptake inhibitor is one of the most widely used antidepressant and commonly associated with female sexual dysfunction (FSD). This study compares the prevalence of FSD between patients on escitalopram and fluoxetine. The risk factors for FSD were also examined. A cross-sectional study involved 112 female depressed patients (56 each group) who were in remission (as defined in the fourth edition of Diagnostic and Statistical Manual of Mental Disorders [DSM-IV] during the past

=== PMID: 17627739 | The journal of sexual medicine (2007) ===
Title: Changes in sexual functioning associated with duloxetine, escitalopram, and placebo in the treatment of patients with major depressive disorder.
Abstract: Depression and antidepressant therapy have been associated with sexual dysfunction in short-term and point-prevalence trials. This report describes effects of duloxetine and escitalopram on sexual functioning during acute and long-term treatment of major depressive disorder (MDD). In this 8-month, double-blind, placebo-controlled study, adult outpatients with Diagnostic and Statistical Manual of Mental Disorders, 4th Edition (DSM-IV)-defined MDD were randomized to duloxetine 60 mg/day (N = 273;

=== PMID: 16528138 | International clinical psychopharmacology (2006) ===
Title: A double-blind, randomized, parallel-group, flexible-dose study to evaluate the tolerability, efficacy and effects of treatment discontinuation with escitalopram and paroxetine in patients with major depressive disorder.
Abstract: This multinational, randomized, double-blind, flexible-dose study evaluated the short- and long-term antidepressant tolerability and efficacy of escitalopram and paroxetine. Tolerability was assessed by monitoring adverse events throughout the study, and discontinuation events during brief treatment interruption and tapered withdrawal. Discontinuation-emergent effects were evaluated in two separate double-blind periods. First, to mimic the consequences of non-compliance, patients were randomized