Connect Niche: Your niche, followed for you and your agent gets 25 tools, among them niche_add_output, niche_angle_propose, niche_attach_image. It answers at https://api.nicheangle.com/mcp over streamable HTTP, and it listed its tools to an anonymous client, so no sign-in was needed for that. Our probes reached it 10 of 10 times since 5 September 2026; the last check, on 18 October 2026, succeeded.
Find the stories worth writing about: discover emerging stories, rank the angle, draft from sources.
Description as the publisher wrote it.
| Tool | What it does |
|---|---|
niche_add_output | Add an output cell to a session that's already reached CP3. Use this when the user picked a small initial cell set, previewed the drafts, and now wants another surface (e.g. the session started with linkedin:text_post and the user wants to Inputs: session_id, cell, remove_cell, estimate_only |
niche_angle_propose | Niche content angles: pick a story from the discovery slate and surface the strongest angles worth publishing, the editorial-judgment step that turns a development into a piece. Returns five angles[], each with frame, hook, tension, cta_dir Inputs: session_id, story_id, regenerate, lens, custom_framing |
niche_attach_image | Upload or attach a user-supplied or externally-designed image (bring-your-own asset) to a post: the creator's own visual (a product shot, their actual work, a card designed elsewhere) instead of an AI-generated image (niche_render_image_car Inputs: session_id, cell, upload_ref, image_url, image, image_chunk |
niche_brand_kit_guided_setup | Return a structured question chain the agent walks the user through to populate the BrandKit, VoiceProfile, and (optionally) BrandProfile. Each entry carries an `intent` describing what the answer is for (so the agent paraphrases in its own Inputs: brand_id, include_filled |
niche_brand_kit_ingest | Auto-populate the user's BrandKit (palette / fonts / tagline / logo / wordmark / boilerplate / voice notes) from files, a URL, or pasted text. Additive by default: fills empty fields, leaves populated ones alone. Idempotent: re-running the Inputs: files, text, brand_id, brand_name, replace |
niche_brand_kit_ingest_status | Poll the result of an async niche_brand_kit_ingest. Pass the `ingest_id` it returned. status: 'ingesting' (keep polling) | 'done' (response carries the full kit plus detected[]/skipped[]/errors[]/diff[]/left_unchanged_because_populated[]) | Inputs: ingest_id |
niche_brand_kit_update | Set specific BrandKit fields by name. The write path for the structured fields (tagline / boilerplate / voice_notes / forbidden_phrases / signature_phrases / endcard preferences / video voice preference / colors / fonts) without going throu Inputs: brand_id, archive, archive_scope, acknowledge, brand_name, name |
niche_brand_profile_get | Read back the persisted brand profile without modifying it. Use it to confirm a profile landed as expected, to check the active profile a run is bound to, or to inspect the current shape before a partial update. Pass `brand_id` to read one Inputs: brand_id |
niche_brand_profile_set | Set or update the persisted brand profile for a brand. The profile is a structured JSON document applied across every pipeline stage: voice rules, banned terms, canonical vocabulary, framing allowlist, channel config, compliance disclosures Inputs: brand_id, profile, schema_version |
niche_draft_create | Niche draft content: lock the chosen angle and turn it into platform-native social drafts (LinkedIn post, X thread, Instagram, newsletter/long-form), ready to review and publish, the downstream payoff once the story and angle are decided. R Inputs: session_id, angle_id, brand_id, estimate_only |
niche_draft_direct | Draft the creator's own take or product straight into posts, with no research scan and no story/angle picks. Use this for product-led or bring-your-own-content work: a specific thing to say ('new walnut dining table, live edge, $2,800') or Inputs: take, target_outputs, source_url, source_text, source_title, brand_id |
niche_draft_publish | Publish a single output to its platform. Defaults to dry_run=true: returns the would-publish payload plus any verifier blocks without actually filing. Set dry_run=false and provide an idempotency_key to commit. The commit is the only irreve Inputs: session_id, platform, dry_run, idempotency_key, acknowledge_surfaced, acknowledge_publish_cost |
niche_draft_revise | Applies the values you pass to a specific output. Accepts any subset of the output's fields: caption, hashtags, or partial script updates (hook / body / cta / hook_tweet / body_tweets / title / subtitle / pull_quote / cover_slide / slides / Inputs: output_id, regenerate_hooks, caption, hashtags, script_updates, apply_hook_variant_index |
niche_intelligence_query | Niche (nicheangle.com) research and analysis: answer an analyst-shaped question over fresh-scanned sources and get an intelligence answer as the deliverable, not a single post. Use for: 'the 10 biggest developments in X this week', 'what's Inputs: subject, count, window, recency_strict, source_quality, lens |
niche_list_sessions | Enumerate the user's recent sessions. Returns id, niche_input, status, `outcome`, target_platforms, picked story/angle ids, and created/updated_at for each. Use this when the session_id has been lost (across agent invocations, hours of work Inputs: limit, offset, status_filter, niche_contains, brand_id, include_outputs |
niche_render_image_card | Render a visual onto a post at CP3, or edit an existing image. scope: 'full' (default) renders a new visual and requires `background`. 'recomposite' re-composites new text, color, or size over the retained background at no charge. 'restore' Inputs: session_id, scope, background, svg, design_concept, design_color |
niche_render_reel | Render a 9:16 vertical reel for a session at CP3. A per-beat script (typically 4-7 beats) is composited into one video: stills, voiceover, motion, caption overlays, and an endcard (~30-120s). Reels are delivered as a downloadable file for t Inputs: session_id, scope, beat_direction, captions_enabled, endcard_text, endcard_outro |
niche_reuse_asset | Copy an image that already exists on one output onto another cell, instant and free (no regeneration, no credits). Use this when the user wants 'the same image' on a second surface ('use the LinkedIn image on X', 'same picture on the newsle Inputs: session_id, from_cell, to_cell |
niche_session_cancel | Cancel a running session. Marks status=failed with an error_message ('cancelled by user' or the caller's reason), and stops the in-flight orchestrator if any. Used when you want to free a slot under the concurrent-session cap without deleti Inputs: session_id, reason |
niche_session_export | Export a session as a structured calendar artifact preserving session_id and per-story story_id traceability. Use after a niche_signal_scan when you want a metadata-rich content backlog instead of running individual pieces end-to-end. Outpu Inputs: session_id, format |
niche_session_revert | Revert a session back to an earlier checkpoint. Use when the user (or you) decided the picked story / angle isn't the right one and you want to re-pick without starting a new scan. to='story': cancels current generation, returns to CP1_AWAI Inputs: session_id, to, acknowledge_discard |
niche_session_state | Universal poll endpoint: read the full current state of a session. Returns status, ranked stories, picked story_id, generated angles, picked angle_id, draft outputs (with trust fields), and an elicitation hint for whatever decision is next. Inputs: session_id, view, include_unpicked, wait_until, wait_for, wait |
niche_signal_scan | Niche (nicheangle.com) story discovery: find stories worth writing about, then draft and publish platform-native social content (LinkedIn, X threads, Instagram, newsletter) from them. This is story discovery, not content generation: Niche r Inputs: niche, recency, recency_strict, source_quality, density, target_outputs |
niche_voice_profile_ingest | Extract voice primitives (register / sentence rhythm / lexicon preferences / punctuation habits) from post-shaped text and persist onto the user's VoiceProfile. The voice primitives thread into content generation so generated copy matches t Inputs: posts, url, archetype, overwrite, brand_id |
niche_whoami | List the full tool catalog and orient the agent, in one read-only call. Returns every registered tool name and the live tool count, the account (plan and credit balance), a capability map (tools grouped into bands: discover, decide, draft, Inputs: include_test, include_all_brands, include_brand_assets |
Every block below points at https://api.nicheangle.com/mcp. Pick your client and copy.
claude mcp add --transport http niche-your-niche-followed-for-yo https://api.nicheangle.com/mcp
{
"mcpServers": {
"niche-your-niche-followed-for-yo": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://api.nicheangle.com/mcp"]
}
}
}{
"mcpServers": {
"niche-your-niche-followed-for-yo": {
"url": "https://api.nicheangle.com/mcp"
}
}
}{
"servers": {
"niche-your-niche-followed-for-yo": {
"type": "http",
"url": "https://api.nicheangle.com/mcp"
}
}
}{
"context_servers": {
"niche-your-niche-followed-for-yo": {
"url": "https://api.nicheangle.com/mcp"
}
}
}{
"mcpServers": {
"niche-your-niche-followed-for-yo": {
"serverUrl": "https://api.nicheangle.com/mcp"
}
}
}{
"mcpServers": {
"niche-your-niche-followed-for-yo": {
"url": "https://api.nicheangle.com/mcp"
}
}
}name: Niche: Your niche, followed for you
version: 0.0.1
schema: v1
mcpServers:
- name: Niche: Your niche, followed for you
type: streamable-http
url: https://api.nicheangle.com/mcp{
"mcpServers": {
"niche-your-niche-followed-for-yo": {
"httpUrl": "https://api.nicheangle.com/mcp"
}
}
}{
"mcpServers": {
"niche-your-niche-followed-for-yo": {
"type": "http",
"url": "https://api.nicheangle.com/mcp"
}
}
}{
"mcpServers": {
"niche-your-niche-followed-for-yo": {
"url": "https://api.nicheangle.com/mcp"
}
}
}goose://extension?url=https%3A%2F%2Fapi.nicheangle.com%2Fmcp&type=streamable_http&id=niche-your-niche-followed-for-yo&name=Niche%3A%20Your%20niche%2C%20followed%20for%20you
It answered our last check on 18 October 2026 in 189 ms. Over 10 checks since 5 September 2026 it answered 10. Status here comes from Neuronto's own probes, not from the publisher.
Yes. It is published by nicheangle.com and served from api.nicheangle.com, the vendor's own domain: https://api.nicheangle.com/mcp.
25, as returned by the server's own tools/list on 31 August 2026: niche_add_output, niche_angle_propose, niche_attach_image, niche_brand_kit_guided_setup, niche_brand_kit_ingest, niche_brand_kit_ingest_status, niche_brand_kit_update, niche_brand_profile_get, and 17 more.
It answered our last check on 18 October 2026 in 189 ms. Over 10 checks since 5 September 2026 it answered 10.
Put the server under mcpServers in ~/.cursor/mcp.json with the URL https://api.nicheangle.com/mcp. The exact JSON is above, with the same setup for Claude Code, Claude Desktop, VS Code, Windsurf, Zed, Gemini CLI and the rest.
It listed its tools to an anonymous client, so reading the tool list needs no key. Individual tools can still ask for credentials in their own inputs.
Publisher: com.nicheangle. Endpoint host: api.nicheangle.com. ARD identifier: urn:air:com.nicheangle:mcp:niche.
First indexed 31 August 2026. The tools are exactly what the server returned; nothing on this page
is inferred from its name. Ranking in Neuronto search is never for sale.