New Your team’s decisions, in one playbook every coding agent works from. Never answer your agent twice

add_sprint_item_pointer

[SUPPORT] 2976e168 — attach a GENERIC POINTER to a sprint item: a portable, composable reference to a thing-in-a-source, grounded in LSP Location + W3C Web Annotation Selector composition. targets is an ARRAY of {uri, selector, subSelector?} objects (native multi-file, the LSP WorkspaceEdit patte...

SERVERMeridian SOURCE@meridianmcp/mcp
Medium RISK CLASS
Category Write
Parameters 63 required
Recommended Rate-limitedsee the rule below
Registry record Grade F, identity unverified Pull the record →

This record as markdown: /tools/io-github-ajc3xc-meridian/add-sprint-item-pointer.md

What add_sprint_item_pointer does on Meridian

AI agents use add_sprint_item_pointer 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.

ParameterTypeRequiredDescription
label string Optional human-readable label for the pointer.
targets array Yes Non-empty array of {uri, selector, subSelector?, target_kind?, freshness?} targets. Each selector is an object carrying an explicit "type" plus that type's fiel
project_id string
source_type string Yes Domain of the pointer: code | docs | citation | web | experiment | … (free text).
project_name string Project name — an alternative to project_id; resolved to the id internally. project_id wins if both are given.
sprint_item_id string Yes The sprint item to attach the pointer to.

Parameters from the server's own tool schema.

Why add_sprint_item_pointer is rated Medium

An AI agent can call add_sprint_item_pointer 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 signalsBulk/mass operation — affects multiple targets · Admin/system-level operation

Questions about add_sprint_item_pointer

What does the add_sprint_item_pointer tool do? +

[SUPPORT] 2976e168 — attach a GENERIC POINTER to a sprint item: a portable, composable reference to a thing-in-a-source, grounded in LSP Location + W3C Web Annotation Selector composition. targets is an ARRAY of {uri, selector, subSelector?} objects (native multi-file, the LSP WorkspaceEdit pattern); the whole composite shape is stored as JSON, not per-domain columns. Every selector is an object with an explicit "type" PLUS that type's own field(s): • range — {"type":"range", "start_line":int, "end_line":int, "start_char"?:int, "end_char"?:int} (an LSP Range); the pointer IS the location. • symbol — {"type":"symbol", "qualified_name":"pkg.mod.func"} resolved against the cached code graph to a file+line. • node_id — {"type":"node_id", "id":"<element-id>"} of a doc_store element (an ingested-document structure node). NOTE: the field is "id", NOT "value". • zotero_key — {"type":"zotero_key", "key":"<zotero-key>"} of a Zotero library item. • text_quote — {"type":"text_quote", "exact":str, "prefix"?:str, "suffix"?:str, "archived_url"?:str, "archived_at"?:str, "canonical_url"?:str, "retrieval_hash"?:str} (W3C TextQuoteSelector; source_type "web" — a URL — OR a local .docx path, resolving via a docx paragraph-text match instead of an HTTP GET). Resolving re-fetches live and flags content drift (the cited passage silently changed/vanished). • finding_id — {"type":"finding_id", "id":"<finding-note-id>"} (source_type "experiment") addresses a save_finding artifact. • directory — {"type":"directory", "root":str, "include"?:[str,...], "exclude"?:[str,...], "manifest_id"?:str, "snapshot_id"?:str} (62640241) — a directory ROOT + glob include/exclude selector + optional snapshot/manifest identity. Resolving it (local paths only by default) walks the tree and returns a deterministic manifest + manifest_hash. • git — {"type":"git", "repository":str, "ref"?:str, "commit"?:str, "path"?:str} (62640241) — a Git repository identity; at least one of "ref"/"commit" is required. A line range within "path" is expressed via subSelector (a nested range), NOT a new field. Resolving it (local clones only by default) checks reachability against the repo's current HEAD via git rev-parse. • remote_fs — {"type":"remote_fs", "host_id":str, "filesystem_slot":str, "path":str, "lease_id"?:str, "session_id"?:str, "snapshot_id"?:str} (62640241) — an opaque tunnel-connector host + filesystem slot + remote path, optionally bound to the lease/session that captured it. No core-local default resolver exists (requires an injected, tunnel-backed resolver) — reported explicitly unresolved without one, never silently dropped. • artifact — {"type":"artifact", "manifest_uri":str, "fingerprint"?:str, "run_id"?:str, "item_id"?:str, "provenance_id"?:str} (62640241) — a build/output artifact's manifest URI plus an optional fingerprint and a link to the producing run/sprint-item/provenance record. Resolving it (local files only by default) hashes the manifest file to report its current fingerprint. An optional selector.subSelector nests finer granularity (W3C hasSubSelector) — e.g. {"type":"symbol", "qualified_name":"a.b.f", "subSelector": {"type":"range", "start_line":3, "end_line":4}} = 'these lines, within this function'. A subSelector is itself a FULL selector and MUST carry its OWN explicit "type" (it does not inherit the parent's). source_type names the domain (code | docs | citation | web | experiment | …). Each target may also carry target_kind: "existing" | "planned_new" (300a063d) — set "existing" ONLY when the file/symbol already exists (this is checked against the real filesystem and REJECTED if the path isn't there); set "planned_new" for a file this sprint item will CREATE, which is explicitly exempt from that check. Omitting target_kind keeps the pre-existing, unchecked behavior (defaults to "existing" in the stored shape but is never filesystem-verified) — set it explicitly to get real verification. 62640241 — a target may ALSO carry an optional freshness proof: {"content_hash"?:str, "source_revision"?:str, "resolver_version"?:str, "captured_at"?:str, "state"?: "current"|"stale"|"unknown"|"unavailable"|"ambiguous"}. Purely additive/opt-in; resolve_sprint_item_pointers recomputes a LIVE freshness_state for directory/git/remote_fs/artifact/text_quote targets by comparing this declared proof against what resolution finds right now. Malformed pointers are rejected with a clear error: a bad/missing selector.type, a missing required selector field (e.g. node_id without "id", git without ref or commit, a subSelector with no "type", an invalid target_kind or freshness.state, or target_kind="existing" at a path that doesn't exist). Returns the stored pointer. Persistent-state disclosure: on hosted Meridian, supplied text and project/session metadata are sent to and stored in Meridian's service; self-hosted deployments keep them in the configured local SQLite/Postgres database. This data is visible in the dashboard/API and later project context or handoffs. Delete individual tasks, notes, or decisions where supported, or delete the project/account 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.

What parameters does add_sprint_item_pointer accept? +

add_sprint_item_pointer accepts 6 parameters: label, targets, project_id, source_type, project_name, sprint_item_id. Required: targets, source_type, sprint_item_id. The full parameter table on this page comes from the server's own tool schema.

How do I enforce a policy on add_sprint_item_pointer? +

Register the Meridian MCP server in PolicyLayer and add a rule for add_sprint_item_pointer: 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.

What risk level is add_sprint_item_pointer? +

add_sprint_item_pointer is a Write tool with medium risk. Write tools should be rate-limited to prevent accidental bulk modifications.

Can I rate-limit add_sprint_item_pointer? +

Yes. Add a rate_limit block to the add_sprint_item_pointer 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.

How do I block add_sprint_item_pointer completely? +

Set action: deny in the PolicyLayer policy for add_sprint_item_pointer. 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.

What MCP server provides add_sprint_item_pointer? +

add_sprint_item_pointer 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.

// THE MCP REGISTRY

PolicyLayer tracks 44,603 MCP servers and 515,000+ tools.

Every server has a live record: who publishes it, whether it answers without auth, its risk grade, every tool classified, the recommended policy. This page is one line of Meridian's. Pull the full record:

Teams ship this data inside their own products. See what a licence covers →

// GET IN TOUCH

Have a question or want to learn more? Send us a message.

Message sent.

We'll get back to you soon.