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 (10 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
reserve_types ~59

Batch-reserve type IDs before writing multiple type definitions. Include definition_json and description for every type.

NameTypeReqDescription
typesarrayyesArray of type objects [{name, definition_json, description, links, file_id, skip_id_naming?}, ...]

No output schema declared.

No examples provided.

restore_project_backup ~195

Restore selected databases from a backup archive, side-by-side rather than in place. Every requested member is extracted to a temporary file FIRST; only once all extractions succeed is anything live touched. The current file is then moved into backups/ as 'replaced-<timestamp>-<filename>' and the restored copy moved into position. Nothing is ever deleted, so the displaced state remains recoverable.

NameTypeReqDescription
backup_namestring–Archive to restore from (e.g. 'aimfp-backup-2026-08-09.zip'). Defaults to the most recent. Get valid names from list_project_backups.
databases––Which members to restore: any of 'project', 'user_preferences', 'user_directives', 'blueprint', or 'all'. Accepts a list or comma-separated string. Defaults to everything the archive contains. Be spe…

No output schema declared.

No examples provided.

scan_call_graph ~155

Build the interaction graph for already-cataloged functions: which tracked function calls which. Read-only — returns tuples shaped for add_interactions, which does the writing. Run AFTER catalog_files and catalog_functions. Resolution is conservative and strictest-first (explicit import, then same-file, then module alias, then project-wide unique name), following re-export chains through modules that define no functions of their own. Ambiguous targets are dropped and counted rather than guessed at, because a wrong edge sends future refactors chasing dependencies that do not exist.

NameTypeReqDescription
module_pathstring–Project-relative subtree to limit analysis to. Only the CALLING side is narrowed — functions outside it still resolve as targets, so cross-module edges are never lost.

No output schema declared.

No examples provided.

scan_source_tree ~184

Read-only inventory of an existing codebase for adoption into AIMFP tracking. Walks source_directory applying the watchdog's exact exclusion stack (built-in exclusions + watchdog_excluded_* settings + .watchdogignore), extracts signatures, and reports tracked vs untracked. Writes nothing — review the inventory, then register with catalog_files/catalog_functions/catalog_types.

NameTypeReqDescription
include_nestedboolean–Include functions defined inside other functions
include_privateboolean–Include underscore-prefixed functions and types
module_pathstring–Project-relative subtree to narrow the scan to (e.g. 'src/aimfp/helpers/project'). Defaults to the whole source_directory. Use this to adopt a large codebase one module at a time.
untracked_onlyboolean–Report only files with no existing database record. Use on re-scans to see just what is new.

No output schema declared.

No examples provided.

search_directives ~196

Find directives by type, category, or keyword when you know the domain but not the exact directive name. Multi-word input is split into words; a row matches if ANY word prefix-matches ("disk space free" finds get_free_disk_space). Rows matching more words rank first. Punctuation is ignored, so no FTS syntax is needed or honored. Common stopwords (the, of, and, ...) are ignored unless the query is nothing but stopwords. Keyword results are ordered by name/description relevance.

NameTypeReqDescription
categorystring–Directive category filter (e.g., 'purity', 'error_handling', 'task_management')
keywordstring–Free-text search over directive names, descriptions, and intent keywords, one or more words (e.g. 'task decomposition')
typestring–Directive type filter: 'fp', 'project', 'user-system', 'user-pref', 'git'

No output schema declared.

No examples provided.

search_functions ~191

Search tracked functions by name or purpose with relevance ranking. Multi-word input is split into words; a row matches if ANY word prefix-matches ("disk space free" finds get_free_disk_space). Rows matching more words rank first. Punctuation is ignored, so no FTS syntax is needed or honored. Common stopwords (the, of, and, ...) are ignored unless the query is nothing but stopwords. Results are capped by limit; total_count reports all matches.

NameTypeReqDescription
details_onlyboolean–If true, return only id/name + purpose/parameters/returns
include_detailsboolean–If false, omit purpose/parameters/returns for lightweight listing
limitinteger–Maximum functions returned, best matches first (default 20)
search_stringstringyesFree-text search over function name and purpose, one or more words (e.g. 'disk space free')

No output schema declared.

No examples provided.

search_modules ~173

Search modules by name, purpose, or description with relevance ranking. Multi-word input is split into words; a row matches if ANY word prefix-matches ("disk space free" finds get_free_disk_space). Rows matching more words rank first. Punctuation is ignored, so no FTS syntax is needed or honored. Common stopwords (the, of, and, ...) are ignored unless the query is nothing but stopwords. Results are capped by limit; total_count reports all matches.

NameTypeReqDescription
detail_levelstring–'lean' (default): description is null, purpose kept. 'full': description included.
limitinteger–Maximum modules returned, best matches first (default 20)
search_stringstringyesFree-text search over module name, purpose, and description, one or more words

No output schema declared.

No examples provided.

search_notes ~280

Search past decisions and context by keyword. Multi-word input is split into words; a row matches if ANY word prefix-matches ("disk space free" finds get_free_disk_space). Rows matching more words rank first. Punctuation is ignored, so no FTS syntax is needed or honored. Common stopwords (the, of, and, ...) are ignored unless the query is nothing but stopwords. Returns capped previews by default; read a note in full with get_notes_comprehensive(note_id=X).

NameTypeReqDescription
directive_namestring–Optional filter by directive name
exclude_note_typesarray–List of note_type values to exclude from results (e.g., ['completed', 'obsolete'])
limitinteger–Maximum notes returned, best matches first (default 20)
note_typestring–Optional filter by note_type
preview_charsinteger–Cap each note's content at this many characters (default 300; 0 = full content)
reference_idinteger–Optional filter by reference ID
reference_tablestring–Optional filter by reference table
search_stringstringyesFree-text search over note content, one or more words (e.g. 'hash digest')
severitystring–Optional filter by severity
sourcestring–Optional filter by source

No output schema declared.

No examples provided.

search_tracking_notes ~69

Search tracking note content with optional filters

NameTypeReqDescription
directive_namestring–Optional filter by directive_name
note_typestring–Optional filter by note_type
reference_typestring–Optional filter by reference_type
search_stringstringyesSearch string for note content

No output schema declared.

No examples provided.

search_types ~185

Search tracked types by name or description with relevance ranking. Multi-word input is split into words; a row matches if ANY word prefix-matches ("disk space free" finds get_free_disk_space). Rows matching more words rank first. Punctuation is ignored, so no FTS syntax is needed or honored. Common stopwords (the, of, and, ...) are ignored unless the query is nothing but stopwords. Results are capped by limit; total_count reports all matches.

NameTypeReqDescription
details_onlyboolean–If true, return only id/name + definition_json/description/links
include_detailsboolean–If false, omit definition_json/description/links for lightweight listing
limitinteger–Maximum types returned, best matches first (default 20)
search_stringstringyesFree-text search over type name and description, one or more words

No output schema declared.

No examples provided.

search_user_directive_notes ~124

Search note content in user_directives.db with optional additional filters

NameTypeReqDescription
exclude_note_typesarray–List of note_type values to exclude from results (e.g., ['completed', 'obsolete'])
limitinteger–Maximum number of notes to return (default 100)
note_typestring–Optional filter by note_type
reference_typestring–Optional filter by reference_type
search_stringstringyesSearch string for note content (case-insensitive LIKE match)
severitystring–Optional filter by severity

No output schema declared.

No examples provided.

search_user_directives ~111

Search user directives with optional filters. At least one filter required.

NameTypeReqDescription
domainstring–Filter by domain (exact match, e.g. 'home_automation', 'aws_infrastructure')
namestring–Filter by directive name (LIKE match, case-insensitive)
source_filestring–Filter by source_file path (LIKE match)
statusstring–Filter by status (exact match)
trigger_typestring–Filter by trigger_type (exact match)

No output schema declared.

No examples provided.

set_custom_return_statement ~107

Add a custom return statement for a helper function. Extends core return_statements with user-defined guidance, context, or preferences. To modify: delete first, then set new statement.

NameTypeReqDescription
activeboolean–Whether statement is active (default true)
descriptionstring–Why this was added (optional context)
helper_namestringyesHelper function name (should match aimfp_core.db helper_functions.name)
statementstringyesCustom return statement text

No output schema declared.

No examples provided.

summarize_state_changeset ~168

(For use with InterCommAIMFP) Cheap, low-token counts summary of ONE branch's changeset — add/modify/delete per entity kind, add/remove per reference kind, touched files/modules, and warning count — WITHOUT returning the full ~8k-token object. Affordable to read for every pending branch before deciding apply order. Identify the changeset by changeset_id (loads the persisted artifact) or by branch+base_commit (re-exports). Pure read.

NameTypeReqDescription
base_commitstring–3-way base / branch point (used with branch)
branchstring–Git ref whose changeset to summarize (requires base_commit)
changeset_idstring–Handle from a prior export_state_changeset (loads the persisted artifact, no git work)

No output schema declared.

No examples provided.

swap_completion_paths_order ~42

Swap order_index of two completion paths

NameTypeReqDescription
id1integeryesFirst completion path ID
id2integeryesSecond completion path ID

No output schema declared.

No examples provided.

sync_git_state ~20

Update project.last_known_git_hash with current Git HEAD

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

toggle_tracking_feature ~36

Enable/disable tracking feature

NameTypeReqDescription
enabledbooleanyesEnable or disable
feature_namestringyesTracking feature name

No output schema declared.

No examples provided.

unlink_files_from_task ~99

Remove file links from a task, subtask, or sidequest — e.g. a file auto-linked to the wrong in_progress item. Does not touch the files.

NameTypeReqDescription
file_idsarrayyesFile IDs to unlink
task_idintegeryesID of the task, subtask, or sidequest
task_typestring–'task', 'subtask', or 'sidequest' (default 'task')

No output schema declared.

No examples provided.

update_completion_path ~73

Update completion path

NameTypeReqDescription
descriptionstring–New description (NULL = don't update)
idintegeryesCompletion path ID
namestring–New name (NULL = don't update)
statusstring–'pending', 'in_progress', 'completed' (NULL = don't update)

No output schema declared.

No examples provided.

update_directive_preference ~75

Update existing directive preference in directive_preferences table

NameTypeReqDescription
activeboolean–Update active status
descriptionstring–Update description
directive_namestringyesDirective name
preference_keystringyesPreference key to update (must exist)
preference_valuestring–New preference value

No output schema declared.

No examples provided.

update_file ~108

Update file metadata

NameTypeReqDescription
file_idintegeryesFile ID to update
languagestring–Language (NULL = don't update)
namestring–New file name (NULL = don't update)
no_flow_reasonstring–Mark the file as belonging to no flow, with why (config, data) — structure checks then skip it. Empty string clears it (NULL = don't update).
pathstring–New file path (NULL = don't update)

No output schema declared.

No examples provided.

update_flow ~93

Update flow metadata

NameTypeReqDescription
confidence_scorenumber–New confidence score (NULL = don't update)
descriptionstring–What the flow does now; replaces the old text. Not an evolution log: history goes in add_note(note_type='evolution') (NULL = don't update)
flow_idintegeryesFlow ID to update
namestring–New name (NULL = don't update)

No output schema declared.

No examples provided.

update_function ~82

Update function metadata

NameTypeReqDescription
function_idintegeryesFunction ID to update
namestring–New function name (NULL = don't update)
parametersarray–New parameters (NULL = don't update)
purposestring–New purpose (NULL = don't update)
returnsobject–New return specification (NULL = don't update)

No output schema declared.

No examples provided.

update_function_file_location ~56

Move function to different file (rarely used)

NameTypeReqDescription
function_idintegeryesFunction ID to move
new_file_idintegeryesNew file ID
old_file_idintegeryesCurrent file ID

No output schema declared.

No examples provided.

update_functions_for_file ~53

Update multiple functions in a single file

NameTypeReqDescription
file_idintegeryesFile ID
functionsarrayyesArray of function update objects [{function_id, name, purpose, parameters, returns}, ...]

No output schema declared.

No examples provided.

update_interaction ~160

Update interaction metadata

NameTypeReqDescription
descriptionstring–New description (NULL = don't update)
interaction_idintegeryesInteraction ID to update
interaction_typestring–'call', 'chain', 'borrow', 'compose', 'pipe' (NULL = don't update)
is_indirectboolean–Mark (true) or clear (false) the deliberate-indirect flag (NULL = don't update). True for a deliberate edge the code makes indirectly (dispatch through a tuple/table of functions, a chain data-flow l…
source_function_idinteger–New source (NULL = don't update)
target_function_idinteger–New target (NULL = don't update)

No output schema declared.

No examples provided.

update_item ~91

Update a single item's status, name, or description. Primary use: marking items in_progress or completed as work progresses.

NameTypeReqDescription
descriptionstring–New description (NULL = don't update)
idintegeryesItem ID
namestring–New name (NULL = don't update)
statusstring–'pending', 'in_progress', 'completed' (NULL = don't update)

No output schema declared.

No examples provided.

update_items ~120

Batch-update multiple items with the same field values. Primary use: marking multiple items completed at once when parent completes.

NameTypeReqDescription
dataobjectyesField-value pairs to apply to all items (e.g., {status: 'completed'})
idsarrayyesArray of item IDs to update
reference_idintegeryesID of the parent task, subtask, or sidequest that owns every item in ids
reference_tablestringyesParent the items must belong to: 'tasks', 'subtasks', or 'sidequests'

No output schema declared.

No examples provided.

update_milestone ~116

Update milestone status, name, or description. When completing, check if all milestones in the path are done to cascade completion.

NameTypeReqDescription
completion_path_idinteger–New completion path ID (NULL = don't update)
descriptionstring–New description (NULL = don't update)
idintegeryesMilestone ID
namestring–New name (NULL = don't update)
statusstring–'pending', 'in_progress', 'completed', 'blocked' (NULL = don't update)

No output schema declared.

No examples provided.

update_module ~79

Update module metadata. Only non-None fields are updated.

NameTypeReqDescription
descriptionstring–New description
external_dependenciesarray–New dependencies list
module_idintegeryesModule ID to update
namestring–New name
pathstring–New path
purposestring–New purpose

No output schema declared.

No examples provided.

update_note ~188

Update note metadata

NameTypeReqDescription
contentstring–Update note content
directive_namestring–Update directive name
idintegeryesNote ID to update
note_typestring–Update note_type
reference_idinteger–Update reference ID
reference_tablestring–New reference table (NULL = don't update). The project.db table the note is attached to (e.g. 'files', 'tasks', 'flows', 'completion_path'). Must be an existing project.db table name, exactly: unknow…
send_with_directiveboolean–Update send_with_directive flag. If true and directive_name set, note is included when that directive is retrieved.
severitystring–Update severity
sourcestring–Update source

No output schema declared.

No examples provided.

update_project ~131

Update project metadata

NameTypeReqDescription
goalsarray–Array of goal strings (NULL = don't update)
namestring–Project name (NULL = don't update)
purposestring–Project purpose (NULL = don't update)
statusstring–'active', 'paused', 'completed', 'abandoned' (NULL = don't update)
user_directives_statusstring–NULL, 'pending_discovery', 'pending_parse', 'in_progress', 'active', 'disabled' (NULL = don't update)
versioninteger–Version number (NULL = don't update)

No output schema declared.

No examples provided.

update_project_entry ~43

Update existing entry

NameTypeReqDescription
dataobjectyesField-value pairs to update
idintegeryesRecord ID
tablestringyesTable name

No output schema declared.

No examples provided.

update_project_root ~49

Update project root in infrastructure table. Failsafe: Inserts if not exists (should never happen, initialized by SQL).

NameTypeReqDescription
new_project_rootstringyesNew project root path (absolute path)

No output schema declared.

No examples provided.

update_project_state ~205

Orchestrated state change for tasks, milestones, and paths. Maps actions (start_task, complete_task, block_task, etc.) to correct status updates and note creation.

NameTypeReqDescription
actionstringyesOperation: 'start_task', 'complete_task', 'pause_task', 'resume_task', 'block_task', 'unblock_task', 'start_subtask', 'complete_subtask', etc.
create_noteboolean–Auto-log action as note in notes table
dataobject–Action-specific data (e.g., blocked_by, completion_notes) data.audit_override_reason completes a task/subtask/sidequest despite blocking tracking-audit findings (recorded as a warning note); completi…
target_idintegeryesID of target entity
target_typestringyesEntity type: 'task', 'subtask', 'sidequest', 'milestone', 'completion_path'

No output schema declared.

No examples provided.

update_settings_entry ~53

Update entry in user settings database

NameTypeReqDescription
dataobjectyesField-value pairs to update
record_idintegeryesRecord ID to update
tablestringyesTable name in user_preferences.db

No output schema declared.

No examples provided.

update_sidequest ~202

Update sidequest metadata

NameTypeReqDescription
audit_override_reasonstring–Complete despite blocking tracking-audit findings in the linked files. Recorded as a warning note with the outstanding counts; use only when the drift is understood and will be fixed in follow-up wor…
descriptionstring–New description (NULL = don't update)
flow_idsarray–Array of flow IDs (NULL = don't update)
idintegeryesSidequest ID
namestring–New name (NULL = don't update)
paused_subtask_idinteger–New paused subtask ID (NULL = don't update)
paused_task_idinteger–New paused task ID (NULL = don't update)
prioritystring–'low', 'medium', 'high', 'critical' (NULL = don't update)
statusstring–'pending', 'in_progress', 'completed', 'blocked' (NULL = don't update)

No output schema declared.

No examples provided.

update_source_directory ~30

Update existing source directory in infrastructure table

NameTypeReqDescription
new_source_dirstringyesNew source directory path

No output schema declared.

No examples provided.

update_subtask ~163

Update subtask metadata

NameTypeReqDescription
audit_override_reasonstring–Complete despite blocking tracking-audit findings in the linked files. Recorded as a warning note with the outstanding counts; use only when the drift is understood and will be fixed in follow-up wor…
descriptionstring–New description (NULL = don't update)
idintegeryesSubtask ID
namestring–New name (NULL = don't update)
prioritystring–'low', 'medium', 'high', 'critical' (NULL = don't update)
statusstring–'pending', 'in_progress', 'completed', 'blocked' (NULL = don't update)
task_idinteger–New task ID (NULL = don't update)

No output schema declared.

No examples provided.

update_task ~186

Update task metadata

NameTypeReqDescription
audit_override_reasonstring–Complete despite blocking tracking-audit findings in the linked files. Recorded as a warning note with the outstanding counts; use only when the drift is understood and will be fixed in follow-up wor…
descriptionstring–New description (NULL = don't update)
flow_idsarray–Array of flow IDs [1, 3, 5] (NULL = don't update)
idintegeryesTask ID
milestone_idinteger–New milestone ID (NULL = don't update)
namestring–New name (NULL = don't update)
prioritystring–'low', 'medium', 'high', 'critical' (NULL = don't update)
statusstring–'pending', 'in_progress', 'completed', 'blocked' (NULL = don't update)

No output schema declared.

No examples provided.

update_theme ~68

Update theme metadata

NameTypeReqDescription
confidence_scorenumber–New confidence score (NULL = don't update)
descriptionstring–New description (NULL = don't update)
namestring–New name (NULL = don't update)
theme_idintegeryesTheme ID to update

No output schema declared.

No examples provided.

update_type ~83

Update type metadata

NameTypeReqDescription
definition_jsonobject–New definition (NULL = don't update)
descriptionstring–New description (NULL = don't update)
file_idinteger–New file_id (NULL = don't update)
namestring–New name (NULL = don't update)
type_idintegeryesType ID to update

No output schema declared.

No examples provided.

update_type_function_role ~68

Update relationship role only

NameTypeReqDescription
function_idintegeryesFunction ID
rolestringyes'factory', 'transformer', 'operator', 'pattern_matcher', 'accessor', 'validator', 'combinator'
type_idintegeryesType ID

No output schema declared.

No examples provided.

update_user_custom_entry ~138

Update entry in user_directives.db table. Every key must be a column of the table (compared without case). On user_directives the approval columns (approved, approved_at, approved_by, approval_hash) and status='active' are refused: approval is a person's decision, recorded by the user's own path (`aimfp directives approve`, or a host calling aimfp.hooks.approval), and activation goes through activate_user_directive.

NameTypeReqDescription
dataobjectyesField-value pairs to update
record_idintegeryesRecord ID to update
tablestringyesTable name in user_directives.db

No output schema declared.

No examples provided.

update_user_setting ~68

Update existing project-wide user setting in user_settings table

NameTypeReqDescription
descriptionstring–New description (optional)
scopestring–New scope (optional)
setting_keystringyesSetting key to update (must exist)
setting_valuestring–New setting value

No output schema declared.

No examples provided.

user_directives_allowed_check_constraints ~67

Returns list of allowed values for CHECK constraint enum fields in user_directives.db. Parses schema to extract CHECK(field IN (...)) constraints.

NameTypeReqDescription
fieldstringyesField name to get allowed values for
tablestringyesTable name to check for CHECK constraints

No output schema declared.

No examples provided.

user_preferences_allowed_check_constraints ~65

Returns list of allowed values for CHECK constraint enum fields in user_preferences.db. Parses schema to extract CHECK(field IN (...)) constraints.

NameTypeReqDescription
fieldstringyesField name to get allowed values for
tablestringyesTable name to check for CHECK constraints

No output schema declared.

No examples provided.

validate_action_config ~196

Checks an action_config against AIMFP's envelope for its action_type BEFORE the row is written; add_user_custom_entry and update_user_custom_entry refuse a non-conforming config. AIMFP validates the ENVELOPE ONLY. api_call, script_execution and notification are generic, so AIMFP can specify them fully. function_call and command name a target that exists in the caller's own project, so AIMFP checks that a target is named and well-formed but never that it resolves - caller_resolved=true marks exactly that, and means 'the shape is right, now check it resolves'. Unknown keys are errors, not ignored. On failure, errors names every offending key and grammar carries the expected envelope.

NameTypeReqDescription
action_configobjectyesThe config to check, as an object or a JSON string
action_typestringyes'api_call', 'script_execution', 'function_call', 'command', or 'notification'

No output schema declared.

No examples provided.

validate_trigger_config ~194

Checks a trigger_config against AIMFP's grammar for its trigger_type BEFORE the row is written. add_user_custom_entry and update_user_custom_entry refuse a non-conforming config, so calling this first turns a rejected insert into a fixed config. Time triggers are a discriminated union on 'kind' (interval/daily/weekly/monthly); event, condition and manual have fixed shapes. Unknown keys are errors, not ignored - a typo'd schedule key is the silent failure this exists to surface, because a schedule that never fires produces no log line and no recorded error. On failure, errors names every offending key and grammar carries the expected shape for that trigger_type, so the AI is told what IS expected rather than guessing.

NameTypeReqDescription
trigger_configobjectyesThe config to check, as an object or a JSON string
trigger_typestringyes'time', 'event', 'condition', or 'manual'

No output schema declared.

No examples provided.

verify_fanout_ready ~130

(For use with InterCommAIMFP) Pre-fan-out preflight on current main: cheap insurance against silent fan-out corruption. Asserts (a) every relevant row has a stable identity key (hierarchy slugs + function/type entity_key — i.e. backfill_semantic_keys has nothing left to do), (b) .aimfp-project/project.db is committed (clean working tree for that path) so every clone shares the same base, and (c) no schema migration is pending. Returns {ready, blockers}. Run on main BEFORE spawning workers. Pure read.

Input schema present but exposes no named parameters.

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.