# Notra, for your agent

106 tools over MCP. Your agent drafts changelogs, launch posts and social updates from the editor it already lives in.

MCP server URL: https://mcp.usenotra.com/mcp

## Connect from any client

### Claude Code

```bash
claude mcp add --transport http notra https://mcp.usenotra.com/mcp
```

### Codex

```bash
codex mcp add notra -- npx -y mcp-remote https://mcp.usenotra.com/mcp
```

### Cursor

```bash
npx add-mcp https://mcp.usenotra.com/mcp
```

### Hermes

```bash
hermes mcp add notra --url https://mcp.usenotra.com/mcp
```

### OpenClaw

```bash
mcporter config add notra https://mcp.usenotra.com/mcp
```

### Other

```bash
npx add-mcp https://mcp.usenotra.com/mcp
```


## Example session

Prompt: "draft a changelog from this week's merged PRs and post it"

- notra - list_events (MCP) (range: "week"): 14 merged PRs, 2 releases
- notra - create_post (MCP) (type: "changelog"): "Scheduler v2, 40% faster builds"
- notra - publish_post (MCP) (type: "changelog"): live at acme.com/changelog

Published. Drafted in your voice from **14** PRs and live at `acme.com/changelog`.

## What your agent can do

- `list_posts`: List posts from Notra with optional filters for sorting, pagination, status, content type, and brand identity
- `get_post`: Get a single post by its ID, including full content in HTML and markdown
- `create_post`: Create a post directly from your own title and markdown, without AI generation. Omit markdown to create an empty draft to fill in later with update_post. Slugs are only accepted for blog posts and changelogs.
- `update_post`: Update a post's title, markdown content, or publication status
- `delete_post`: Delete a post by its ID
- `generate_post`: Queue an async post generation job. Notra will analyze your GitHub activity and generate content. Use get_post_generation_status to poll for completion.
- `get_post_generation_status`: Check the status of an async post generation job. Returns job status and event log.
- `get_post_schedule`: Get a post's publishing schedule and the state of every destination. Returns a null schedule when nothing is scheduled.
- `schedule_post`: Schedule an existing post for publishing in Notra and optionally GitHub, X, or LinkedIn. Replaces a schedule that has not started; later post edits are included when publishing runs, within about a minute of scheduledAt.
- `cancel_post_schedule`: Cancel pending publishing destinations and clear failed ones. Already-publishing destinations cannot be interrupted; inProgress reports whether any are still running.
- `list_brand_identities`: List all brand identities configured for your organization
- `get_brand_identity`: Get a single brand identity by its ID, including tone, audience, and language settings
- `update_brand_identity`: Update a brand identity's settings including name, tone, audience, language, and more
- `delete_brand_identity`: Delete a brand identity. Returns any schedules or events that were disabled as a result.
- `generate_brand_identity`: Queue async brand identity generation from a website URL. Notra will scrape the site and extract brand info. Use get_brand_identity_generation_status to poll for completion.
- `get_brand_identity_generation_status`: Check the status of an async brand identity generation job
- `list_integrations`: List all connected integrations (GitHub, Slack, Linear) for your organization
- `create_github_integration`: Connect a GitHub repository as an integration for content generation
- `delete_integration`: Delete a GitHub or Linear integration. Returns any schedules or events that were disabled as a result.
- `list_schedules`: List scheduled content generation jobs, optionally filtered by repository IDs
- `create_schedule`: Create a content generation schedule using a cron-style daily, weekly, or monthly trigger
- `update_schedule`: Update an existing content generation schedule
- `delete_schedule`: Delete a content generation schedule by its ID
- `list_event_triggers`: List event triggers that generate content automatically from GitHub releases or pushes. repositoryMap labels each targeted GitHub integration ID with its owner/repo.
- `get_event_trigger`: Get a single event trigger by its ID
- `create_event_trigger`: Create an event trigger that generates content whenever a GitHub release or push happens in the targeted repositories. Generated content uses AI credits each time the trigger fires.
- `update_event_trigger`: Replace an event trigger's configuration. The API takes the full definition, so read it with get_event_trigger first and send every field back.
- `delete_event_trigger`: Delete an event trigger
- `list_webhook_endpoints`: List HTTPS endpoints subscribed to Notra events. Signing secrets are not returned.
- `create_webhook_endpoint`: Subscribe an HTTPS endpoint to Notra events such as post generation and publishing. The response includes the signing secret, which is shown only once; pass it to the user to store.
- `delete_webhook_endpoint`: Remove a webhook subscription and cancel its unsent deliveries
- `list_webhook_deliveries`: List webhook deliveries across all endpoints, newest first. Page with offset while hasMore is true.
- `get_webhook_delivery`: Get a webhook delivery's payload and attempt history
- `retry_webhook_delivery`: Queue a failed webhook delivery to be sent again, keeping its attempt history
- `list_chats`: List chat sessions for your organization
- `get_chat`: Get a single chat session with its messages
- `get_chat_by_external_channel`: Get a chat session by Discord or Slack external channel ID
- `create_chat`: Start a new Notra agent chat and return the assistant's reply text with the chat ID when available. Uses AI credits. The agent can research the web, create or update posts, create writing skills, add brand references, and invoke connected MCP tools that may modify or delete data or act on external services.
- `post_chat_message`: Send a message to an existing Notra agent chat and return the assistant's reply text. Uses AI credits. The agent can research the web, create or update posts, create writing skills, add brand references, and invoke connected MCP tools that may modify or delete data or act on external services.
- `list_agent_chats`: List durable agent sessions started from the Notra dashboard or the agent API, with their status and linked chat ID
- `list_skills`: List reusable writing skills for your organization
- `get_skill`: Get a single reusable writing skill by name
- `create_skill`: Create a reusable writing skill
- `update_skill`: Update a reusable writing skill by name
- `delete_skill`: Delete a reusable writing skill by name
- `list_feedback`: List feedback your organization received through its feedback URL, MCP servers or SDKs, filtered by triage status, kind or project
- `get_feedback`: Get a single feedback entry with its full message, agent metadata and context URL
- `update_feedback`: Set the triage status of a feedback entry: new, triaged, resolved or archived
- `list_projects`: List the organization's GEO projects. Most GEO tools take a projectId; call this first to find it.
- `get_project`: Get a single GEO project by its ID
- `create_project`: Create a new GEO project, optionally linked to a brand identity
- `update_project`: Rename a GEO project or relink its brand identity
- `delete_project`: Delete a GEO project and its settings, prompts, sequences, competitors, scans, checks, and reports. This cannot be undone. The organization's last project cannot be deleted.
- `get_geo_settings`: Get a project's GEO settings: tracked company name, aliases, languages, answer engines and the recurring scan configuration
- `update_geo_settings`: Replace all GEO settings and restart the recurring scan schedule. Send every field from get_geo_settings; this endpoint does not merge partial updates. Use model catalog IDs for engines and languages listed in the current settings response.
- `list_geo_prompts`: List the GEO prompts tracked for a project: custom prompts plus the ones derived automatically from the brand context
- `create_geo_prompt`: Track a new GEO prompt so future scans check it against every configured answer engine
- `update_geo_prompt`: Enable or disable a tracked GEO prompt
- `delete_geo_prompt`: Stop tracking a GEO prompt
- `import_geo_prompts`: Bulk import GEO prompts from structured rows or raw CSV text. Prompts that already exist are skipped, not duplicated.
- `list_geo_sequences`: List a project's GEO prompt sequences (multi-turn conversations played against answer engines)
- `create_geo_sequence`: Create a GEO prompt sequence: an ordered list of prompts played as one conversation
- `update_geo_sequence`: Update a GEO prompt sequence's name, steps or enabled state
- `delete_geo_sequence`: Delete a GEO prompt sequence
- `run_geo_sequence`: Run a GEO prompt sequence now, synchronously, against every available answer engine. This uses AI credits and the request can take several minutes; the result reports checks, mentions and engines covered.
- `list_geo_competitors`: List the competitors tracked for a project's GEO share-of-voice reporting
- `upsert_geo_competitor`: Create or update a tracked GEO competitor. Matches on name, case-insensitively; send previousName to rename an existing competitor. Returns the full competitor list.
- `suggest_geo_competitors`: Discover likely competitors for a website domain using AI. Results are cached per organization and domain.
- `delete_geo_competitor`: Stop tracking a GEO competitor. The name is matched case-insensitively.
- `import_geo_competitors`: Bulk import GEO competitors from structured rows or raw CSV text. Existing competitors are updated in place rather than duplicated.
- `get_geo_snapshot`: Get a compact GEO diagnosis across visibility, sentiment, scan changes, competitors, content gaps, shelf sources, readiness and AI traffic, with deterministic next actions
- `get_geo_changes`: Compare the two latest GEO scans and list gained or lost mentions, positions and citations
- `get_geo_prompt_history`: Get compact historical checks for one prompt. Use a returned check id with get_geo_prompt_result_detail for the full answer.
- `get_geo_sentiment`: Get aggregate GEO sentiment, engine breakdowns, timeseries and previous-period comparison
- `get_geo_sentiment_analysis`: Get the stored thematic GEO sentiment analysis without starting a billed analysis run
- `list_geo_sentiment_evidence`: List a bounded page of full answers used as sentiment evidence
- `list_geo_shelf_sources`: List cited and manually tracked GEO shelf sources, including placements and opportunity state
- `create_geo_scan`: Trigger a GEO visibility scan. The scan runs asynchronously and checks every enabled prompt against every configured answer engine; poll get_geo_scan with the returned scanId for status, progress, mentions, and safe failure details. This uses AI credits.
- `list_geo_scans`: List a project's GEO scans, newest first, with pagination, check totals by engine, and safe failure details
- `get_geo_scan`: Get a GEO scan's status, planned and completed checks, mentions and explicit failures by engine, plus safe failure details when the scan failed
- `get_geo_visibility_overview`: Get GEO mention rates per answer engine: checks, mentions and average position for every engine the project tracks
- `get_geo_visibility_timeseries`: Get daily GEO mention counts per answer engine, one point per day and engine
- `get_geo_prompt_results`: Get every latest stored answer per tracked prompt and engine. This can be large; prefer list_geo_prompt_result_summaries and targeted detail.
- `list_geo_prompt_result_summaries`: List filtered, paginated GEO prompt results without full answer text or sources. Use checkId with get_geo_prompt_result_detail.
- `get_geo_prompt_result_detail`: Get the full answer, grounding sources and token metadata for one GEO check
- `get_geo_competitor_share`: Get GEO share of voice across tracked brands: mention counts per brand with per-brand trends and the daily timeseries behind them
- `get_geo_language_share`: Get GEO mention rates broken down by tracked language
- `get_geo_competitor_detail`: Get one competitor's GEO mention history: daily mentions and the prompts that produced them. Use the brand names reported by get_geo_competitor_share.
- `list_geo_content_gaps`: List GEO content gaps: prompts where competitors are mentioned but this brand is not, plus Search Console queries with no tracked prompt. Each gap links to the brief already written for it, when there is one.
- `list_geo_content_briefs`: List a project's GEO content briefs and their statuses
- `plan_geo_content_brief`: Research a topic and plan a GEO content brief, saved as a draft. This books AI credits, is billed, and can take a few minutes. Set autoApprove to start the article writer in the same call.
- `get_geo_content_brief`: Get a single GEO content brief including the full brief document, writer status and the resulting post ID
- `approve_geo_content_brief`: Approve a GEO content brief and start the article writer. Only briefs in draft or failed status can be approved. Poll get_geo_content_brief for writer progress; the finished article appears as a post.
- `get_geo_agent_readiness`: Get the latest agent readiness report for the project's website: score, failed/partial checks with recommendations, any scan still in flight, and the score history. Never starts a scan.
- `start_geo_agent_readiness_scan`: Queue an agent readiness scan of the project's website. A scan already running against the same URL is reused (alreadyRunning is true). Poll get_geo_agent_readiness for the result. Requires the agent readiness feature for the organization.
- `get_geo_traffic_overview`: Get AI traffic totals for a project's website: crawler and AI-referral visit totals, a per-source breakdown and the daily timeseries behind it
- `get_geo_traffic_log`: Get the most recent individual requests from AI crawlers and referrals. This endpoint has no time window; use limit to bound it.
- `list_geo_traffic_journeys`: List AI traffic journeys: sessions grouped by agent, showing how many pages one agent read, over what span, with sample paths
- `get_geo_traffic_journey`: Get every event in one AI traffic journey
- `list_geo_traffic_pages`: List the pages AI crawlers and referrals read most, with the previous window's count for comparison
- `get_geo_ingest_setup`: Get the AI traffic tracking install snippets (Next.js, Nuxt, Netlify) and the ingest endpoint. The snippets read the token from an environment variable; issue the token itself with issue_geo_ingest_token.
- `issue_geo_ingest_token`: Issue the AI traffic tracking token together with the install snippets. Issuing does not invalidate previously issued tokens; use rotate_geo_ingest_token for that. Requires a write scope.
- `rotate_geo_ingest_token`: Rotate the AI traffic tracking token. This invalidates all tokens previously issued for the organization. Deployments using an old token will be rejected.
- `whoami`: Show the current Notra workspace and authenticated account. Use this to confirm which workspace this MCP connection operates against.
- `list_workspaces`: List accepted and pending Notra workspaces available to the authenticated account. Organization API keys only return their current workspace.
- `submit_feedback`: Send feedback about Notra to the Notra team. Use it to report bugs, request features, ask questions or share what worked well. Include the exact steps or URL when reporting a problem.

## Not sure what to ask your agent?

13 copy-paste workflows for visibility tracking, content and reporting, each with the exact prompt and the integrations it uses.

[Browse use cases](https://www.usenotra.com/mcp/use-cases.md?ntr=8M-_sfYhg7SUwjQi)
