Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

AnyForge

NPM · @ANYFORGE/MCP-SERVER · 2 COMPONENTS

Approve plans, track initiatives and work items, and steer AI engineering crews in AnyForge.

+18 this week 65 Trust /100

Last scanned (1 hour ago)

Scores higher than 33% of npm servers

Category Project Management

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security98
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 30 of 92 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency6
Schema Quality & AI Usability76
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 42263 tokens (~180/item across 234 items; 229 tools + 5 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management26
  • Stability check failed: the tool surface changed between 3.14.4 and 3.16.0: 0 tool removals, 1 breaking changes, 10 additions. See how to fix → Fail
Tool Coverage93
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 76% of tool parameters carry a description.Partial
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety97
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 17 of 19 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "anyforge_get_triage_eval_run" implies "eval" and declares readOnlyHint instead, contradicting what its own name says it does. See how to fix → Partial
  • An AI judge read all 231 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 5 Nov 26 +15
    • Malware scan: unverified → pass ▲ security
  • 4 Nov 26 +1
    • Malware scan: unverified → pass ▲ security
    • Package version: 3.15.1 → 3.16.0 functional
  • 3 Nov 26 −15
    • Malware scan: pass → unverified ▼ security
    • Package version: 3.15.0 → 3.15.1 functional
  • 2 Nov 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 13 to 16.

  • 1 Nov 26 +15
    • Malware scan: unverified → pass ▲ security
  • 31 Oct 26 −15
    • Malware scan: pass → unverified ▼ security
    • Stability: 0.07 → fail ▼ security
    • Package version: 3.14.5 → 3.15.0 functional
  • 30 Oct 26 +16
    • Malware scan: unverified → pass ▲ security
  • 29 Oct 26 −4
    • Malware scan: pass → unverified ▼ security
    • Known CVEs: unverified → pass ▲ security
    • Dependency health: unverified → 0.85 ▲ functional
    • Package version: 3.14.4 → 3.14.5 functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Analysed npm/@anyforge/mcp-server@3.16.0

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem npm

Background: How many MCP packages publish verified provenance →

Dependencies 92 packages
Packages resolved 92
Stale 30
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 229 exposed · ~41,840 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
anyforge_accept_observability_signal ~147

Accept a production-error signal — the operator approval that turns it into a governed INCIDENT under the company's KTLO program. The target codebase resolves from codebaseId → repo → the signal's service; if none resolves the call returns codebase_required. Requires `write` scope.

NameTypeReqDescription
codebaseIdstring–Target codebase id (preferred way to resolve the incident's repo).
impactstring–Impact description for the incident.
repostring–Target repo "owner/name" (used if codebaseId is omitted).
severitystring–Incident severity override.
signalIdstringyesThe signal id to accept.

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_add_studio_context ~84

Attach a bounded context snapshot to a prepared prompt. No code execution; explicitly identify local versus remote provenance.

NameTypeReqDescription
contentstringyes–
idempotencyKeystringyesStable unique request key. Reuse only when retrying exactly this request.
provenanceobject––
sessionIdstringyesOwned Code Studio session ID.

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_add_work_item_files ~416

Attach up to 5 files to a work item, as the Console's Files panel does: images, PDF, text, logs, Markdown, CSV, JSON, XML, HTML pages, zip, Office documents and MP4/WebM/MOV video. SVG and other types are refused. Give each file exactly one of: text (the content as a string), contentBase64 (the bytes, base64-encoded) or path (a local file, stdio server only); name is required with text or contentBase64. Files start internal (not shared with the client). All or nothing: one refused file attaches none. One call carries at most 10 MB of request, which is about 7 MB of files once base64-encoded; for a larger file use anyforge_start_file_upload (up to 1 GB). A file already on the item with the same name and size is not attached again: it comes back with alreadyAttached: true. A same-name file of another size is refused (file_name_exists) unless onNameConflict is "keep_both". Give originalCreatedAt to keep the date a file was created in another tool. Requires the write scope and a key owner who is an editor or above. Returns { files } with each file's id. Pass an idempotencyKey to retry safely: a repeat with the same key and files returns the stored files ({ replayed: true }). Only call when the person asked to attach these files.

NameTypeReqDescription
filesarrayyes–
idempotencyKeystring–Optional, 8-64 letters, digits, "_" or "-". A repeat with the same key and files attaches nothing new; the same key with other files is refused.
itemIdstringyesThe work item id.
onNameConflictstring–A same-name file of a different size already on the item: refuse it (default) or attach both. A same-name, same-size file is never attached twice.

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_amend_crew ~205

Continue & finish: send a crew waiting at its HIL gate back to the engineer with guidance — it resumes work on the SAME PR (capped at the amend limit). This is the "Continue" option alongside submit_approval APPROVE (ship) / REJECT (stop). Requires `approve` scope. Only call when the operator explicitly asks to amend/continue — never on your own judgement of the reviews.

NameTypeReqDescription
crewIdstringyesThe crew id (the crew must be at a pending approval gate).
notesstringyesWhat the engineer should finish/change — becomes the amend instruction.
postToPullRequestboolean–Also post the notes on the crew's pull request as a comment review, where everyone with access to the repository can read them. Omit to follow the company setting, which is off unless an owner turned…

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_analyze_repos ~98

Start Phase-1 codebase analysis for one or more repos. Idempotent — already-analyzed repos return `already_analyzed`, in-flight ones `already_running` (never re-run). Up to 25 repos per call; chunk larger sets or use anyforge_start_coverage_sweep instead. Requires `write` scope.

NameTypeReqDescription
reposarrayyesRepo full names ("owner/name"), max 25 per call.

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_approve_backlog ~223

Approve the proposed backlog for an initiative (HIL #1). Promotes its BACKLOG items to READY and moves the initiative to IN_PROGRESS. Pass `deferItemIds` to leave chosen proposed items out of the approval: they stay in the backlog marked deferred, are never promoted or auto-dispatched, and come back through anyforge_update_work_item action='undefer'. Refused with a 400 and nothing written when an id is not one of this plan's proposed items (defer_item_not_proposed), is the integration-validation item (defer_item_not_deferrable), would defer every item (defer_all_items), or is a dependency of an item being approved (defer_breaks_dependency). Requires `approve` scope.

NameTypeReqDescription
deferItemIdsarray–Work item ids (from anyforge_list_work_items) of proposed items to defer instead of approving.
deferReasonstring–Optional reason recorded on each deferred item and in the audit trail.
initiativeIdstringyesThe initiative id.

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_approve_program_architecture ~242

Approve the program's rolled-up solution architecture: one review approves EVERY BACKLOG_PROPOSED initiative backlog in the program (this is HIL #1 for each), each through the canonical backlog approval. Hold initiatives back with excludeInitiativeIds. Auto-dispatch keeps its default unless you pass autoDispatch: false to approve the plans but hold the crews. Requires `approve` scope and a key holder who can dispatch crews.

NameTypeReqDescription
allowBriefBelowBarboolean–Owner-only waiver of the program-brief ICE gate. Ignored for a non-owner.
allowSpecBelowBarboolean–Owner-only waiver of the initiative-spec ICE gate. Ignored for a non-owner.
autoDispatchboolean–Dispatch crews after approval (default true). Pass false to approve but hold.
autoRefineboolean–Auto-refine below-bar backlogs instead of approving as-is.
autoShipboolean–Auto-ship safe PRs for the approved initiatives.
excludeInitiativeIdsarray–Initiatives to hold back (not approved).
programIdstringyesThe program id.

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_approve_task_proposal ~77

Approve a mid-flight task proposal card, materialising a READY work item. Requires `approve` scope.

NameTypeReqDescription
crewIdstringyesThe crew whose chat holds the proposal card.
initiativeIdstringyesThe initiative id.
messageIdstringyesThe task_proposal chat message id.

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_architect_program ~185

Run program-level architecture planning: kick the architect decomposition for EVERY still-DRAFT initiative in the program in one step (already-planned and standing-maintenance initiatives are skipped, reported per row). This spends tokens, the same tier as a single anyforge_dispatch_architect. Gated on the program brief clearing 100% ICE — a below-bar brief returns 409 `program_brief_below_bar` with the score and gaps; an OWNER may waive it with allowBriefBelowBar. Requires `write` scope and a key holder who can dispatch crews.

NameTypeReqDescription
acknowledgeCapacityboolean–Acknowledge a capacity plan that misses (a logged decision, not a waiver).
allowBriefBelowBarboolean–Owner-only waiver of the program-brief ICE gate. Ignored for a non-owner.
programIdstringyesThe program id.

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_archive_page ~79

Archive a page (or restore it with `archived: false`). An archived page is kept, with its history, and hidden from the page tree and search. Only call when the person asked for it.

NameTypeReqDescription
archivedboolean–true to archive (default), false to restore.
pageIdstringyesThe page id.

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_archive_studio_sessions ~60

Archive all of your own unarchived Studio sessions (CI auto-fix monitors excluded). Transcripts are kept and each session can be unarchived with update_studio_session. Call again while remaining is true.

NameTypeReqDescription
confirmed–yes–

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_ask_oracle ~373

Ask the AnyForge Oracle a question about this workspace: programs, initiatives, codebases, analyzed-codebase docs, releases, recorded decisions — AND live data from the connected integrations (e.g. "top 10 payment errors in production over the last 7 days" via a connected Datadog). The Oracle runs its own multi-step research loop server-side and returns one final, source-cited answer, so ask the FULL question in one call instead of decomposing it yourself. Read-only; answers are company-scoped. A research turn can take a few minutes, so this call waits up to ~40s: if the result has status "done" it carries the answer; if it has status "running", call anyforge_get_oracle_answer with its askId (repeat while it stays "running"). Do NOT call anyforge_ask_oracle again for the same question — that starts a second turn. A turn that runs out of time is continued server-side automatically (up to maxContinuations extra turns, default 2), so long answers such as a full program brief arrive whole: keep polling rather than asking "continue". A "done" answer with investigationTruncated: true used every continuation; ask a narrower follow-up for what it left out.

NameTypeReqDescription
contextstring–Optional background the Oracle should know (what you are investigating, ids/repos already identified).
maxContinuationsinteger–How many extra turns the server may run if the answer is cut off by the per-turn time limit (default 2, max 3; each is billed as a turn). 0 returns the first turn's answer as is.
questionstringyesThe complete question, in natural language. Include the time window if it matters ("last 7 days").

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_book_time ~263

Book, change or clear cells of your own timesheet: up to 100 at once, ALL OR NOTHING. Every cell is checked by the same rules as the Timesheets grid before any is written; if one is refused, none is, and the error names it by index. A cell that already has time is replaced (mode set, the default) or added to (mode add); minutes 0 clears it; cells you do not send are left alone. Minutes are rounded to the workspace step. A day may not pass 24 hours. Refusals: not_bookable with a reason (date_in_future, period_closed, initiative_closed, no_current_quarter_key_result, not_linked, enabling_work, initiative_not_in_program), day_over_limit, initiative_not_found, duplicate_entry (the same initiative and day twice), time_recording_disabled. Use the initiativeId values anyforge_get_timesheet_week lists. An empty list writes nothing and returns written: 0.

NameTypeReqDescription
entriesarrayyesThe cells to write, each initiative and day once.
todaystring–Your local date (YYYY-MM-DD), honoured within a day of UTC. Pass it when you are not on UTC, so yesterday and today mean yours.

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_branch_studio_session ~157

Fork a session with explicit conversation/files/both scope. File scope also requires studio:execute and checkpoints; rewind requires exact workspace revisions. Does not undo external GitHub actions. For branch, reuse the same idempotencyKey when retrying; inspect incomplete preparation before retrying.

NameTypeReqDescription
checkpointIdstring––
checkpointsarray––
expectedRevisionstring–Exact revision returned by the changes or checkpoint read.
idempotencyKeystringyesStable unique request key. Reuse only when retrying exactly this request.
messageIdstring––
scope–––
sessionIdstringyesOwned Code Studio session ID.
titlestring––

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_call_connected_tool ~179

Call one tool on a connected server listed by anyforge_list_connected_tools. A read tool runs now and returns its result. A write tool (`access: "write"`), or any tool marked `needsApproval`, does NOT run: AnyForge records the exact arguments and asks a person to approve it on the Approvals page or in Slack, then runs it. You get `status: "pending_approval"` and a `callId`; tell the user, do not call it again, and check the outcome later with anyforge_get_connected_tool_call. Never put a credential in `arguments`.

NameTypeReqDescription
argumentsobject–The tool's arguments, as its input schema describes them.
serverstringyesThe `server` value from anyforge_list_connected_tools.
toolstringyesThe tool's exact name.

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_cancel_studio_crew_batch ~58

Cancel queued starts; already active crews require separate stop actions. Also requires studio:publish.

NameTypeReqDescription
batchIdstringyes–
confirmed–yes–
sessionIdstringyesOwned Code Studio session ID.

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_check_dispatch_readiness ~210

Check what would stop a crew starting, without launching one. Pass `workItemId` to run every dispatch gate for that work item (its id or its code) and get ALL the blockers at once in `blockers` (role, item state, who may dispatch it, the initiative's task tracker, approval, program brief, spec and plan, intake, write scope, repository, team, dependencies, analysis, GitHub connection); `ready` is true only when there are none. Pass only `repoFullName` to check just that repository's Phase 1 + Phase 2 analysis gate. GitHub scopes and permissions, the base branch and the budget are still checked when the crew is started.

NameTypeReqDescription
repoFullNamestring–Repository full name, for example owner/name, to check only its analysis gate.
workItemIdstring–The work item (id or code) to check every dispatch gate for. Takes precedence over repoFullName.
NameTypeReqDescription
blockersarray––
codebaseIdstring––
messagestring––
readybooleanyes–
reasonstring––
repoFullNamestring––
workItemIdstring––

No examples provided.

anyforge_close_program_initiative ~145

Early-close one initiative in a program with completed-elsewhere, wont-do, duplicate, or superseded. Call action=preview first, present the returned impact, then call action=execute with only the proposalToken. The operation yields CLOSED, cancels active crews, and drops outstanding work items.

NameTypeReqDescription
actionstringyes–
initiativeIdstringyesThe initiative to close.
notestring–Optional audit note, maximum 2000 characters.
programIdstringyesThe parent program id.
proposalTokenstring–Required for execute; returned by preview.
reasonstring–Required for preview.

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_close_program_work_items_as_fixed ~120

Batch-close unique, non-terminal work items already fixed outside AnyForge. Call action=preview with closures, present the linked impact, then call action=execute with only proposalToken. Each closure needs workItemId and closedReason; closedAsFixedByWorkItemId is optional.

NameTypeReqDescription
actionstringyes–
closuresarray–Required for preview; maximum 50 unique items.
programIdstringyesThe parent program id.
proposalTokenstring–Required for execute; returned by preview.

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_commit_studio_files ~74

Commit reviewed remote changes. Read changes and confirm file scope before committing; does not push.

NameTypeReqDescription
expectedRevisionstringyesExact revision returned by the changes or checkpoint read.
messagestringyes–
pathsarray––
sessionIdstringyesOwned Code Studio session ID.

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_compact_studio_session ~79

Compact the session's stored history: older messages are replaced by one summary so the next run starts lean. Deletes the summarized messages and cannot be undone. Spends a small model call on your credential. Refused while a run is active.

NameTypeReqDescription
confirmed–yes–
sessionIdstringyesOwned Code Studio session ID.

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_complete_file_upload ~195

Attach a file whose bytes were PUT to the `uploadUrl` from anyforge_start_file_upload. Only the key holder who started the upload may complete it; completing twice returns the first result. `upload_incomplete` (409): the bytes have not all arrived. `upload_expired` (410): more than 24 hours passed; start again. `upload_size_mismatch` (400): the stored size differs, the bytes were discarded. If the same file (name and size) was attached meanwhile, the answer is that file with alreadyAttached: true and the new bytes are discarded; a same-name file of another size is `file_name_exists` (409) unless the start said keep_both.

NameTypeReqDescription
idstringyesThe work item, initiative or program id.
targetstringyesThe kind of record the file is attached to.
uploadIdstringyes–

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_control_studio_run ~69

Pause, cancel, resume, steer or answer a pending question. Answer requires its current questionId. Resuming may execute code and spend tokens.

NameTypeReqDescription
action–yes–
contentstring––
questionIdstring––
runIdstringyes–

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_create_initiative ~765

Create an initiative (optionally under a program). MUST be connected to a repository — pass `codebaseId` (preferred) or `defaultGithubRepo` ("owner/name"); without one the request is rejected (repo_required) because its crews would have no workspace — unless `taskTracker` is set, since people deliver that work and no crew runs under it. De-dupes on name within the same codebase or program+repo, so re-runs return the existing one. Starts in DRAFT; dispatch the architect to decompose it into a backlog — unless `operatorPlanned` or `taskTracker` is set, in which case it starts IN_PROGRESS with no planner. Requires `write` scope.

NameTypeReqDescription
additionalGithubReposarray–Further repositories ("owner/name") this initiative's work items may modify, beside defaultGithubRepo — so an item can set targetGithubRepo to one of them. Replaces the list; [] clears it. Removing a…
assignedOperatorIdstring–Operator (DRI) uid — who the work is credited to, e.g. the "assigned to me" filter. Must be an approved editor-or-above member. Omit to default to the program owner, else you (the API key owner).
brdContentstring–Business-requirements doc text (seeds decomposition).
codebaseIdstring–Linked codebase id, when created from a gap finding.
contextNotesstring–Intake notes: context the architect reads until the initiative has a spec (refused on update once a spec exists — edit the spec instead).
decompositionStrategystring–Backlog shape: adaptive (default), single_work_item, or parallel_slices. Does not auto-dispatch crews.
defaultGithubBranchstring–Base branch the crews build on. Omit to inherit the repository's own default branch (resolved from the codebase, then GitHub) — there is no hard-coded "main" guess. A value you supply is checked agai…
defaultGithubRepostring–Repo the crews run on, "owner/name".
descriptionstringyesWhat needs to be done (the intent).
longLivedboolean–Set true for an ongoing delivery stream (e.g. a standing bug/intake queue) that should never receive the terminal integration-validation work item.
namestringyesInitiative name.
operatorPlannedboolean–Set true for BOUNDED work the operator plans themselves — a sign-off gate, a migration runbook, a vendor dependency, a comms push. No architect run and no plan to approve: it starts IN_PROGRESS and i…
prioritystring–P0 / P1 (default) / P2 / P3.
programIdstring–Parent program id (links it under a program).
tagsarray–Free-form tags.
taskTrackerboolean–Set true when PEOPLE deliver this initiative and AnyForge only tracks it, like a Jira board: its work items are filed, assigned, begun and marked done by hand, and NO crew ever runs under it (every d…
tokenBudgetnumber–Token budget cap (default 5000000).

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_create_key_result ~269

Create a key result under an objective. Set direction to "down" for measures that must FALL (cost, latency, days-to-live) or attainment reads improvement as failure. Without a baseline AND a target the measure cannot be scored and reports as not-measured rather than 0%. Set derivedMetric to have AnyForge compute it instead of a person entering readings. Requires `write` scope.

NameTypeReqDescription
baselineobject–Where we started: { value, asOf (ISO yyyy-mm-dd), source }.
currentobject–Latest reading: { value, asOf, source }. Entered measures only — ignored for derived ones.
derivedMetricstring–Required when sourceKind is "derived": initiatives_with_owner_pct | initiatives_on_time_pct.
directionstring–"up" (default) or "down".
labelstringyesThe measure, e.g. "ARR".
objectiveIdstringyesParent objective id.
ownerUidstring–The one person who owns this number.
sourceKindstring–"entered" (default) or "derived".
targetnumber–What we are committing to.
unitstring–Display unit, e.g. USD, %, days.

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_create_objective ~124

Create an objective under a pillar. Rejects a pillarId that does not exist. Nothing rolls up to a new objective until a cluster is tagged with it via anyforge_update_theme. Requires `write` scope.

NameTypeReqDescription
descriptionstring–What it means in practice.
ownerUidstring–Accountable owner, as a user id.
pillarIdstringyesParent pillar id.
sortOrdernumber––
statementstringyesThe objective, e.g. "Grow fast, without depending on any single client."

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_create_opportunity ~253

Create an opportunity — a validated problem or possibility worth pursuing. Opportunities are the bridge between raw signals and themed roadmap work. Requires `write` scope.

NameTypeReqDescription
descriptionstring–What the opportunity is and why it matters.
dueDatestring–Target resolution date (ISO yyyy-mm-dd).
evidencestring–Free-text evidence backing the opportunity (links, quotes, source records). Persisted on the opportunity.
riceobjectyesRICE prioritisation inputs, required to create. Send all four numbers plus one rationale. Each number snaps to the nearest RICE bucket (the server derives the stored value from it). Placeholder scori…
sourcestring–Where the opportunity came from. Allowed: client | sales | stakeholder | internal | strategy (default internal).
themeIdstring–Theme to assign this opportunity to.
titlestringyesShort name for the opportunity.
typestring–Opportunity type. Allowed: FEATURE | ENHANCEMENT | TECH_DEBT | KTLO | BUG (default FEATURE).

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_create_page ~123

Create a page in a space you can edit, owned by you. `space` is the space key; `parentId` puts it under another page in that space; `content` is the body in markdown. Only call when the person asked for this page.

NameTypeReqDescription
contentstring–The page body, in markdown.
parentIdstring–Optional: the id of the page to put it under.
spacestringyesThe space key (from anyforge_list_page_spaces).
titlestringyesThe page title.

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_create_page_space ~99

Create a Pages space. Workspace Owners only; the creator owns it unless ownerUids are supplied. The key is permanent. Access defaults to company readers and all editors. Only call when the person asked for this space.

NameTypeReqDescription
accessobject––
descriptionstring––
keystringyes–
namestringyes–
ownerUidsarray––
sensitiveboolean––

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_create_pillar ~96

Create a strategy pillar. Requires `write` scope.

NameTypeReqDescription
descriptionstring–What this pillar is for, in a sentence or two.
namestringyesPillar name, e.g. "Commercial machine".
ownerUidstring–The accountable lead, as a user id. An unassigned pillar is reported, not hidden.
sortOrdernumber–Display order; lower first.

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_create_program ~236

Create a program (the cross-initiative grouping). Use this to set up a body of work before adding initiatives under it. To have it take incoming requests, call anyforge_set_program_request_intake afterwards. Requires `write` scope.

NameTypeReqDescription
coverageTargetnumber–Test-coverage goal 0–100 (e.g. 90).
descriptionstring–What the program is for.
longLivedboolean–true for a standing program that never ends (an intake queue, a run stream). Absent = a bounded program.
namestringyesProgram name.
ownerIdstring–Owning operator uid. Defaults to the key user.
programLeadUidstring–Program lead uid: must be an approved member of the workspace. The lead decides where the program's incoming requests go and is who request reminders tag.
statusstring–PLANNING (default), IN_PROGRESS, COMPLETE, or CANCELLED.
tagsarray–Free-form tags.
targetDatestring–Target completion date (ISO yyyy-mm-dd).

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_create_report ~143

Create an empty Insights report, owned by you. Add widgets afterwards with anyforge_update_report. Requires `write` scope and a role that edits reports. Only call when the person asked for this report. Each report carries `url`, its Console page; when you show a report to the user, render its title as a link to that url.

NameTypeReqDescription
datesShownstring–Which dates program widgets show: forecast (default), or plan (committed dates only, also on the share link).
descriptionstring–A one-line description.
titlestring–The report title (1-120 characters). Default "Untitled report".

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_create_risk ~267

Record an accepted risk on a program, initiative or work item. A risk NEVER blocks: it does not change status or dispatchability, is not a dependency and does not touch the critical path. Requires an owner (defaults to you) and either `reviewBy` or `acceptedUntilMilestoneId`. Requires `write` scope.

NameTypeReqDescription
acceptedUntilMilestoneIdstring–Program milestone id the risk is accepted until.
descriptionstring–What was accepted and why.
followUpWorkItemIdsarray–Work items that will retire the risk.
mitigationstring–Mitigation or fallback.
originstring–Where the decision happened (default manual).
ownerUidstring–Owner user id. Defaults to the key holder.
reviewBystring–UTC date YYYY-MM-DD the risk must be reviewed again.
severitystring–Default medium.
statusstring–Default ACCEPTED on create.
subjectIdstringyesProgram, initiative or work item id.
subjectKindstringyesWhat the risk is attached to.
titlestringyesShort statement of the accepted risk.
triggerstring–The condition under which this becomes a real problem.

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_create_signal ~140

Capture a signal — a raw data point, customer quote, support ticket, or market observation that may inform product direction. Signals are refined into opportunities. Requires `write` scope.

NameTypeReqDescription
bodystring–Full text of the signal (quote, observation, or description).
requesterContactstring–Contact details for the requester (email, Slack handle, etc.).
requesterNamestring–Name of the person who surfaced this signal.
sourcestring–Where the signal came from. Allowed: client | sales | stakeholder | internal | strategy (default internal).
titlestringyesShort summary of the signal.

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_create_skill ~388

Add ONE skill to the company library: an instruction every Code Studio and Crew agent reads verbatim when it applies. Use it to turn a team's documents into skills: one skill per distinct procedure or rule set (never one per paragraph, never one giant skill), keeping only what the document says. Show the person the skills you will add and add them only after they agree. name is unique in the library; category is lower-case and hyphenated (coding-standards, workflow, governance, communication); description is ONE line saying when the skill applies; content is up to 8000 characters (split a longer document by topic). Never put credentials, tokens, customer data or personal data in a skill. Errors to handle: 409 duplicate_skill (a skill has that name: pick another name or leave it), 409 similar_skill (one already covers the same rule: tell the person; pass force: true only if they want both), 409 skill_content_flagged (the text asks an agent to weaken a safeguard: rewrite it, or the person saves it from the Skills page). The skill is not offered to the Oracle until an Owner or Operator turns that on. Requires `write` scope and the Owner, Operator or Editor role.

NameTypeReqDescription
categorystringyesLower-case, hyphenated group, e.g. "coding-standards" or "workflow".
contentstringyesThe instruction agents read verbatim, up to 8000 characters.
descriptionstring–One line, at most 200 characters, saying when the skill applies.
forceboolean–Add even though a skill with the same intent exists. Only when the person asked for both.
languagesarray–Only for repositories in these languages. Every language when left out.
namestringyesWhat a teammate would call the skill.

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_create_studio_checkpoint ~49

Capture remote workspace files, including staged and untracked changes, as a persistent checkpoint.

NameTypeReqDescription
labelstring––
sessionIdstringyesOwned Code Studio session ID.

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_create_studio_pull_request ~97

Create or reuse a draft PR for the persisted session branch after checking its exact pushed HEAD. Uses your connected GitHub identity. Does not mark ready or merge.

NameTypeReqDescription
basestring––
bodystringyes–
expectedHeadShastringyes–
repoFullNamestring––
sessionIdstringyesOwned Code Studio session ID.
titlestringyes–

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_create_studio_session ~167

Prepare a direct coding session or attach it to an existing initiative. Does not start execution. Context is a reference; local edits are not uploaded to the remote checkout. To hand over uncommitted local changes as well, run `anyforge studio create --uncommitted` in the checkout instead. additionalRepos needs an explicit repoFullName.

NameTypeReqDescription
additionalReposarray––
branchstring––
contextstring––
idempotencyKeystringyesStable unique request key. Reuse only when retrying exactly this request.
initiativeIdstring|null––
provenanceobject––
repoFullNamestring––
titlestring––
unboundboolean––

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_create_theme ~153

Create a theme — a.k.a. a CLUSTER, and the same record as the delivery program it drives. Themes give the roadmap structure above individual initiatives and are what the strategy layer ties to. Requires `write` scope.

NameTypeReqDescription
descriptionstring–What this theme covers and why it matters.
namestringyesTheme name.
objectivestring–Free-text outcome for the roadmap card. Not the strategy link: work reaches an objective when its initiatives name key results (anyforge_set_initiative_key_results).
statusstring–Theme status. Allowed: NOW | NEXT | LATER | DONE | ARCHIVED (default NOW). LATER is shown as "Beyond".

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_create_work_item ~1,354

Create a new work item in the backlog (status BACKLOG). Requires `write` scope.

NameTypeReqDescription
acceptanceCriteriastring–Optional acceptance criteria.
allowedWritePathsarray|null–File write scope: a hard boundary on the repository files the crew may change, as relative patterns (literal, * or **; [ and ] are literal characters, so src/pages/[slug].astro is a valid entry). nul…
assigneeUidstring–Human executor — an approved editor+ member, by uid or email (anyforge_list_members lists both). Files the item for a person; it still lands in BACKLOG until `begin`.
attachmentsarray–Evidence references such as URLs or storage references. Do not send raw file bytes.
branchNamestring|null–Branch this item's crew works on, instead of the name derived from the workspace's branch naming (for example feature/csv-export). Letters, digits, '.', '_', '-' and '/'; not main, master or another…
classOfServicestring–File this as an interrupt in the expedite lane.
codebaseIdstring–Optional AnyForge codebase override.
continuesPullRequeststring|null–When this work continues an open pull request, its link (https://github.com/{owner}/{repo}/pull/{number}) in the item's repository. AnyForge reads the pull request and sets the item's branch to its h…
dedupeByExternalIdboolean–Legacy: use externalRef.dedupe. With externalId, return the item that already carries it instead of filing a second one.
demandFunctionstring––
dependsOnarray–Work-item ids that must finish first.
descriptionstring–Detailed description.
dueDatestring–ISO yyyy-mm-dd due date.
estimatestring–Effort estimate as a person says it — "2h", "1.5d", "1w", or a number of days. Stored as operator-days.
estimateBasisstring––
estimatePointsnumber|string–Point estimate on the point scale this workspace uses (Fibonacci, linear, exponential, or a T-shirt size such as "M"). Refused while the workspace estimates in time. Points never feed capacity plans.
estimatedOperatorDaysnumber––
externalIdstring–Legacy: use externalRef.key. The id this work has in another system, shown in the title as [ID].
externalRefobject–Where this work lives in another system, the same shape the item's externalRef reads back. Do not send it with externalId or dedupeByExternalId.
folderScopestring|null–Repository folder this item's work is in, for a monorepo (for example apps/web). The crew installs that folder's Node project, is told to work there, runs tests from it by default, and gets that fold…
incidentobject–Incident severity and impact metadata when the item is an incident.
initiativeIdstring–Optional parent initiative id (allocates a {CODE}-NNN).
migrationStrategystring|null–Migration only: copy, history-preserving, or subtree.
prioritystringyesP0 is highest priority; `none` files the item with no priority.
repoUnconfirmedboolean––
reportedByobject––
reportedMilestoneIdstring–Program milestone (wave) this was REPORTED against — provenance only, never scheduling. Requires an initiative that belongs to a program, and must be one of that program's milestone ids.
sourceGithubBranchstring|null–Migration only: source branch to copy from.
sourceGithubRepostring|null–Migration only: read-only source repository to copy from. The fields below need it.
sourceGithubShastring|null–Migration only: source commit to copy from.
sourcePathstring|null–Migration only: path in the source repository to copy.
suggestedInitiativeIdstring––
suggestedRepoFullNamestring––
tagsarray–Labels for the new item (the Console's Labels field). Labels are trimmed, lower-cased and deduplicated; at most 20 per item, 40 characters each. A label in one of the workspace's label groups replace…
targetGithubBranchstring|null–Base branch this item's crew branches from and opens its pull request against (for example feature/x), instead of the initiative's source branch. Letters, digits, '.', '_', '-' and '/'; an integratio…
targetGithubRepostring|null–Repository this item will modify; must be one of the initiative's repositories. To scope the work to a folder, use folderScope, not targetPath.
targetPathstring|null–Migration only: where the copied source lands in the target repository. Not a working folder for ordinary work; use folderScope for that.
teamSlugstring––
titlestringyesWork item title.
triageTypestring––
typestringyesClassifies the work item.
unplannedboolean––
unroutedboolean––

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_decide_crew_permission ~136

Approve or deny the permission a crew in PERMISSION_PENDING is waiting on (see pendingPermissionRequest on anyforge_get_crew). A tool permission applies for the rest of the run; an MCP write approval decides that one call. Pass approvalId to refuse a decision on a newer request. Requires `approve` scope. Only call when the operator decides.

NameTypeReqDescription
approvalIdstring–The pending request's approvalId, when it has one.
commentstring–Optional reason, kept with the decision.
crewIdstringyesThe crew id.
decisionstringyes–

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_delete_initiative ~68

Delete a DRAFT initiative by id. Only DRAFT initiatives can be deleted — once decomposed / in progress, archive it via anyforge_update_initiative (status ARCHIVED) instead. Requires `write` scope.

NameTypeReqDescription
initiativeIdstringyesThe initiative id.

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_delete_key_result ~52

Permanently delete a key result. IRREVERSIBLE — the reading history goes with it. Consider archiving instead. Requires `write` scope.

NameTypeReqDescription
idstringyesThe key result id.

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_delete_objective ~70

Permanently delete an objective. IRREVERSIBLE. Refuses with 409 `objective_has_key_results` while measures still hang off it; work reaches an objective only through those, so nothing else is affected. Requires `write` scope.

NameTypeReqDescription
idstringyesThe objective id.

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_delete_opportunity ~62

Permanently hard-delete an opportunity by ID. This is irreversible — prefer archiving (anyforge_update_opportunity with archived: true) unless you are certain. Requires `write` scope.

NameTypeReqDescription
idstringyesID of the opportunity to delete.

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_delete_pillar ~63

Permanently delete a pillar. IRREVERSIBLE, and refuses with 409 `pillar_has_objectives` while any objective still sits under it — move or delete those first. Requires `write` scope.

NameTypeReqDescription
idstringyesThe pillar id.

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_delete_program ~87

Delete a program by id. By default its child initiatives are detached (kept, unlinked); pass deleteChildren: true to also delete every child initiative and its work items. This is irreversible. Requires `write` scope.

NameTypeReqDescription
deleteChildrenboolean–Also delete child initiatives + work items (default false = detach).
programIdstringyesThe program id.

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_delete_signal ~60

Permanently hard-delete a signal by ID. This is irreversible — prefer archiving (anyforge_update_signal with archived: true) unless you are certain. Requires `write` scope.

NameTypeReqDescription
idstringyesID of the signal to delete.

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_delete_theme ~60

Permanently hard-delete a theme by ID. This is irreversible — prefer archiving (anyforge_update_theme with archived: true) unless you are certain. Requires `write` scope.

NameTypeReqDescription
idstringyesID of the theme to delete.

Structured output declared, but exposes no named fields.

No examples provided.

anyforge_delete_triage_eval_case ~31

Delete one triageEvalCases entry by id.

NameTypeReqDescription
caseIdstringyes–

Structured output declared, but exposes no named fields.

No examples provided.

Install

How do I install the AnyForge MCP server?

AnyForge runs locally as an npm package, launched with npx -y @anyforge/mcp-server. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · @anyforge/mcp-server

# add to Claude Code
claude mcp add ai-anyforge-anyforge -- npx -y @anyforge/mcp-server
Common questions

What is the AnyForge MCP server?

AnyForge is an MCP server listed in the public MCP registry as ai.anyforge/anyforge. Approve plans, track initiatives and work items, and steer AI engineering crews in AnyForge. This page covers its npm package (@anyforge/mcp-server).

Is the AnyForge MCP server safe to use?

AnyForge scores 65 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the AnyForge MCP server expose?

AnyForge exposes 229 tools: anyforge_branch_studio_session, anyforge_rewind_studio_session, anyforge_update_studio_review_finding, anyforge_get_studio_pr_comments, anyforge_get_studio_pr_jobs, and 224 more. Their descriptions and schemas cost roughly 41,840 tokens of context every time the server is loaded.

Is the AnyForge MCP server still maintained?

AnyForge is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the AnyForge MCP server under?

AnyForge declares the UNLICENSED licence, which is not on the OSI-approved list. Read the terms before using it at work, and note this covers the source only, not the cost of any service it calls.