add_proposal
Capture an idea into a proposal — PROJECT-SCOPED BY DEFAULT (a8afd8f9). This is the preferred entry point going forward; add_workspace_proposal remains available as the explicit workspace-global opt-in for cross-project ideas. Pass project_id (or project_name) to scope the proposal to that projec...
This record as markdown: /tools/io-github-ajc3xc-meridian/add-proposal.md
What add_proposal does on Meridian
AI agents use add_proposal to create or update resources in Meridian, usually the action step of a workflow, after the agent has gathered context. Every call changes real data in your Meridian environment.
| Parameter | Type | Required | Description |
|---|---|---|---|
body | string | Yes | Full description of the insight or idea. |
tags | string | — | Optional comma-separated tags. |
scope | string | — | Pass 'workspace' to explicitly opt into a workspace-global proposal instead of project-scoping it. Defaults to project-scoped when project_id/project_name is gi |
title | string | Yes | Short idea title. |
family_id | string | — | Optional family/grouping id shared by related proposals. |
project_id | string | — | Project to scope this proposal to. Required unless scope='workspace' is passed instead. |
project_name | string | — | Project name — alternative to project_id; resolved to the id internally. |
idempotency_key | string | — | Optional caller-supplied key; a retried call with the same key returns the original proposal instead of creating a duplicate. |
Parameters from the server's own tool schema.
Why add_proposal is rated Medium
An AI agent can call add_proposal faster than any human can review: one bad instruction and it creates or modifies resources in Meridian by the hundred, each call as confident as the last.
Risk signalsAccepts raw HTML/template content (body)
Attacks that exploit this kind of access
The rule that runs add_proposal safely
PolicyLayer is an MCP gateway: it sits between your AI agents and Meridian, and checks every tool call against a rule you set before the call runs. Nothing changes on the server itself. For add_proposal, this is the rule to start with:
add_proposal stays usable, but capped: an agent stuck in a loop can't make hundreds of changes a minute. Everything else on the server is denied unless you say otherwise.
The button opens the PolicyLayer dashboard: create your workspace, connect Meridian, apply this rule, and every add_proposal call is checked against it from then on.
Questions about add_proposal
Capture an idea into a proposal — PROJECT-SCOPED BY DEFAULT (a8afd8f9). This is the preferred entry point going forward; add_workspace_proposal remains available as the explicit workspace-global opt-in for cross-project ideas. Pass project_id (or project_name) to scope the proposal to that project, XOR pass scope='workspace' to explicitly opt into a workspace-global proposal instead — an ambiguous call (neither, or both) is rejected with an error rather than guessed. Like add_workspace_proposal, these are NOT executor-claimable; a human reviews and promotes them via promote_proposal. Proposals start at status='raw' and progress through an enforced lifecycle: raw → investigating → promoted|rejected. A project-scoped proposal's project_id is enforced at promote_proposal time: promoting it into a DIFFERENT project is rejected unless allow_project_transfer=True (+ transfer_reason) is passed there. Persistent-state disclosure: on hosted Meridian, supplied text and project/session metadata -- including task log entries, pinned decisions, sprint items, notes, handoff/goal state, and HITL queue items -- are sent to and stored in Meridian's service, in an isolated per-tenant Postgres database (Neon); self-hosted deployments keep the same categories in the configured local SQLite/Postgres database. This data is visible in the dashboard and API, and may resurface in later project context or handoffs. Notes and pinned decisions can be deleted individually; task log entries and sprint items can be deleted via the dashboard/API (not exposed as an agent-facing tool); HITL queue items and handoff state have no per-record delete. Full removal of any of this data is available via project or account deletion, using the documented controls. Do not include secrets. It is categorised as a Write tool in the Meridian MCP Server, which means it can create or modify data. Consider rate limits to prevent runaway writes.
add_proposal accepts 8 parameters: body, tags, scope, title, family_id, project_id, project_name, idempotency_key. Required: body, title. The full parameter table on this page comes from the server's own tool schema.
Register the Meridian MCP server in PolicyLayer and add a rule for add_proposal: allow, deny, rate-limit, or require approval. Point your MCP client at the PolicyLayer proxy URL and the rule is enforced on every call, before it reaches Meridian. Nothing to install.
add_proposal is a Write tool with medium risk. Write tools should be rate-limited to prevent accidental bulk modifications.
Yes. Add a rate_limit block to the add_proposal rule in your PolicyLayer policy. For example, setting max: 10 and window: 60 limits the tool to 10 calls per minute. Rate limits are tracked per agent session and reset automatically.
Set action: deny in the PolicyLayer policy for add_proposal. The AI agent will receive a policy violation error and cannot call the tool. You can also include a reason field to explain why the tool is blocked.
add_proposal is provided by the Meridian MCP server (@meridianmcp/mcp). PolicyLayer sits as a proxy in front of this server to enforce policies before tool calls reach the server.
More on Meridian, and thousands of servers like it.
This server
Across the catalogue