Integrations & Getting Started

Sign up. Run.
Or plug an agent in.

Niche is the editorial intelligence MCP for individuals: two surfaces over the same engine. A human-facing content desk for creators, and a 25-tool MCP server for AI agents (Claude Desktop, Claude Code, Cursor, your own custom agent). Signal, angle, draft, render, publish, with verifier-checked claims and source provenance on every output. This page walks both audiences end-to-end.

Niche is a desk: signal in, story pick, angle pick, platform-native content, review, publish. The desk picks the story and the angle before writing, so you spend your attention on judgment, not drafting. Every tool response carries its sources, an ungrounded-claim flag, and source-diversity + recency checks — provenance on every output. The only editorial MCP that ships receipts.

Same engine, two surfaces. The web app at nicheangle.com/desk is the human-facing version; the MCP server at api.nicheangle.com/mcp is the agent-facing version. Both share your brand profile, voice profile, credit balance, and audit trail.

For users

Your first run, in three minutes

Sign up at nicheangle.com/login. Three days, 2,000 credits, no card. That covers about nine typical runs, enough to know if Niche fits your beat.

From /desk, type a niche in two to five words (“strength training for beginners over 40” beats “fitness”). Pick at least one platform. Hit Run the desk.

Niche composer at /desk: niche input field with platform checkboxes and a Run the desk button
The composer at /desk. Two to five words is the sweet spot.

The desk runs in three decisions. First, pick from five to seven story candidates. Next, pick the angle (contrarian, analytical, or the underrated read). Last, review and edit drafts inline. Nothing publishes until you press File.

Story selection: five to seven candidate story cards with sources, tags, and an Open button
Pick the story. Each card shows sources, tags, and a one-line summary.

Set your brand kit

The brand kit threads visual + voice identity through every render. Drop a URL or a folder of files at /brand-kit and Niche extracts palette, fonts, logo, tagline, and voice notes in one pass. Every field is editable inline once it lands.

Brand kit page showing the URL ingest input, file drop zone, and extracted brand fields below
/brand-kit: drop a URL or files, edit any field inline once the ingest engine finishes.

Studio and Operator tiers support multiple brand kits. The composer shows a brand picker when you have more than one; the pipeline threads the chosen brand through signal discovery, draft generation, and render.

Train a voice profile

The voice profile is how Niche writes like you. Paste 3-5 posts you've written at /voice and Niche extracts tone words, audience context, and a banned-phrases list. Threaded into every draft call thereafter.

The voice profile and the brand kit are independent layers. Brand kit = visual + boilerplate + signature phrases. Voice profile = the writer's actual style. A multi-author team uses one brand kit and multiple voice profiles.

For agents

Install the MCP server

Niche exposes a Model Context Protocol (MCP) server at https://api.nicheangle.com/mcp. Any MCP-aware agent (Claude Desktop, Claude Code, Cursor, or your own) drives the full editorial pipeline through the same 25 tools. Two ways to connect — the one-click way needs no token at all.

The one-click way: connect by URL (no token)

If your client supports remote connectors (Claude Desktop's Add custom connector, for example), just paste the server URL:

https://api.nicheangle.com/mcp

Your client registers itself and sends you to sign in with your Niche account. Approve the connection and you're live — nothing to copy, rotate, or paste. This is the path for non-developers: add the URL, sign in, done. (Under the hood it's standard OAuth 2.1 with dynamic client registration; discovery is at /.well-known/mcp.json.)

Connected? Finish setup — connect a channel to publish and teach Niche your voice — at nicheangle.com/start.

The token way: for Claude Code, CLIs, and scripts

Headless clients use a Personal Access Token instead. Issue one at /settings/api-keys. Tokens are shown once at creation; rotate or revoke from the same page. Operator-tier accounts see per-PAT credit-burn telemetry so a runaway agent loop is detectable before it drains your balance.

Claude Code

claude mcp add --transport http niche https://api.nicheangle.com/mcp \ --header "Authorization: Bearer niche_sk_YOUR_TOKEN"

Or in a project .mcp.json:

{ "mcpServers": { "niche": { "type": "http", "url": "https://api.nicheangle.com/mcp", "headers": { "Authorization": "Bearer niche_sk_YOUR_TOKEN" } } } }

Claude Desktop

Settings → Connectors → Add custom connector. Paste https://api.nicheangle.com/mcp, choose Streamable HTTP, and add your PAT as the bearer token. The 25 tools appear in the tool picker.

Cursor

In ~/.cursor/mcp.json, add the server with just url + headers (no transport field):

{ "mcpServers": { "niche": { "url": "https://api.nicheangle.com/mcp", "headers": { "Authorization": "Bearer niche_sk_YOUR_TOKEN" } } } }

Discovery

RFC-style discovery is at /.well-known/mcp.json. The response carries the canonical MCP URL, auth scheme, and protocol version so agents that support discovery probes can find the surface without a pre-known path.

25-tool reference

Workflow tools, not REST primitives. Each returns structured intelligence (judgment fields + provenance + trust metrics), not text blobs. Grouped by the lifecycle stage they belong to:

Discovery

niche_signal_scan
Start a run. Takes a niche string + optional brand_id; returns a session_id.
niche_intelligence_query
Answer an analyst-shaped question (“the 10 biggest developments this week”, “3 non-obvious narratives to publish”) as the deliverable, not a single post. Returns a ranked slate plus engine-grounded, fact-verified narratives — the same answer the desk gets. Non-blocking: poll session_state.
niche_session_state
Poll for state. Sparse by default: only the fields you ask for. Returns full state at terminal checkpoints.
niche_list_sessions
Find a session by niche text or recent activity if you lost the session_id.

Angle

niche_angle_propose
Generate 3 frame-aware angles for a picked story. Returns hooks, tensions, CTAs, plus a recommended_angle_id scored against your brand profile. Pass a custom_framing to write your own angle.

Draft

niche_draft_direct
Draft straight from the creator's own take or a URL to repurpose — no research scan. The bring-your-own-content / product-led entry. Optional image=photo|card produces the visual in the same run.
niche_draft_create
Produce platform-native content for a picked angle. LinkedIn / X / longform / Instagram, multi-platform in one call.
niche_draft_revise
Patch any subset of fields on a draft (hook, caption, hashtags, slide text). Returns the updated content + a diff.
niche_draft_publish
Ship to a connected social account. Direct publish is live for LinkedIn and X; Instagram is coming soon. For that, the desk returns the finished post to copy or export. dry_run=true by default; commit requires explicit second call. Verifier blocks override dry-run state.

Brand

niche_brand_profile_set
Persist or update editorial discipline: voice rules, lexicon, framing allowlist, verifier overrides, source preferences.
niche_brand_profile_get
Read the active profile or list profiles for the authenticated user.

Brand kit

niche_brand_kit_ingest
Pull palette, fonts, logo, tagline, voice notes from a URL or dropped files. Vision-classified and merged into the kit. Async — returns an ingest_id.
niche_brand_kit_ingest_status
Poll an async brand-kit ingest by ingest_id for its detected[]/skipped[]/diff[] report (done | failed | ingesting).
niche_brand_kit_update
Inline-edit any kit field (color hex, tagline, signature/forbidden phrases, CTA, endcard preferences).
niche_brand_kit_guided_setup
Return an intent-shaped question chain for first-touch setup. The agent walks the user through brand setup in natural conversation.
niche_voice_profile_ingest
Extract a voice profile from posts the user wrote: tone words, audience context, banned phrases.

Render

niche_render_image_card
Generate the branded image card for an output (atmospheric background + on-brand endcard). Routes across image providers automatically.
niche_render_reel
Generate the vertical reel: stills + Ken Burns motion + voiceover + music + caption overlay, composited to 9:16. Captions can reveal phrase-by-phrase in lockstep with the voice.
niche_reuse_asset
Copy an image that already exists on one output onto another cell — instant + free, no regen. Use instead of render_image_card when the user wants “the same image” on a second surface.
niche_attach_image
Attach a user-supplied photo (the creator's own product shot) to a post as its image — free, no render spend.

Session

niche_session_revert
Revert a run to an earlier checkpoint (e.g. back to story pick) to take a different path without starting over.
niche_session_cancel
Cancel an in-flight run and release any held credits.
niche_session_export
Export a finished run's outputs (copy + rendered assets) for download or hand-off.
niche_add_output
Add another platform cell to an existing run without re-running the desk (e.g. add an X thread to a LinkedIn run).

Account

niche_whoami
One read-only call: the authenticated account, plan, and credit balance; the server version + endpoint + live tool count; the capability map (tools grouped by band + the recommended flow); and the brand state — so an agent knows before a run whether a brand profile / kit / voice will shape the output.

A typical agent run

The five-call shape that covers most workflows. Brand-binding is optional but recommended: the pipeline threads the brand profile through every stage when you set it.

# 1. Optional: bind a brand profile so voice/lexicon/framing thread through niche_brand_profile_set(brand_id="mybrand", profile={...}) # 2. Start the scan niche_signal_scan(niche="ai policy and platform economics", brand_id="mybrand") # 3. Poll until stories are ready, then propose angles for a picked story niche_session_state(session_id="...") niche_angle_propose(session_id="...", story_id="...") # 4. Pick an angle, draft, then publish (dry_run=true is the default) niche_draft_create(session_id="...", angle_id="...") niche_draft_publish(session_id="...", platform="linkedin", dry_run=true) # 5. After human confirms the dry_run output, commit niche_draft_publish(session_id="...", platform="linkedin", dry_run=false)

Every tool response carries a trust block: verifier audits with severity, source faithfulness scores, ungrounded-claim lists, diversity and recency checks, brand-conflict flags. Agents should read the trust block before passing output downstream.

Troubleshooting

The most common errors and what they mean. Each answer is structured the way an agent would surface it back to a user.

What does a 401 from the MCP server mean?

Your PAT is invalid, expired, or revoked. Issue a new one at /settings/api-keys and reinstall the MCP server with the new token. PATs are shown once at creation; rotate proactively if it might have been leaked.

What does a 402 from the MCP server mean?

Insufficient credits. The pre-action estimate exceeded your available balance. Top up at /settings/usage (5K/10K/20K packs) or upgrade your plan. Failed runs are refunded automatically, so 402 only fires when you genuinely don't have the budget for the estimated worst-case run.

What does a 429 from the MCP server mean?

Rate-limited. Either your PAT hit its per-minute request cap (default 60 req/min, configurable on Operator), your hourly credit-burn cap (default 2,000 credits/hour), or your plan's concurrent-session cap (Free 5, Creator 10, Studio 20, Operator 25). The error body includes scope + retry_after_sec so the agent can back off correctly.

Why is my brand profile not affecting the output?

Either the session was started without brand_id, or the brand_id was unknown. Pass brand_id= explicitly on niche_signal_scan, or set a default brand at /settings — the pipeline picks the default when brand_id is omitted. Use niche_brand_profile_get to confirm the profile is persisted.

Why are my image card renders coming back blurry?

Standard image cards render at a balanced quality tier. If you need cinematic polish for a hero asset, opt into premium quality at the review step (the toggle next to the render button) for a higher-fidelity render. Premium image cards cost 100 credits vs 30 for standard.

Why does the agent see different content than I do in the web app?

Both surfaces call the same backend. If you see a mismatch, the most common cause is the agent is reading a stale session_state cache — call niche_session_state again to force a refresh. The web UI auto-refreshes on visibility changes; the agent has to poll.

Trust + safety

Publish defaults to dry_run=true; the commit step requires an explicit second call. Direct one-click publish is live for LinkedIn and X today; Instagram is coming soon, so for now the desk returns the finished post to copy or export. Verifier-blocked drafts refuse to publish regardless of dry-run state: the trust block is enforcement, not advisory. Per-PAT credit-burn limits cap how fast a runaway agent loop can drain your balance. Token revocation at /settings/api-keys is instant.

Questions? Email hello@nicheangle.com - first reply within one business day.