AIMFP
PYPI · AIMFP
Database-driven directives and project tracking for modular functional-procedural AI coding
Available components
Last scanned (5 hours ago)
Scores higher than 74% of PyPI servers
Category Project Management
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.
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.
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 | allowlisted | 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 →
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 →
create_project ~144
Initialize project entry (one per database)
| Name | Type | Req | Description |
|---|---|---|---|
| goals | array | yes | Array of goal strings (e.g., ['Fast computation', 'No OOP']) |
| name | string | yes | Project name (e.g., 'MatrixCalculator') |
| purpose | string | yes | Project purpose (e.g., 'Build a pure functional matrix math library') |
| status | string | – | 'active', 'paused', 'completed', 'abandoned' |
| user_directives_status | string | – | NULL (Case 1), 'pending_discovery', 'pending_parse', 'in_progress', 'active', 'disabled' |
| version | integer | – | Tracks idea evolution (starts at 1) |
No output schema declared.
No examples provided.
create_project_backup ~93
Create a backup of .aimfp-project/ right now, ignoring any threshold. Zips everything except backups/ and watchdog/, adds a generated backup_summary.md, and rotates old archives per the backup_count setting, naming every archive it deletes (rotated, plus a warning sentence). The on-demand counterpart to the automatic inactivity check — call this when aimfp_run reports a scheduled backup due, or before any risky operation.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
create_state_database ~51
Create per-project state database (.state/runtime.db) from SQL schema. FP-compliant replacement for mutable global variables.
| Name | Type | Req | Description |
|---|---|---|---|
| source_directory | string | yes | Absolute path to project source directory (from infrastructure.source_directory) |
No output schema declared.
No examples provided.
create_user_branch ~40
Create work branch following aimfp-{user}-{number} convention
| Name | Type | Req | Description |
|---|---|---|---|
| purpose | string | yes | Branch purpose description |
| user | string | yes | Username |
No output schema declared.
No examples provided.
deactivate_user_directive ~44
Set directive status to 'paused'. Does NOT stop services - AI handles service shutdown via directive workflow.
| Name | Type | Req | Description |
|---|---|---|---|
| directive_id | integer | yes | ID of the directive to deactivate |
No output schema declared.
No examples provided.
delete_completion_path ~80
Delete completion path with milestone validation
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Completion path ID |
| note_reason | string | yes | Deletion reason |
| note_severity | string | yes | 'info', 'warning', 'error' |
| note_source | string | yes | 'ai' or 'user' |
| note_type | string | – | 'entry_deletion' |
No output schema declared.
No examples provided.
delete_custom_return_statement ~73
Delete custom return statement(s) for a helper function. By ID, by text, or all for a helper.
| Name | Type | Req | Description |
|---|---|---|---|
| helper_name | string | yes | Helper function name |
| statement | string | – | Specific statement text to delete (optional) |
| statement_id | integer | – | Specific row ID to delete (optional) |
No output schema declared.
No examples provided.
delete_file ~82
Delete file with comprehensive cross-reference validation
| Name | Type | Req | Description |
|---|---|---|---|
| file_id | integer | yes | File ID to delete |
| note_reason | string | yes | Deletion reason |
| note_severity | string | yes | 'info', 'warning', 'error' |
| note_source | string | yes | 'ai' or 'user' |
| note_type | string | – | 'entry_deletion' |
No output schema declared.
No examples provided.
delete_flow ~80
Delete flow with file validation
| Name | Type | Req | Description |
|---|---|---|---|
| flow_id | integer | yes | Flow ID to delete |
| note_reason | string | yes | Deletion reason |
| note_severity | string | yes | 'info', 'warning', 'error' |
| note_source | string | yes | 'ai' or 'user' |
| note_type | string | – | 'entry_deletion' |
No output schema declared.
No examples provided.
delete_function ~226
Delete a function, deciding explicitly what happens to its interactions: refused (with the edges listed) unless repoint_to moves them to the function that took over its job, or confirm_cascade removes them. Every moved or removed edge is recorded in the deletion note so it can be undone. Type relationships must be unlinked first.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm_cascade | boolean | – | Delete the function's interactions with it. Without repoint_to or confirm_cascade, a function with interactions is refused and the edges are listed. |
| function_id | integer | yes | Function ID to delete |
| note_reason | string | yes | Deletion reason |
| note_severity | string | yes | 'info', 'warning', 'error' |
| note_source | string | yes | 'ai' or 'user' |
| note_type | string | – | 'entry_deletion' |
| repoint_to | integer | – | Function ID that takes over this function's interactions (the split/move case). Edges that would become self-edges or duplicates are dropped. Every moved or dropped edge is written into the deletion… |
No output schema declared.
No examples provided.
delete_interaction ~78
Delete interaction
| Name | Type | Req | Description |
|---|---|---|---|
| interaction_id | integer | yes | Interaction ID to delete |
| note_reason | string | yes | Deletion reason |
| note_severity | string | yes | 'info', 'warning', 'error' |
| note_source | string | yes | 'ai' or 'user' |
| note_type | string | – | 'entry_deletion' |
No output schema declared.
No examples provided.
delete_item ~77
Delete item with status validation
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Item ID |
| note_reason | string | yes | Deletion reason |
| note_severity | string | yes | 'info', 'warning', 'error' |
| note_source | string | yes | 'ai' or 'user' |
| note_type | string | – | 'entry_deletion' |
No output schema declared.
No examples provided.
delete_milestone ~80
Delete milestone with task validation
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Milestone ID |
| note_reason | string | yes | Deletion reason |
| note_severity | string | yes | 'info', 'warning', 'error' |
| note_source | string | yes | 'ai' or 'user' |
| note_type | string | – | 'entry_deletion' |
No output schema declared.
No examples provided.
delete_module ~38
Delete a module. CASCADE removes module_files junction entries. Files themselves are NOT deleted.
| Name | Type | Req | Description |
|---|---|---|---|
| module_id | integer | yes | Module ID to delete |
No output schema declared.
No examples provided.
delete_note ~26
Delete note (discouraged)
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Note ID to delete |
No output schema declared.
No examples provided.
delete_project_entry ~92
Smart delete with automatic routing to specialized functions when needed
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Record ID |
| note_reason | string | yes | Deletion reason |
| note_severity | string | yes | "info", "warning", "error" |
| note_source | string | yes | "ai" or "user" |
| note_type | string | yes | "entry_deletion" |
| table | string | yes | Table name |
No output schema declared.
No examples provided.
delete_reserved ~121
Delete abandoned reserved entries (escape hatch for cancelled reserve operations)
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Reserved record ID to delete |
| note_reason | string | yes | Deletion reason (e.g., 'User cancelled operation', 'Correcting reservation error') |
| note_severity | string | yes | 'info', 'warning', 'error' |
| note_source | string | yes | 'ai' or 'user' |
| note_type | string | – | 'entry_deletion' |
| table | string | yes | Table name (must be 'files', 'functions', or 'types') |
No output schema declared.
No examples provided.
delete_settings_entry ~42
Delete entry from user_preferences.db table
| Name | Type | Req | Description |
|---|---|---|---|
| record_id | integer | yes | Record ID to delete |
| table | string | yes | Table name in user_preferences.db |
No output schema declared.
No examples provided.
delete_sidequest ~86
Delete sidequest with item validation (same logic as delete_task)
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Sidequest ID |
| note_reason | string | yes | Deletion reason |
| note_severity | string | yes | 'info', 'warning', 'error' |
| note_source | string | yes | 'ai' or 'user' |
| note_type | string | – | 'entry_deletion' |
No output schema declared.
No examples provided.
delete_subtask ~86
Delete subtask with item validation (same logic as delete_task)
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Subtask ID |
| note_reason | string | yes | Deletion reason |
| note_severity | string | yes | 'info', 'warning', 'error' |
| note_source | string | yes | 'ai' or 'user' |
| note_type | string | – | 'entry_deletion' |
No output schema declared.
No examples provided.
delete_task ~77
Delete task with item validation
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Task ID |
| note_reason | string | yes | Deletion reason |
| note_severity | string | yes | 'info', 'warning', 'error' |
| note_source | string | yes | 'ai' or 'user' |
| note_type | string | – | 'entry_deletion' |
No output schema declared.
No examples provided.
delete_theme ~80
Delete theme with flow validation
| Name | Type | Req | Description |
|---|---|---|---|
| note_reason | string | yes | Deletion reason |
| note_severity | string | yes | 'info', 'warning', 'error' |
| note_source | string | yes | 'ai' or 'user' |
| note_type | string | – | 'entry_deletion' |
| theme_id | integer | yes | Theme ID to delete |
No output schema declared.
No examples provided.
delete_type ~80
Delete type with relationship validation
| Name | Type | Req | Description |
|---|---|---|---|
| note_reason | string | yes | Deletion reason |
| note_severity | string | yes | 'info', 'warning', 'error' |
| note_source | string | yes | 'ai' or 'user' |
| note_type | string | – | 'entry_deletion' |
| type_id | integer | yes | Type ID to delete |
No output schema declared.
No examples provided.
delete_type_function ~80
Remove type-function relationship
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | types_functions junction table ID |
| note_reason | string | yes | Deletion reason |
| note_severity | string | yes | 'info', 'warning', 'error' |
| note_source | string | yes | 'ai' or 'user' |
| note_type | string | – | 'entry_deletion' |
No output schema declared.
No examples provided.
delete_user_custom_entry ~118
Delete entry from user_directives.db table, writing an entry_deletion note in the same transaction
| Name | Type | Req | Description |
|---|---|---|---|
| note_reason | string | – | Why the row was deleted; recorded in the entry_deletion note ('no reason given' when omitted) |
| note_source | string | – | Who deleted it: 'ai', 'user', or 'directive' (default 'ai'); stored in the note's metadata_json |
| record_id | integer | yes | Record ID to delete |
| table | string | yes | Table name in user_directives.db |
No output schema declared.
No examples provided.
detect_conflicts_before_merge ~37
Dry-run merge analysis - retrieves potential conflict data for AI to evaluate
| Name | Type | Req | Description |
|---|---|---|---|
| source_branch | string | yes | Branch to merge from |
No output schema declared.
No examples provided.
detect_external_changes ~20
Compare current Git HEAD with project.last_known_git_hash
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
detect_state_conflicts ~127
(For use with InterCommAIMFP) OPTIONAL pre-apply planning aid: export each pending worker branch and report where two or more branches touch the SAME semantic entity or edge, so the master can re-partition or deliberately order integration BEFORE applying any changeset. Pure read (built entirely from export_state_changeset). An overlap is a heuristic warning, not a verdict — the authoritative 3-way resolution still happens in apply_state_changeset.
| Name | Type | Req | Description |
|---|---|---|---|
| branches | array | yes | List of {branch, base_commit, worker_id?} objects to cross-reference for semantic-key overlap |
No output schema declared.
No examples provided.
execute_merge ~35
Execute git merge and return result. Updates work_branches table on success.
| Name | Type | Req | Description |
|---|---|---|---|
| source_branch | string | yes | Branch to merge from |
No output schema declared.
No examples provided.
export_state_changeset ~261
(For use with InterCommAIMFP) Export a semantic changeset of project.db between two committed git states (branch point -> branch tip), expressed entirely in stable semantic keys (file path, file+function/type name, module/theme/flow/path name, and work-hierarchy slugs) with branch-local integer PKs stripped. Each entity is classified add/modify/delete and each edge add/remove. This is the integer-free artifact the master applies to merge a worker's project-state into main without binary-blob conflicts or PK collisions. The changeset is ALSO persisted server-side under .aimfp-project/changesets/ and a small changeset_id handle + counts summary are returned, so the master can drive apply by handle instead of re-transcribing the full object. Pure read of git blobs (the export itself never mutates project.db); persistence writes only a JSON file under .aimfp-project/.
| Name | Type | Req | Description |
|---|---|---|---|
| base_commit | string | yes | Git commit the branch was based on (the 3-way base / branch point) |
| branch | string | yes | Git ref (branch name or commit) whose committed project.db is the branch intent |
| worker_id | string | – | Optional InterCommAIMFP worker identity; the master supplies it |
No output schema declared.
No examples provided.
file_has_changed ~35
Check if file changed using Git (if available) or filesystem timestamp
| Name | Type | Req | Description |
|---|---|---|---|
| file_id | integer | yes | File ID to check |
No output schema declared.
No examples provided.
finalize_file ~128
Mark a reserved file as tracked after writing it to disk. The path must be a regular file relative to the project root: '.', a directory, or a path leaving the project is refused. Triggers flow assignment and function/type tracking checks.
| Name | Type | Req | Description |
|---|---|---|---|
| file_id | integer | yes | Reserved ID |
| language | string | yes | Language |
| name | string | yes | Final name with _id_xx suffix |
| path | string | yes | File path |
| skip_id_naming | boolean | – | If true, skip _id_XX pattern validation (for files where ID naming was skipped during reservation) |
No output schema declared.
No examples provided.
finalize_files ~75
Batch-finalize multiple reserved files after writing them to disk. All-or-nothing operation. Each path must be a regular file relative to the project root ('.' or a directory is refused).
| Name | Type | Req | Description |
|---|---|---|---|
| files | array | yes | Array of file objects [{file_id, name, path, language, skip_id_naming?}, ...] |
No output schema declared.
No examples provided.
finalize_function ~120
Mark a reserved function as tracked after writing it. Triggers interaction and type-function relationship checks.
| Name | Type | Req | Description |
|---|---|---|---|
| file_id | integer | yes | File ID |
| function_id | integer | yes | Reserved function ID |
| name | string | yes | Final name with _idxx suffix |
| parameters | array | – | Function parameters |
| purpose | string | – | Function purpose |
| returns | object | – | Return value specification |
| skip_id_naming | boolean | – | If true, skip _id_XX pattern validation (for functions where ID naming was skipped during reservation) |
No output schema declared.
No examples provided.
finalize_functions ~61
Batch-finalize multiple reserved functions after writing them. Triggers interaction and type-function checks for all.
| Name | Type | Req | Description |
|---|---|---|---|
| functions | array | yes | Array of function objects [{function_id, name, file_id, purpose, parameters, returns, skip_id_naming?}, ...] |
No output schema declared.
No examples provided.
finalize_type ~115
Finalize reserved type after creation
| Name | Type | Req | Description |
|---|---|---|---|
| definition_json | object | yes | ADT definition |
| description | string | – | Type description |
| file_id | integer | – | File ID where type is defined |
| links | object | – | Links to related functions |
| name | string | yes | Final name with _idxx suffix |
| skip_id_naming | boolean | – | If true, skip _id_XX pattern validation (for types where ID naming was skipped during reservation) |
| type_id | integer | yes | Reserved type ID |
No output schema declared.
No examples provided.
finalize_types ~48
Finalize multiple reserved types
| Name | Type | Req | Description |
|---|---|---|---|
| types | array | yes | Array of type objects [{type_id, name, definition_json, description, links, file_id, skip_id_naming?}, ...] |
No output schema declared.
No examples provided.
find_directive_by_intent ~69
Match a natural-language user request to the most relevant directive(s). Use when the user describes what they want and you need to find which directive handles it.
| Name | Type | Req | Description |
|---|---|---|---|
| threshold | number | – | Confidence threshold |
| user_request | string | yes | User's natural language request describing behavior to change |
No output schema declared.
No examples provided.
find_directives_by_intent_keyword ~60
Find directive IDs matching one or more intent keywords (direct keyword lookup)
| Name | Type | Req | Description |
|---|---|---|---|
| keywords | – | yes | Single keyword string or array of keywords |
| match_mode | string | – | "any" for OR logic, "all" for AND logic |
No output schema declared.
No examples provided.
get_active_user_directives ~28
Get all user directives with status='active'. Convenience query for checking active directive count.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_all_completion_paths ~32
Get the project's ordered completion roadmap (stages from setup through completion). Each path contains milestones which contain tasks.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_all_directive_keywords ~25
Get list of all unique intent keywords available for searching (simple list)
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_all_directive_names ~80
Get list of all directive names (or filtered by types). Returns names only, NOT full directive data. AI queries by name when needs details.
| Name | Type | Req | Description |
|---|---|---|---|
| types | array | – | Optional array of directive types to filter: ['fp', 'project', 'git', 'user_preferences', 'user_system']. If not provided, returns ALL directive names. |
No output schema declared.
No examples provided.
get_all_directives ~20
Load all directives for caching (special orchestrator)
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_all_flows ~114
Get project flows (architectural groupings describing intended behavior): all of them, or the ones in flow_ids. Lean by default (descriptions null); detail_level='full' for descriptions. Check BEFORE starting any task to understand the architecture.
| Name | Type | Req | Description |
|---|---|---|---|
| detail_level | string | – | 'lean' (default): descriptions are null. 'full': descriptions included. |
| flow_ids | array | – | Only these flows, ordered by ID. IDs with no flow are named in return_statements. Omit for every flow. |
No output schema declared.
No examples provided.
get_all_infrastructure ~34
Get all infrastructure entries including standard fields (even if empty). Returns complete infrastructure table for session bundling and status reports.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_all_intent_keywords_with_counts ~24
Get all unique intent keywords with usage counts for analytics
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_all_modules ~26
Get all modules in the project. Returns list of all module records sorted by name.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_all_themes ~30
Get all project themes (high-level architectural areas). Use to orient on project structure before starting work.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_categories ~13
Get all directive categories
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
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
claude mcp add aryanduntley-aimfp -- uvx aimfp
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.