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.

AIMFP

PYPI · AIMFP

Database-driven directives and project tracking for modular functional-procedural AI coding

Available components

76 Trust /100

Last scanned (8 hours ago)

Scores higher than 74% of PyPI 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 Security100
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Runs setuptools.build_meta at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
  • 0 of 1 dependencies flagged as unhealthy. View diagnostics → Pass
Provenance & Transparency84
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to aryanduntley/aimfp). View diagnostics → Pass
  • License check failed: the license (PolyForm-Noncommercial-1.0.0) isn't a recognized OSI-approved license. See how to fix → Fail
  • Actively maintained (last published 4 days ago).Pass
  • Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability72
  • AI-judged instruction clarity (good).Pass
  • Tool/resource definitions use about 29231 tokens (~97/item across 300 items; 300 tools + 0 resources), lean.Pass
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
  • Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety96
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 30 of 36 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "detect_conflicts_before_merge" implies "merge" and declares readOnlyHint instead, contradicting what its own name says it does. See how to fix → Partial
  • An AI judge read all 301 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities60
  • Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28. See how to fix → Fail

Unverified: 1 category

A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

What we tested

Checks we ran (15)

  • Malware scan
  • Known CVEs
  • Install scripts
  • Dependency health
  • Source repository
  • Provenance
  • License
  • Maintenance
  • Security disclosure
  • Schema quality
  • Tool coverage
  • Injection markers
  • Destructive annotations
  • Judged manipulation
  • MCP protocol

Checks we could not complete (1)

These are gaps on our side, not findings about this package. We only credit what we can confirm, so a category made up entirely of them scores 0.

  • Stability in Stability & Change Management (scores 0 for this)Stability not yet verified: not enough scan history yet (needs a 30-day window).

Does not apply to this package (2)

  • Endpoint SecurityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.
  • Transport & ReachabilityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.

The score does not measure everything. What the score does not measure →

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.

  • 1 Nov 26 +15
    • Malware scan: unverified → pass ▲ security
  • 31 Oct 26 61

    First indexed and scored.

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 pypi/aimfp@1.70.0

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem pypi
Reason Verified
Discovered via Registry attestation endpoint
Source repo aryanduntley/aimfp
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/aryanduntley/aimfp/.github/workflows/python-publish.yml@refs/tags/v1.70.0
Rekor log index 3615397773
Predicate type PyPI publish attestation https://docs.pypi.org/attestations/publish/v1
Subject digest sha256:fcce2705118cfc740b66bc24b6173123b4aa8c35fdcb0d00ace41d8fdde7cac7

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend Known build tool setuptools.build_meta

Background: Why install scripts are a supply-chain risk →

Dependencies 1 package
Packages resolved 1
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 300 exposed · ~27,909 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
get_incomplete_items ~51

Get incomplete items for any parent type

NameTypeReqDescription
for_idintegeryesParent ID
for_tablestringyes"tasks", "subtasks", "sidequests" (accepts singular)

No output schema declared.

No examples provided.

get_incomplete_milestones ~78

Get all non-completed milestones

NameTypeReqDescription
detail_levelstring–'lean' (default): descriptions are null. 'full': descriptions included.
include_task_countsboolean–Attach task_counts to each milestone: {pending, in_progress, blocked, completed, total} (zeros included), from one grouped query.

No output schema declared.

No examples provided.

get_incomplete_sidequests ~19

Get all non-completed sidequests

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_incomplete_subtasks ~19

Get all non-completed subtasks

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_incomplete_subtasks_by_task ~31

Get incomplete subtasks for specific task

NameTypeReqDescription
task_idintegeryesTask ID

No output schema declared.

No examples provided.

get_incomplete_tasks ~88

Get all unfinished tasks (pending, in_progress, blocked) as flat task rows. Does NOT include subtasks, sidequests or items: use get_open_work for the whole open tree (tasks with their open items and subtasks, plus sidequests) in one call.

NameTypeReqDescription
detail_levelstring–'lean' (default): descriptions are null. 'full': descriptions included.

No output schema declared.

No examples provided.

get_incomplete_tasks_by_milestone ~58

Get open tasks for a milestone with related subtasks/sidequests

NameTypeReqDescription
milestone_idintegeryesID of the milestone to query tasks for
skip_pendingboolean–If true, excludes pending tasks

No output schema declared.

No examples provided.

get_infrastructure_by_type ~46

Get all infrastructure of specific type

NameTypeReqDescription
typestringyesInfrastructure type (e.g., 'language', 'package', 'testing', 'database', 'build_tool')

No output schema declared.

No examples provided.

get_interactions_by_file ~100

Get all interactions involving functions in a file or a set of files (file_ids), each with source and target function names and file paths — one call for a feature's whole dependency picture.

NameTypeReqDescription
file_idinteger–File ID to look up interactions for
file_idsarray–Several file IDs at once (combined with file_id): every edge touching any of them, each once, with source/target names and paths.

No output schema declared.

No examples provided.

get_interactions_by_function ~92

Get all interactions for a function (both as source and target) — trace dependency graphs

NameTypeReqDescription
file_pathstring–With function_name: only the function defined in this project-relative file.
function_idinteger–Exact function ID (takes precedence over function_name).
function_namestring–Function name to look up (all functions with that name unless file_path narrows it).

No output schema declared.

No examples provided.

get_items_for_sidequest ~50

Get items for sidequest

NameTypeReqDescription
sidequest_idintegeryesSidequest ID
statusstring–'pending', 'in_progress', 'completed' (NULL = all)

No output schema declared.

No examples provided.

get_items_for_subtask ~50

Get items for subtask

NameTypeReqDescription
statusstring–'pending', 'in_progress', 'completed' (NULL = all)
subtask_idintegeryesSubtask ID

No output schema declared.

No examples provided.

get_items_for_task ~51

Get items for task, optionally filtered by status

NameTypeReqDescription
statusstring–'pending', 'in_progress', 'completed' (NULL = all)
task_idintegeryesTask ID

No output schema declared.

No examples provided.

get_merge_history ~142

(For use with InterCommAIMFP) Read tool over the existing merge_history and work_branches tables: which branches were integrated, when, with how many conflicts, by whom. Lets the master answer 'has this branch already been applied?' (idempotency / resume after interruption) and gives a human an audit trail. Pure read; small surface over data merge_worker_branch records.

NameTypeReqDescription
branchstring–Optional source-branch filter (exact match on merge_history.source_branch and work_branches.branch_name)
sincestring–Optional ISO timestamp lower bound on merge_history.merge_timestamp (e.g. '2026-06-26')

No output schema declared.

No examples provided.

get_milestones_by_path ~91

Get all milestones for a completion path

NameTypeReqDescription
completion_path_idintegeryesCompletion path ID
detail_levelstring–'lean' (default): descriptions are null. 'full': descriptions included.
include_task_countsboolean–Attach task_counts to each milestone: {pending, in_progress, blocked, completed, total} (zeros included), from one grouped query.

No output schema declared.

No examples provided.

get_milestones_by_status ~96

Get milestones filtered by status

NameTypeReqDescription
detail_levelstring–'lean' (default): descriptions are null. 'full': descriptions included.
include_task_countsboolean–Attach task_counts to each milestone: {pending, in_progress, blocked, completed, total} (zeros included), from one grouped query.
statusstringyes'pending', 'in_progress', 'completed', 'blocked'

No output schema declared.

No examples provided.

get_module_by_name ~39

Get module by name. Returns module record with path, purpose, and external_dependencies.

NameTypeReqDescription
namestringyesModule name to look up

No output schema declared.

No examples provided.

get_module_by_path ~28

Get module by directory path.

NameTypeReqDescription
pathstringyesDirectory path to look up

No output schema declared.

No examples provided.

get_module_dependencies ~51

Get cross-module dependencies. Finds interactions where a function in this module calls a function in a different module via module_files junction. Returns aggregated counts per target module.

NameTypeReqDescription
module_idintegeryesModule ID

No output schema declared.

No examples provided.

get_module_files ~32

Get all files assigned to a module via module_files junction table.

NameTypeReqDescription
module_idintegeryesModule ID

No output schema declared.

No examples provided.

get_module_for_file ~39

Find which module a file belongs to. Reverse lookup via module_files junction table.

NameTypeReqDescription
file_idintegeryesFile ID to look up

No output schema declared.

No examples provided.

get_module_functions ~37

Get all functions in module files. Joins through module_files junction to files to functions.

NameTypeReqDescription
module_idintegeryesModule ID

No output schema declared.

No examples provided.

get_module_types ~37

Get all types in module files. Joins through module_files junction to files to types.

NameTypeReqDescription
module_idintegeryesModule ID

No output schema declared.

No examples provided.

get_next_completion_path ~19

Get lowest order_index with status != completed

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_notes_comprehensive ~227

Query notes with structured filters (id, type, reference, source, severity, directive). Use note_id to read one note in full, e.g. after search_notes returned a preview.

NameTypeReqDescription
directive_namestring–Filter by directive name
exclude_note_typesarray–List of note_type values to exclude from results (e.g., ['completed', 'obsolete'])
limitinteger–Maximum notes returned, newest first (default: all)
note_idinteger–Exact note ID — returns that single note with full content. Errors if not found or excluded by other filters
note_typestring–Filter by note_type
preview_charsinteger–Cap each note's content at this many characters (default: full content)
reference_idinteger–Filter by reference ID
reference_tablestring–Filter by reference table
severitystring–Filter by severity ('info', 'warning', 'error')
sourcestring–Filter by source ('ai', 'user', 'directive')

No output schema declared.

No examples provided.

get_open_work ~130

Every open task (pending, in_progress, blocked) with its open items and open subtasks (each with open items), plus open sidequests with their open items, in one read-only call. Ordered in_progress first, then by priority. Replaces get_incomplete_tasks followed by one get_items_for_task per task.

NameTypeReqDescription
include_descriptionsboolean–Add truncated descriptions to each task, subtask and sidequest. Off keeps the payload small.
milestone_idinteger–Limit to tasks of one milestone (and their subtasks and sidequests). Omit for all open work.

No output schema declared.

No examples provided.

get_pending_notices ~105

Get one-time release notices this project has not yet been shown. Returns ONLY unacknowledged notices, already filtered for applicability — a notice pinned to a schema version stays hidden until that database has actually reached it. An empty result is the normal steady state. Called automatically by aimfp_run(is_new_session=true), which puts the result in data.notices and omits the key entirely when nothing is pending, so you never need to call this yourself in a normal session.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_project ~15

Get project metadata (single entry)

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_project_fields ~32

Get field names and types for a specific table

NameTypeReqDescription
tablestringyesTable name to get fields for

No output schema declared.

No examples provided.

get_project_json_parameters ~37

Get available fields for table to use with generic add/update operations

NameTypeReqDescription
tablestringyesTable name to get available fields for

No output schema declared.

No examples provided.

get_project_root ~17

Get project root directory from infrastructure table

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_project_schema ~16

Get complete schema for project database

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_project_tables ~16

List all tables in project database

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_recent_directive_errors ~131

Tail the JSON-lines directive error log, newest first, optionally filtered to one directive. Each record carries directive_id, error_type, message, timestamp, and a full traceback when the failure came from a handler exception. The database keeps only the last error per directive (store_last_error_only defaults to 1), so this file is the only place error history survives.

NameTypeReqDescription
directive_idinteger–Filter to one directive, or omit for all
limitinteger–Maximum records to return, newest first
project_rootstring–Project root; defaults to the session root

No output schema declared.

No examples provided.

get_settings_fields ~32

Get field names and types for a specific table

NameTypeReqDescription
tablestringyesTable name to get fields for

No output schema declared.

No examples provided.

get_settings_json_parameters ~37

Get available fields for table to use with generic add/update operations

NameTypeReqDescription
tablestringyesTable name to get available fields for

No output schema declared.

No examples provided.

get_settings_schema ~17

Get complete schema for user settings database

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_settings_tables ~17

List all tables in user settings database

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_sidequest_files ~88

Get the files worked on for a sidequest (task_files junction). Files are linked automatically when reserved, finalized, cataloged, or updated (and when their functions/types are finalized, cataloged, or updated) while a work item is in_progress — the most recent in_progress sidequest, else subtask, else task.

NameTypeReqDescription
sidequest_idintegeryesSidequest ID

No output schema declared.

No examples provided.

get_sidequest_flows ~31

Get flow IDs for a sidequest

NameTypeReqDescription
sidequest_idintegeryesSidequest ID

No output schema declared.

No examples provided.

get_sidequests_comprehensive ~123

Advanced sidequest search

NameTypeReqDescription
date_range_createdarray–[start_date, end_date]
date_range_updatedarray–[start_date, end_date]
limitinteger–Maximum results
prioritystring–'low', 'medium', 'high', 'critical'
statusstring–'pending', 'in_progress', 'completed', 'blocked' (NULL = all)
subtask_idinteger–Filter by paused subtask
task_idinteger–Filter by paused task

No output schema declared.

No examples provided.

get_source_directory ~17

Get project source directory from infrastructure table

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_state_operations_template ~41

Return the Python state_operations.py template content for AI to adapt to the project's language. Use this to retrieve the CRUD helper template for .state/runtime.db.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_structure_health ~127

Report the project's modularity layer and every gap in it: themes -> flows -> files, open paths -> themes, open milestones -> flows, module membership. Gaps: flows without theme, themes without flows, files without flow (and no no_flow_reason), files under a module path but in no module, open paths without themes, open milestones without flows, oversized flow descriptions (split candidates). The same report appears in aimfp_status, aimfp_end and watchdog reminders.

NameTypeReqDescription
include_summaryboolean–Also return the themes/flows/paths/milestones map (default true)

No output schema declared.

No examples provided.

get_subtasks_by_task ~56

Get subtasks for task, optionally filtered by status

NameTypeReqDescription
statusstring–'pending', 'in_progress', 'completed', 'blocked' (NULL = all)
task_idintegeryesTask ID

No output schema declared.

No examples provided.

get_subtasks_comprehensive ~108

Advanced subtask search

NameTypeReqDescription
date_range_createdarray–[start_date, end_date]
date_range_updatedarray–[start_date, end_date]
limitinteger–Maximum results
prioritystring–'low', 'medium', 'high', 'critical'
statusstring–'pending', 'in_progress', 'completed', 'blocked' (NULL = all)
task_idinteger–Filter by task

No output schema declared.

No examples provided.

get_supportive_context ~126

Returns supportive context reference documents by variant. All variants auto-provided: core + coding by aimfp_run(is_new_session=true) for initialized projects, case2 by aimfp_run when Case 2 active, init by aimfp_init(). Also callable on demand to reload stale context.

NameTypeReqDescription
variantstring–Which context to load: 'core' (workflow, routing, edge cases — default), 'init' (discovery depth, initialization), 'coding' (file loop, DRY, interactions, types), 'case2' (Use Case 2 pipeline)

No output schema declared.

No examples provided.

get_system_prompt ~194

Returns the AIMFP system prompt (AIMFP's record-keeping backbone) plus where and how to place it. The user's FIRST move — especially for plugin installs where nothing was downloaded — is to ask the AI to add the AIMFP system prompt; the AI calls this and writes the file. Does NOT write anything: returns the prompt text + target path + placement policy; the AI does the write, keeping AIMFP's 'never write outside .aimfp-project/' guarantee. AIMFP content is always placed FIRST; if the existing instructions file is extensive the AI must review/consolidate with the user instead of blindly prepending.

NameTypeReqDescription
existing_contentstring–Current text of the target instructions file (e.g. CLAUDE.md) if it already exists — read it and pass it in so the placement guidance can account for size/consolidation. Omit/empty if there is no exi…

No output schema declared.

No examples provided.

get_task_context ~257

Get complete context for resuming work on a specific task/subtask/sidequest. Single call retrieves item + associated items + linked files + their functions and modules + flows + optionally interactions and notes. Files are linked automatically when reserved, finalized, cataloged, or updated (and when their functions/types are finalized, cataloged, or updated) while a work item is in_progress — the most recent in_progress sidequest, else subtask, else task. A task's context includes its subtasks' files. Uses cached project root internally.

NameTypeReqDescription
detail_levelstring–'lean' (default): the work item in full; items with descriptions only while open; flows id/name; files with their functions as id/name; modules id/name/path/purpose. 'full': every record as stored (f…
include_historyboolean–Include note history for task
include_interactionsboolean–Include function dependency interactions
task_idintegeryesID of the task/subtask/sidequest
task_typestring–Type of task: 'task', 'subtask', 'sidequest'. Auto-detected from task_id if omitted.

No output schema declared.

No examples provided.

get_task_files ~92

Get the files worked on for a task, including files linked to its subtasks (task_files junction). Files are linked automatically when reserved, finalized, cataloged, or updated (and when their functions/types are finalized, cataloged, or updated) while a work item is in_progress — the most recent in_progress sidequest, else subtask, else task.

NameTypeReqDescription
task_idintegeryesTask ID

No output schema declared.

No examples provided.

Install

How do I install the AIMFP MCP server?

AIMFP runs locally as a PyPI package, launched with uvx aimfp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · aimfp

# add to Claude Code
claude mcp add aryanduntley-aimfp -- uvx aimfp
Common questions

What is the AIMFP MCP server?

AIMFP is an MCP server listed in the public MCP registry as io.github.aryanduntley/aimfp. Database-driven directives and project tracking for modular functional-procedural AI coding. This page covers its PyPI package (aimfp).

Is the AIMFP MCP server safe to use?

AIMFP scores 76 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. Its build provenance is signed and verified. 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 AIMFP MCP server expose?

AIMFP exposes 300 tools: acknowledge_notice, activate_user_directive, add_completion_path, add_directive_preference, add_file_flows, and 295 more. Their descriptions and schemas cost roughly 27,909 tokens of context every time the server is loaded.

Is the AIMFP MCP server still maintained?

AIMFP 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 AIMFP MCP server under?

AIMFP declares the PolyForm-Noncommercial-1.0.0 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.

What did VerifyMCP test on the AIMFP MCP server?

VerifyMCP ran 15 checks on AIMFP, covering Malware scan, Known CVEs, Install scripts, Dependency health and 11 more. One item could not be completed, a gap on our side rather than a finding about AIMFP: Stability. One category scores 0 for that reason, because we only credit what we can confirm. Endpoint Security and Transport & Reachability do not apply to a PyPI package, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.