---
title: "Update Settings"
method: POST
path: "/mcp/tools/update_settings"
tags: ["mcp"]
---

# Update Settings

`POST /mcp/tools/update_settings`

## Request

- Base URL: `https://api.iridiumhqmcp.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.iridiumhqmcp.com/mcp/tools/update_settings`
- Auth: HTTP bearer

Change the user's profile, targeting and limits. Persists immediately, sends nothing.

Every field is optional and only the ones passed are changed; each field's own description
says what it does. Pipelines read these settings, so this is how "only comment on AI posts"
or "cap me at 5 a day" gets applied.

This is also how you clear a blocked pipeline. When a run fails for a missing setting, the
error names the field: ask the user for it in plain language, send it here, then retry the
run. Never invent a value the user did not give you.

## Request body

- SettingsUpdate: Every user-writable setting, in one model — the single description of these columns. Both transports bind to this: POST /users/setup (web) and POST /mcp/tools/update_settings (MCP + the in-app agent). Field names are the column names on purpose, so the field an error names — outreach_blocker in routers/shared/pipelines.py prints raw column names — is the argument an agent sends back to fix it, with nothing to translate in between. The descriptions are not decoration: fastapi-mcp builds the remote MCP input schema from this model (main.py FastApiMCP), and services/agent_tools reads model_json_schema() for the in-app agent, so this text is what both agents see. Plain `#` comments are invisible to both. Every field is optional; only the ones passed are written (model_dump(exclude_none=True)).
  - `current_role` string, nullable: The user's role and company, e.g. 'Founder at Acme'.
  - `credential_lead` string, nullable: One or two sentences on why the user is credible. Opens outreach messages.
  - `networking_goal` string, nullable: What the user wants from the people they reach, e.g. 'find design partners'.
  - `outreach_intent` string, nullable: Message strategy: 'sell', 'connection' or 'referral'.
  - `style_examples` string[], nullable: Up to 3 approved note texts to imitate.
  - `target_personas` string[], nullable: Job titles to search for, e.g. ['VP of Engineering', 'Founder'].
  - `search_keywords` string[], nullable: Keywords searched alongside the personas, e.g. ['AI platform'].
  - `target_cities` string[], nullable: Cities to search in, e.g. ['San Francisco', 'New York'].
  - `target_countries` string[], nullable: Countries to search in, e.g. ['United States'].
  - `daily_outreach_cap` integer, nullable: Connection requests per day, clamped to 25.
  - `comment_topics` string[], nullable: Subjects searched when finding posts to comment on.
  - `daily_comment_cap` integer, nullable: Comments per day, clamped to 25.
  - `network_post_pct` integer, nullable: Percent of comments sourced from in-network posts; the rest come from keyword search.
  - `new_position_pct` integer, nullable: Percent of the daily cap allowed for new-role announcement posts.
  - `comment_author_countries` string[], nullable: Only comment on posts by authors in these countries. Empty means no filter.
  - `filter_cert_posts` boolean, nullable: Skip 'I just earned/completed/certified' posts.
  - `filter_hiring_posts` boolean, nullable: Skip 'we're hiring / open role' posts.
  - `filter_job_seeking_posts` boolean, nullable: Skip 'open to work / looking for my next role' posts.
  - `comment_hiring_only` boolean, nullable: Only comment on posts tagged #hiring — opt-in, the inverse of filter_hiring_posts.
  - `content_topics` string[], nullable: Subjects the user's own posts are drafted about.
  - `voice_dna` string, nullable: Writing rules applied to every draft, e.g. 'no buzzwords, direct, max 2 sentences'.
  - `onboarding_goals` string[], nullable: Which pipelines are active. Any of ['commenting', 'content', 'outreach'].
  - `data_retention_days` integer, nullable: Days before scraped profiles and drafts are purged.

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/iridiumhqmcp/apis/iridium-linkedin-for-ai-agents.md) · [All operations](https://skmtc.dev/iridiumhqmcp/apis/iridium-linkedin-for-ai-agents/llms.txt) · [OpenAPI document](https://skmtc.dev/iridiumhqmcp/apis/iridium-linkedin-for-ai-agents/revisions/b9f5e020543c?raw)
