AIMFP
PYPI · AIMFP
Database-driven directives and project tracking for modular functional-procedural AI coding
Available components
Last scanned (9 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.
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 →
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 | 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 →
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 →
get_task_flows ~46
Get the architectural flow IDs for a task. Use to understand which part of the codebase a task touches and find relevant files.
| Name | Type | Req | Description |
|---|---|---|---|
| task_id | integer | yes | Task ID |
No output schema declared.
No examples provided.
get_tasks_by_milestone ~88
Get the tasks of a milestone (any status, or one status with status=...). Lean by default: descriptions null.
| Name | Type | Req | Description |
|---|---|---|---|
| detail_level | string | – | 'lean' (default): descriptions are null. 'full': descriptions included. |
| milestone_id | integer | yes | Milestone ID |
| status | string | – | Only tasks with this status. Omit for every status. |
No output schema declared.
No examples provided.
get_tasks_comprehensive ~109
Advanced task search with multiple filters
| Name | Type | Req | Description |
|---|---|---|---|
| date_range_created | array | – | [start_date, end_date] |
| date_range_updated | array | – | [start_date, end_date] |
| limit | integer | – | Maximum results |
| milestone_id | integer | – | Filter by milestone |
| priority | string | – | 'low', 'medium', 'high', 'critical' |
| status | string | – | 'pending', 'in_progress', 'completed', 'blocked' (NULL = all) |
No output schema declared.
No examples provided.
get_theme_by_name ~32
Get theme by name (fairly frequent)
| Name | Type | Req | Description |
|---|---|---|---|
| theme_name | string | yes | Theme name to look up |
No output schema declared.
No examples provided.
get_themes_for_flow ~28
Get all themes for a flow
| Name | Type | Req | Description |
|---|---|---|---|
| flow_id | integer | yes | Flow ID |
No output schema declared.
No examples provided.
get_themes_for_path ~37
Get the themes a completion path advances (id, name, description).
| Name | Type | Req | Description |
|---|---|---|---|
| completion_path_id | integer | yes | Completion path ID |
No output schema declared.
No examples provided.
get_tracking_notes ~74
Get tracking notes with optional filters
| Name | Type | Req | Description |
|---|---|---|---|
| directive_name | string | – | Filter by directive_name |
| note_type | string | – | Filter by note_type |
| reference_name | string | – | Filter by reference_name |
| reference_type | string | – | Filter by reference_type |
| severity | string | – | Filter by severity |
No output schema declared.
No examples provided.
get_tracking_settings ~15
Get all tracking feature flags
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_type_by_name ~99
Look up a tracked type by name with full definition and file location — use BEFORE reading source files. Returns definition_json and description.
| Name | Type | Req | Description |
|---|---|---|---|
| details_only | boolean | – | If true, return only id/name + definition_json/description/links (when AI already has the rest) |
| include_details | boolean | – | If false, omit definition_json/description/links for lightweight listing |
| type_name | string | yes | Type name to look up |
No output schema declared.
No examples provided.
get_unassigned_files ~38
Find files not assigned to any module. Useful for identifying tracking gaps — domain logic files that should belong to a module but haven't been assigned.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_user_custom_fields ~38
Get field names and types for a specific table in user_directives.db
| Name | Type | Req | Description |
|---|---|---|---|
| table | string | yes | Table name to get fields for |
No output schema declared.
No examples provided.
get_user_custom_json_parameters ~48
Get available fields for table to use with generic add/update operations. Returns field names, types, and whether required.
| Name | Type | Req | Description |
|---|---|---|---|
| table | string | yes | Table name to get available fields for |
No output schema declared.
No examples provided.
get_user_custom_schema ~19
Get complete schema SQL for user directives database
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_user_custom_tables ~18
List all tables in user directives database
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_user_directive_by_name ~34
Get a single user directive by its unique name
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Directive name (exact match) |
No output schema declared.
No examples provided.
get_user_directive_notes ~136
Get notes from user_directives.db with optional filters. All filters are AND logic. No filters returns all notes.
| Name | Type | Req | Description |
|---|---|---|---|
| exclude_note_types | array | – | List of note_type values to exclude from results (e.g., ['completed', 'obsolete']) |
| limit | integer | – | Maximum number of notes to return (default 100) |
| note_type | string | – | Filter by note_type |
| reference_id | integer | – | Filter by reference_id |
| reference_name | string | – | Filter by reference_name |
| reference_type | string | – | Filter by reference_type |
| severity | string | – | Filter by severity |
No output schema declared.
No examples provided.
get_user_setting ~33
Get project-wide user setting by key (fairly frequent)
| Name | Type | Req | Description |
|---|---|---|---|
| setting_key | string | yes | Setting key to retrieve |
No output schema declared.
No examples provided.
get_user_settings ~30
Get all user settings from user_settings table (complements get_user_setting which gets one setting by key)
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_wildcard_flows ~61
Get all directive flows from wildcard '*' source (available from ANY context). Includes FP references, utilities, cross-cutting concerns.
| Name | Type | Req | Description |
|---|---|---|---|
| flow_type | string | – | Optional filter: 'reference_consultation', 'utility', 'conditional', etc. |
No output schema declared.
No examples provided.
init_user_directives_db ~42
Initialize user_directives.db for Case 2 (custom directive automation) projects. Creates the database from schema. Call when project transitions to Case 2.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
link_files_to_task ~164
Link files to a task, subtask, or sidequest (task_files junction) so get_task_context and get_task_files return them. 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. Use this for files worked on before the item was in_progress, or to correct a link.
| Name | Type | Req | Description |
|---|---|---|---|
| file_ids | array | yes | File IDs to link |
| task_id | integer | yes | ID of the task, subtask, or sidequest |
| task_type | string | – | 'task', 'subtask', or 'sidequest' (default 'task') |
No output schema declared.
No examples provided.
list_active_branches ~22
List all AIMFP work branches from work_branches table
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_project_backups ~65
List available backup archives, newest first, with size, modification time, and which targets each one actually contains. Read-only. Call BEFORE restore_project_backup: a backup only holds databases that existed when it was taken, so an older archive may not carry every target you want.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
load_directive_preferences ~35
Load all active preferences for a directive (high-frequency)
| Name | Type | Req | Description |
|---|---|---|---|
| directive_name | string | yes | Directive name to load preferences for |
No output schema declared.
No examples provided.
merge_worker_branch ~298
(For use with InterCommAIMFP) ONE-CALL branch-ref merge orchestrator: takes a branch name and runs the whole documented sequence internally — export_state_changeset, optional source text-merge (keeping main's project.db, never blob-merging it), then apply_state_changeset — returning only a small result/conflict summary. The ~8k-token changeset never crosses the agent boundary, so a real fan-out stops serializing on the master hand-carrying blobs. Idempotent like apply; records a merge_history row; conflicts are still returned as structured data (never guessed). Mutates the working project.db (after backup) and leaves the source merge uncommitted for you to review and commit.
| Name | Type | Req | Description |
|---|---|---|---|
| base_commit | string | – | 3-way base / branch point. Default = git merge-base(HEAD, branch) |
| branch | string | yes | Git ref of the worker branch to integrate, e.g. 'aimfp-alice-001' |
| on_conflict | string | – | 'report' to apply DB state even if the source merge conflicts, or 'abort' to stop before applying |
| source | string | – | 'auto' to also text-merge the branch's SOURCE into main (keeping main's project.db), or 'skip' to merge only DB state |
| worker_id | string | – | Optional InterCommAIMFP worker identity (provenance + status hint) |
No output schema declared.
No examples provided.
merge_worker_branches ~186
(For use with InterCommAIMFP) Batch wrapper over merge_worker_branch: integrate a list of worker branches one at a time, each moving main forward and re-minting against the prior. 'additive-first' ordering lands the low-risk purely-additive branches before any structural/deleting ones. Each branch goes through the full export->source-merge->apply sequence; conflicts are surfaced per branch, never guessed.
| Name | Type | Req | Description |
|---|---|---|---|
| branches | array | yes | List of branch names (strings) or {branch, base_commit?, worker_id?} objects to integrate one at a time |
| on_conflict | string | – | 'stop' to halt the batch on the first branch that returns conflicts, or 'continue' to integrate the rest |
| order | string | – | 'as-listed' or 'additive-first' (branches with no delete/remove ops integrate first) |
No output schema declared.
No examples provided.
migrate_databases ~141
Migrate all pending project databases to current schema versions, in place. Per database: refuses if another connection has it open, write-locks it, keeps a pre-migration copy at <project folder>/backups/<db>_pre_migration_v<old>_<YYYYMMDD>.db (never overwriting an earlier copy), rebuilds it from the new schema SQL (shared columns via ATTACH), verifies row counts and atomically swaps the rebuilt file in. A count mismatch or any error leaves the original untouched (placed=false, error). Nothing is left in temp folders.
| Name | Type | Req | Description |
|---|---|---|---|
| aimfp_folder | string | – | AIMFP project directory name |
No output schema declared.
No examples provided.
move_files_to_flow ~87
Re-point many files from one flow to another in one transaction — the tool for splitting an oversized flow or retiring one. Moves links only; files are never touched. Files not in the source flow are skipped.
| Name | Type | Req | Description |
|---|---|---|---|
| file_ids | array | yes | Files to move |
| from_flow_id | integer | yes | Flow they leave |
| to_flow_id | integer | yes | Flow they join |
No output schema declared.
No examples provided.
move_flows_to_theme ~81
Re-point many flows from one theme to another in one transaction (e.g. when a theme is split or merged). Flows not in the source theme are skipped.
| Name | Type | Req | Description |
|---|---|---|---|
| flow_ids | array | yes | Flows to move |
| from_theme_id | integer | yes | Theme they leave |
| to_theme_id | integer | yes | Theme they join |
No output schema declared.
No examples provided.
plan_disjoint_partitions ~199
(For use with InterCommAIMFP) Compute DISJOINT file/module partitions so parallel workers don't overlap — the cheap complexity lever that converts most semantic conflicts into non-events. Only AIMFP can compute this well because it owns the function->function interaction graph and type-usage edges that define real dependency boundaries. Builds an undirected file-coupling graph (interaction edges + type-usage edges + module co-membership), takes connected components as atomic ownership units (never split), and bin-packs whole components into n_workers balanced partitions. Returns proposed per-worker ownership sets plus shared/contended files. Pure read; a planning aid you may tweak or override.
| Name | Type | Req | Description |
|---|---|---|---|
| n_workers | integer | – | Number of partitions to pack components into. Omit for one partition per connected component. |
| targets | array | – | File paths, module names, or task/milestone slugs to partition. Omit to partition every tracked file. |
No output schema declared.
No examples provided.
project_allowed_check_constraints ~63
Returns list of allowed values for CHECK constraint enum fields in project.db. Parses schema to extract CHECK(field IN (...)) constraints.
| Name | Type | Req | Description |
|---|---|---|---|
| field | string | yes | Field name to get allowed values for |
| table | string | yes | Table name to check for CHECK constraints |
No output schema declared.
No examples provided.
query_core ~42
Execute complex SQL WHERE clause (advanced, rare use)
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | yes | WHERE clause without "WHERE" keyword |
| table | string | yes | Table name |
No output schema declared.
No examples provided.
query_project ~42
Execute complex SQL WHERE clause (advanced, rare use)
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | yes | WHERE clause without "WHERE" keyword |
| table | string | yes | Table name |
No output schema declared.
No examples provided.
query_project_state ~165
Flexible SQL-like query interface for complex project queries. Provides powerful filtering and joining capabilities without writing raw SQL.
| Name | Type | Req | Description |
|---|---|---|---|
| entity | string | yes | Primary table to query: 'tasks', 'subtasks', 'sidequests', 'milestones', 'files', 'functions', 'flows', 'themes', etc. |
| filters | object | – | WHERE-like conditions with operators: {field: value} or {field: {op: 'gt', value: 5}} |
| joins | array | – | Relations to include via LEFT JOIN: ['milestones', 'files'] |
| limit | integer | – | Maximum results (pagination) |
| offset | integer | – | Skip first N results (pagination) |
| sort | string | – | ORDER BY clause: 'field ASC' or 'field DESC' |
No output schema declared.
No examples provided.
query_settings ~45
Execute complex SQL WHERE clause (advanced, rare use)
| Name | Type | Req | Description |
|---|---|---|---|
| table | string | yes | Table name in user_preferences.db |
| where_clause | string | – | SQL WHERE clause for filtering |
No output schema declared.
No examples provided.
query_user_custom ~54
Execute complex SQL WHERE clause on user_directives.db (advanced, rare use)
| Name | Type | Req | Description |
|---|---|---|---|
| table | string | yes | Table name in user_directives.db |
| where_clause | string | – | WHERE clause without 'WHERE' keyword |
No output schema declared.
No examples provided.
reconcile_paths ~363
Bring the tracking of changed files up to date in ONE call and one transaction (after a git pull, external edits, or edits made outside reserve/finalize). Per path: an untracked file is cataloged with its functions and types; a tracked file gets functions/types newly present in its source cataloged (existing rows and their prose are never touched) and those no longer in the source reported; a tracked file gone from disk is renamed as declared in renames, else to the one untracked path in the call with the same file name, else reported missing; a legacy row recorded at a folder path ('.' or a directory) is adopted by the one new file with its name instead of being duplicated (reported in files_renamed). Then adds the affected files' call edges (Python), skipping edges already tracked, and reports tracked call edges whose target the caller no longer references, directly or through the untracked same-file helpers it uses (stale_interactions). A tracked _private function is never reported missing just because include_private is false. Never deletes anything. Honours watchdog exclusions.
| Name | Type | Req | Description |
|---|---|---|---|
| dry_run | boolean | – | Do everything, then roll back: the report is exactly what a real run would do. |
| include_private | boolean | – | Also catalog _private functions and types (default true, like scan_source_tree). |
| paths | array | yes | Project-relative paths of files that changed (e.g. from git diff --name-only, or the files you just edited). |
| renames | array | – | Moves to apply first, as [{from, to}] project-relative paths. Needed when a file was renamed as well as moved; take them from git diff -M --name-status (R lines). Both paths are reconciled. |
No output schema declared.
No examples provided.
remove_file_from_flow ~65
Remove a file-flow link from the file_flows junction table. Use when reassigning a file to a different flow or preparing for file deletion.
| Name | Type | Req | Description |
|---|---|---|---|
| file_id | integer | yes | File ID to unlink |
| flow_id | integer | yes | Flow ID to unlink from |
No output schema declared.
No examples provided.
remove_file_from_module ~54
Remove a file from a module. Deletes module_files junction entry. File itself is not deleted.
| Name | Type | Req | Description |
|---|---|---|---|
| file_id | integer | yes | File ID to remove |
| module_id | integer | yes | Module ID to remove from |
No output schema declared.
No examples provided.
remove_files_from_module ~57
Batch remove multiple files from modules. More efficient than multiple remove_file_from_module calls. Skips non-existent entries, reports modules left empty.
| Name | Type | Req | Description |
|---|---|---|---|
| links | array | yes | List of [file_id, module_id] tuples to remove |
No output schema declared.
No examples provided.
remove_flow_themes ~147
Batch-unlink flows from themes. A note is required. Refused (whole batch) if any flow would be left with no theme — link the replacement first, or use move_flows_to_theme.
| Name | Type | Req | Description |
|---|---|---|---|
| links | array | yes | Array of [flow_id, theme_id] pairs. One pair links one; many pairs (any mix of flow_ids) apply atomically. |
| note_reason | string | yes | Why the links are removed (required; written as an entry_deletion note on each owner row) |
| note_severity | string | yes | 'info', 'warning', 'error' |
| note_source | string | yes | 'ai', 'user', or 'directive' |
No output schema declared.
No examples provided.
remove_milestone_flows ~150
Batch-unlink milestones from flows. A note is required. Refused (whole batch) while an open task or sidequest of that milestone still lists the flow in its flow_ids — update those first.
| Name | Type | Req | Description |
|---|---|---|---|
| links | array | yes | Array of [milestone_id, flow_id] pairs. One pair links one; many pairs (any mix of milestone_ids) apply atomically. |
| note_reason | string | yes | Why the links are removed (required; written as an entry_deletion note on each owner row) |
| note_severity | string | yes | 'info', 'warning', 'error' |
| note_source | string | yes | 'ai', 'user', or 'directive' |
No output schema declared.
No examples provided.
remove_path_themes ~121
Batch-unlink completion paths from themes. A note is required.
| Name | Type | Req | Description |
|---|---|---|---|
| links | array | yes | Array of [completion_path_id, theme_id] pairs. One pair links one; many pairs (any mix of completion_path_ids) apply atomically. |
| note_reason | string | yes | Why the links are removed (required; written as an entry_deletion note on each owner row) |
| note_severity | string | yes | 'info', 'warning', 'error' |
| note_source | string | yes | 'ai', 'user', or 'directive' |
No output schema declared.
No examples provided.
reorder_all_completion_paths ~18
Fix gaps and duplicates in order_index
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
reorder_completion_path ~39
Change order_index for a completion path
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Completion path ID |
| new_order_index | integer | yes | New order position |
No output schema declared.
No examples provided.
reserve_file ~261
Reserve a file ID before writing code, declaring the flow(s) it implements — part of the mandatory reserve-write-finalize tracking flow. flow_ids is required: a list of flows, or an explicit null for a file with no flow. Returns ID to embed in filename.
| Name | Type | Req | Description |
|---|---|---|---|
| flow_ids | – | yes | REQUIRED. Flow ID(s) this file implements (get_all_flows / get_task_flows / get_flows_for_milestone). Pass null EXPLICITLY only for a file that belongs to no flow (config, data, fixtures, package mar… |
| language | string | yes | Programming language (e.g., 'python', 'javascript', 'typescript') |
| name | string | yes | Preliminary file name (will have _id_xxx appended) |
| no_flow_reason | string | – | Why the file belongs to no flow (only with flow_ids=null), e.g. 'build config'. Recorded on the file so structure checks skip it. |
| path | string | yes | File path relative to project root |
| skip_id_naming | boolean | – | If true, skip ID embedding in name (for __init__.py, .db files, MCP tools, or user preference). Sets id_in_name=0 in database. |
No output schema declared.
No examples provided.
reserve_files ~103
Batch-reserve file IDs before writing code, each declaring the flow(s) it implements (flow_ids list, or explicit null for no flow). Atomic: all reserve or none.
| Name | Type | Req | Description |
|---|---|---|---|
| files | array | yes | Array of file objects [{name, path, language, flow_ids, skip_id_naming?, no_flow_reason?}, ...]. flow_ids is required per file: a list of flow IDs, or null explicitly for a file with no flow (config,… |
No output schema declared.
No examples provided.
reserve_function ~158
Reserve a function ID before writing code. Include purpose, parameters, and returns — null fields make functions invisible to future sessions.
| Name | Type | Req | Description |
|---|---|---|---|
| file_id | integer | – | File ID where the function will be defined (or pass file_path) |
| file_path | string | – | Project-relative path of the tracked file, instead of file_id (both given must agree) |
| name | string | yes | Function name (will have _idxxx appended) |
| parameters | array | – | Function parameters |
| purpose | string | – | Function purpose |
| returns | object | – | Return value specification |
| skip_id_naming | boolean | – | If true, skip ID embedding in name (for MCP tools, private functions excluded). Sets id_in_name=0 in database. |
No output schema declared.
No examples provided.
reserve_functions ~61
Batch-reserve function IDs before writing multiple functions. Include purpose/parameters/returns for every function.
| Name | Type | Req | Description |
|---|---|---|---|
| functions | array | yes | Array of function objects [{name, file_id | file_path, purpose, parameters, returns, skip_id_naming?}, ...] |
No output schema declared.
No examples provided.
reserve_type ~140
Reserve a type ID before writing the definition. Include definition_json and description — null fields force full file reads in future sessions.
| Name | Type | Req | Description |
|---|---|---|---|
| definition_json | object | yes | ADT definition (e.g., {'type': 'enum', 'variants': ['A', 'B']}) |
| description | string | – | Type description |
| file_id | integer | – | File ID where type is defined |
| links | object | – | Links to related functions |
| name | string | yes | Type name (will have _idxxx appended) |
| skip_id_naming | boolean | – | If true, skip ID embedding in name. Sets id_in_name=0 in database. |
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.
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.