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 (6 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.

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 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 →

MCP tools · 300 exposed · ~27,909 tokens

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

Tool Tokens
get_category_by_name ~29

Get category by name (fairly frequent)

NameTypeReqDescription
category_namestringyesCategory name

No output schema declared.

No examples provided.

get_claude_permissions ~180

Returns the Claude Code allowlist (.claude/settings.local.json contents) that pre-approves every AIMFP MCP tool, so the user is not prompted once per tool on first use. Allowlist is derived live from the tool registry so it can never drift. Does NOT write any file — returns ready-to-write JSON + target path; the AI writes/merges it, keeping AIMFP's 'never write outside .aimfp-project/' guarantee intact. Call when the user asks to set up AIMFP permissions or skip approval prompts.

NameTypeReqDescription
existing_settingsstring–Current text of the project's .claude/settings.local.json if it already exists (read it and pass it in). When given, the result is a merge that preserves all non-AIMFP permissions and other top-level…

No output schema declared.

No examples provided.

get_completion_loop_target ~30

Get where to loop back after completing directive

NameTypeReqDescription
from_directivestringyesDirective name

No output schema declared.

No examples provided.

get_completion_paths_by_status ~34

Get completion paths filtered by status

NameTypeReqDescription
statusstringyes'pending', 'in_progress', 'completed'

No output schema declared.

No examples provided.

get_core_fields ~28

Get field names and types for a specific table

NameTypeReqDescription
tablestringyesTable name

No output schema declared.

No examples provided.

get_core_schema ~21

Get complete schema for core database (all tables and fields)

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_core_tables ~16

List all tables in core database

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_current_branch ~15

Get current Git branch name

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_current_commit_hash ~17

Get current Git HEAD commit hash

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_current_progress ~145

Single entry point for scoped project status queries. Replaces 5-10 separate helper calls with one flexible query.

NameTypeReqDescription
detail_levelstring–'minimal' (counts), 'lean' (default: key columns, open work first, 50 rows), 'full' (every column, every row). 'standard' is accepted as 'lean'.
filtersobject–WHERE-like conditions: {field: value} or {field: {operator: value}}
scopestring–What to retrieve: 'tasks', 'milestones', 'completion_paths', 'files', 'functions', 'flows', 'themes', 'infrastructure', 'all'

No output schema declared.

No examples provided.

get_databases ~18

Get list of all available databases with metadata

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_directive_by_name ~92

Load a directive's workflow steps, preferences, and linked notes by name. ALWAYS call BEFORE executing any workflow — directives are the authoritative source, not memory.

NameTypeReqDescription
directive_namestringyesDirective name to look up
project_rootstring–Project root directory. When provided, also retrieves directive preferences from user_preferences.db and linked notes (send_with_directive=1) from project.db.

No output schema declared.

No examples provided.

get_directive_content ~84

Read and return the full MD documentation file for a directive. Resolves the md_file_path from aimfp_core.db to an absolute path within the installed package, reads the file, and returns content + absolute path + token estimate.

NameTypeReqDescription
directive_namestringyesDirective name (e.g., 'fp_purity', 'aimfp_init', 'project_file_write')

No output schema declared.

No examples provided.

get_directive_execution_stats ~148

Read execution statistics from directive_executions joined to directive names and statuses, for one user directive or all of them. Includes a derived error_rate per row. This is how the AI sees what the user's automation did while no session was open — executions, successes, errors, average and maximum duration, and the last recorded error. On a database at schema 1.3 or later, each row also carries skip_count, consecutive_skip_count, last_skip_time, last_skip_reason, condition_latched and last_condition_eval_time.

NameTypeReqDescription
directive_idinteger–One directive, or omit for all
project_rootstring–Project root; defaults to the session root

No output schema declared.

No examples provided.

get_directive_flows ~138

General-purpose query for directive flows by category, type, or directive names. Complements the navigation helpers (get_flows_from_directive, get_flows_to_directive, get_wildcard_flows), which answer where a specific directive routes.

NameTypeReqDescription
flow_categorystring–Filter by category: 'project', 'fp', 'user_preferences', 'git'
flow_typestring–Filter by type: 'status_branch', 'completion_loop', 'conditional', 'error'
from_directivestring–Filter by source directive name
to_directivestring–Filter by target directive name

No output schema declared.

No examples provided.

get_directive_keywords ~29

Get all intent keywords for a specific directive

NameTypeReqDescription
directive_idintegeryesDirective ID

No output schema declared.

No examples provided.

get_directives_by_category ~28

Get all directives in a category

NameTypeReqDescription
category_namestringyesCategory name

No output schema declared.

No examples provided.

get_directives_by_type ~65

Get all directives filtered by type (orchestration vs reference)

NameTypeReqDescription
include_md_contentboolean–Include full MD file content
typestringyesOne of: 'fp', 'project', 'git', 'user_system', 'user_preference'

No output schema declared.

No examples provided.

get_directives_for_helper ~34

Get all directives that use a helper (reciprocal lookup)

NameTypeReqDescription
helper_namestringyesHelper name

No output schema declared.

No examples provided.

get_directives_with_intent_keywords ~69

Search directives by intent keywords and return full directive objects

NameTypeReqDescription
include_keyword_matchesboolean–Include which keywords matched
keywords–yesSingle keyword or array of keywords
match_modestring–"any" for OR logic, "all" for AND logic

No output schema declared.

No examples provided.

get_file_by_name ~59

Look up a tracked file by name — use BEFORE reading source files. Returns metadata, path, and ID for follow-up queries.

NameTypeReqDescription
file_namestringyesFile name to look up (e.g., 'calculator_id_42.py')

No output schema declared.

No examples provided.

get_file_by_path ~56

Look up a tracked file by path — use BEFORE reading source files. Returns file metadata and ID for follow-up queries.

NameTypeReqDescription
file_pathstringyesFile path to look up (e.g., 'src/calculator.py')

No output schema declared.

No examples provided.

get_file_ids_from_flows ~40

Get all file IDs associated with flows

NameTypeReqDescription
flow_idsarrayyesArray of flow IDs [1, 3, 5]

No output schema declared.

No examples provided.

get_files_by_flow ~27

Get all files for a flow

NameTypeReqDescription
flow_idintegeryesFlow ID

No output schema declared.

No examples provided.

get_files_by_flow_context ~39

Get all files for a flow with functions embedded in each file dict.

NameTypeReqDescription
flow_idintegeryesFlow ID to get files for

No output schema declared.

No examples provided.

get_flow_by_name ~32

Get flow by name (fairly frequent)

NameTypeReqDescription
flow_namestringyesFlow name to look up

No output schema declared.

No examples provided.

get_flows_for_file ~28

Get all flows for a file

NameTypeReqDescription
file_idintegeryesFile ID

No output schema declared.

No examples provided.

get_flows_for_milestone ~50

Get the flows a milestone builds or changes (id, name, description). Use for task flow_ids and before starting milestone work.

NameTypeReqDescription
milestone_idintegeryesMilestone ID

No output schema declared.

No examples provided.

get_flows_for_theme ~28

Get all flows for a theme

NameTypeReqDescription
theme_idintegeryesTheme ID

No output schema declared.

No examples provided.

get_flows_from_directive ~45

Get all flows originating from a directive (what comes next?). Returns raw flow data - AI evaluates conditions.

NameTypeReqDescription
from_directivestringyesSource directive name

No output schema declared.

No examples provided.

get_flows_to_directive ~43

Get all directive flows leading to a directive (what leads here?). Useful for understanding directive prerequisites.

NameTypeReqDescription
to_directivestringyesTarget directive name

No output schema declared.

No examples provided.

get_fp_directive_index ~27

Get lightweight FP directive index grouped by category (names only, not full definitions)

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_from_core ~53

Get records by ID(s), or all records if empty array

NameTypeReqDescription
id_arrayarrayyesArray of integer IDs to fetch, **empty array [] returns ALL records**
tablestringyesTable name

No output schema declared.

No examples provided.

get_from_core_where ~90

Flexible filtering with structured JSON conditions

NameTypeReqDescription
conditionsobjectyesField-value pairs (AND logic), e.g., `{"type": "fp", "category": "purity"}`
limitinteger–Maximum rows to return
orderbystring–Sort order, e.g., "name ASC" or "id DESC"
tablestringyesTable name

No output schema declared.

No examples provided.

get_from_project ~53

Get records by ID(s) - **EMPTY ARRAY NOT ALLOWED**

NameTypeReqDescription
id_arrayarrayyesArray of integer IDs - **MUST contain at least one ID**
tablestringyesTable name

No output schema declared.

No examples provided.

get_from_project_where ~60

Flexible filtering with structured JSON conditions

NameTypeReqDescription
conditionsobjectyesField-value pairs (AND logic)
limitinteger–Maximum rows to return
orderbystring–Sort order
tablestringyesTable name

No output schema declared.

No examples provided.

get_from_settings ~53

Get records by ID(s) - **EMPTY ARRAY NOT ALLOWED**

NameTypeReqDescription
id_arrayarrayyesArray of integer IDs - **MUST contain at least one ID**
tablestringyesTable name

No output schema declared.

No examples provided.

get_from_settings_where ~43

Flexible filtering with structured JSON conditions

NameTypeReqDescription
conditionsobjectyesField-value pairs (AND logic)
tablestringyesTable name in user_preferences.db

No output schema declared.

No examples provided.

get_from_user_custom ~64

Get records by ID(s) from user_directives.db - **EMPTY ARRAY NOT ALLOWED**

NameTypeReqDescription
id_arrayarrayyesArray of integer IDs - **MUST contain at least one ID**
tablestringyesTable name in user_directives.db

No output schema declared.

No examples provided.

get_from_user_custom_where ~52

Flexible filtering with structured JSON conditions on user_directives.db tables

NameTypeReqDescription
conditionsobjectyesField-value pairs combined with AND logic
tablestringyesTable name in user_directives.db

No output schema declared.

No examples provided.

get_function_by_name ~139

Look up a tracked function by name with file location — use BEFORE reading source files. Returns purpose, parameters, returns, and file path.

NameTypeReqDescription
details_onlyboolean–If true, return only id/name + purpose/parameters/returns (when AI already has the rest)
file_idinteger–Only the function defined in this tracked file.
file_pathstring–Only the function defined in this project-relative file (names are not unique across files).
function_namestringyesFunction name to look up
include_detailsboolean–If false, omit purpose/parameters/returns for lightweight listing

No output schema declared.

No examples provided.

get_functions_by_file ~96

Get all tracked function signatures for a file — use BEFORE reading source code. Often provides everything needed without opening the file.

NameTypeReqDescription
details_onlyboolean–If true, return only id/name + purpose/parameters/returns (when AI already has the rest)
file_idintegeryesFile ID to get functions for
include_detailsboolean–If false, omit purpose/parameters/returns for lightweight listing

No output schema declared.

No examples provided.

get_git_status ~19

Get comprehensive Git state snapshot (orchestrator)

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_helper_by_name ~32

Get specific helper function details (high-frequency)

NameTypeReqDescription
helper_namestringyesHelper name to look up

No output schema declared.

No examples provided.

get_helpers_are_sub ~21

Get all sub-helpers (is_sub_helper=true)

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_helpers_are_tool ~19

Get all MCP tools (is_tool=true)

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_helpers_by_database ~40

Get all helpers for a specific database

NameTypeReqDescription
target_databasestringyesDatabase name ('core', 'project', 'settings', 'user_custom')

No output schema declared.

No examples provided.

get_helpers_for_directive ~70

Get the list of MCP tools available for a directive workflow. Use to discover which tools to call when executing a directive's steps.

NameTypeReqDescription
directive_namestringyesName of the directive to get helpers for
include_helpers_databoolean–If true, includes full helper_functions data

No output schema declared.

No examples provided.

get_hooks ~136

Get AIMFP's library surface for code running OUTSIDE AIMFP (src/aimfp/hooks/). Hooks are NOT MCP tools and you cannot call them — they are imported by code that is not AIMFP, such as a generated Use Case 2 automation runner firing from cron or systemd with no AI session open. Your relationship to a hook is that you WRITE CODE CALLING IT during user_directive_implement. Queries is_hook=1 affirmatively; it replaced get_helpers_not_tool_not_sub, which described hooks as the absence of two other flags and so returned an empty list silently for as long as nothing populated that gap.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_incomplete_completion_paths ~18

Get all non-completed paths

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.