Skip to help content
RightMessage
MCP referenceReference

MCP tools for projects, feedback, and context

Create or select an MCP project, read its business context, and submit bounded feedback without confusing these actions with publication.

Available on the Grow, Scale, and Pro plans.

Updated

View as Markdown

Use these MCP tools to create or select a project, read its business context, or send feedback about MCP usage. To discover projects, read the configuration overview resource. There is no list-projects tool.

Examples are illustrative and were not executed. Requests show parameters for MCP tools/call; responses show decoded JSON or text content.

MCP project selection and access

For project-specific operations, project_id is the public project ID, represented as a string. Calls follow the shared MCP authorization and project-selection rules. Pass an explicit ID when working across projects.

The authenticated user must belong to the project and have MCP access. Expired fixed-end trials are excluded. Errors include Authentication required., Invalid project_id: ..., Team not found for project_id: ..., You do not have access to this team., and MCP access is not enabled for this team. If no project can be resolved, the error asks for project_id or set-active-project.

create-project

Creates a new project owned by the authenticated user and initializes its configuration.

ArgumentTypeRequiredRules
namestringYesNonempty, normalized project name, at most 80 characters. No links, email addresses, or mixed-alphabet lookalike words. A plain domain is allowed.
websitestringYesDomain, optionally prefixed with http:// or https:// and an optional trailing slash. At most 255 characters before normalization. No page path, query, fragment, port, credentials, whitespace, or IP address.

There is no project_id argument because the project does not exist yet.

JSON
{"name":"create-project","arguments":{"name":"WorkForge","website":"example.com"}}
JSON
{"project_id":"123456789","name":"WorkForge","website":"example.com","message":"Project \"WorkForge\" created successfully. Use project_id \"123456789\" with other tools."}

The stored website is normalized to lowercase HTTPS, including ASCII conversion of internationalized domains. The response omits the scheme, so the example above returns example.com.

This immediately creates the project, attaches you as owner, creates or retrieves your billing customer record, and sets an account trial date when none exists. It doesn't start the project's own 14-day trial; publishing the project in RightMessage asks you to start it. It does not automatically set the MCP active project, install a snippet, or establish provider connections. Creation is not a draft operation.

Missing arguments and invalid names/domains return validation messages. Other failures return Failed to create project. Please try again. Some records can already have been created before a later step fails. Check the overview resource before repeating a failed request to avoid duplicate projects.

set-active-project

Sets the default project for later calls that omit project_id.

Argument: required project_id string.

JSON
{"name":"set-active-project","arguments":{"project_id":"123456789"}}

Illustrative text response:

Text
Active project set to: WorkForge (project_id: 123456789). You no longer need to pass project_id for subsequent tool calls. Integration-specific tools follow this project. If they do not appear, start a new chat.

The selection is cached for 24 hours and also persisted in supported token metadata, so it can survive that cache expiry. It is scoped to the current MCP token when one is available, otherwise the user. An explicit project_id still takes precedence on an individual call.

The server emits notifications/tools/list_changed, because connected-app tools depend on the selected project. Clients that do not refresh the tool list may need a new chat. This changes session selection, not the website configuration. Access is checked before selection is stored.

get-project-context

Returns the stored business context and audience counts used to inform recommendations.

ArgumentTypeRequiredDefault
project_idstringNoActive or eligible project.
no_cachebooleanNofalse; set true to bypass the context cache.
JSON
{"name":"get-project-context","arguments":{"project_id":"123456789","no_cache":true}}

Illustrative response, with business context shortened:

JSON
{"ai_context":"WorkForge helps teams plan client projects.","segment_counts":[{"id":"dim_example","name":"Business type","question":"What kind of business do you run?","segments":[{"id":"seg_agency","name":"Agency","count":120,"otherAnswers":[]}]}]}

ai_context contains the project's stored context. segment_counts is an array of published dimensions with id, name, nullable rendered question, and segments. Each segment contains id, name, count, and an otherAnswers array of associated open-ended responses. The retrieval path requests up to 1,000 such answers.

Counts use a recent 30-day audience window. The cache is keyed to the live configuration and retained for one hour. This is not a full configuration export, a draft inspection endpoint, or a request to generate new business research. A cache bypass refreshes retrieved context; it does not publish anything. Source answers may contain personal or sensitive information, so avoid forwarding the response to an unrelated service.

submit-feedback

Submits a bug report, feature request, or success report about MCP usage. Submission queues delivery; it does not create a support conversation or prove final delivery.

ArgumentTypeRequiredLimit and meaning
project_idstringNoActive or eligible project.
kindstringYesbug, feature, or success.
summarystringYesAt most 240 characters.
detailsstringYesAt most 4,000 characters.
evidence_typestringYesuser_reported, agent_observed, or agent_inferred.
affected_toolstringNoAt most 120 characters.
affected_resourcestringNoAt most 120 characters.
product_areastringNoAt most 120 characters.
reported_modelstringNoAt most 120 characters.
reproductionstringNoAt most 2,000 characters.
workaroundstringNoAt most 2,000 characters.
desired_outcomestringNoAt most 2,000 characters.
related_request_idstringNoAt most 128 characters.
correlation_idstringNoAt most 128 characters.
idempotency_keystringNoAt most 128 characters; reuse for a retry of the same report.

Text is trimmed; empty optional values are omitted, while empty required values fail. There are no nested objects or attachment arguments. Use agent_inferred for a hypothesis, not agent_observed.

JSON
{"name":"submit-feedback","arguments":{"project_id":"123456789","kind":"feature","summary":"Add a filter to email listings","details":"WorkForge would like to find stored emails by name.","evidence_type":"user_reported","affected_tool":"list-personalized-emails","desired_outcome":"Search by email name.","idempotency_key":"workforge-email-filter-2026-10-13"}}
JSON
{"status":"accepted","delivery":"queued","feedback_id":"example-feedback-id"}

The report includes your identity, project context, and an account snapshot. Do not include credentials or unnecessary visitor data. Submission has no draft or publication stage.

The default rate limit is 10 new reports per user per hour. The server can configure a different limit. Rate-limit errors include a retry delay. The same user's idempotency key is retained for 24 hours and returns the same accepted result on a retry. Use a new key for a different report. Duplicate requests still being processed, interrupted retry tracking, unavailable delivery configuration, invalid enums, excessive text, or queue failure return an error rather than claiming successful delivery.

Still need a hand?

Tell us what you’re trying to do and where you’re getting stuck.

support@rightmessage.com