An MCP server that exposes OmniFocus to AI agents via the Model Context Protocol (MCP).
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio counts 59 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
add_task
-
add_task_tool
-
add_tasks
-
add_typed
-
add_untyped
-
all_ctx_levels
-
ask_boolean
-
ask_choice
-
ask_multi_select
-
ask_number
-
ask_string
-
ask_structured
-
ask_with_defaults
-
check_stderr
-
check_stderr_with_logging
-
check_timing_log
-
compare_ctx_vs_logger
-
confirm_action
-
create_task
-
create_task_untyped
-
ctx_with_structured_data
-
echo
-
edit_task
-
edit_task_tool
-
edit_tasks
-
edit_typed
-
edit_untyped
-
emit_intermediates
-
emit_only_final
-
emit_with_final
-
explore_server_loggers
-
fail_loudly
-
failing_tool
-
fallback_demo
-
fast_tool
-
format_showcase
-
get_call_count
-
get_something
-
get_tasks
-
get_tasks_depends_closure
-
get_tasks_depends_ctx
-
get_tasks_lifespan
-
inspect_context
-
list_dict
-
list_model
-
mixed
-
multi_turn
-
process_batch
-
process_unknown_total
-
process_with_messages
-
rapid_fire
-
single_model
-
slow_tool
-
spike_add_task
-
spike_edit_actions
-
spike_edit_task
-
spike_move_action
-
spike_repetition_edit
-
spike_tag_action
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 37b566c · analyzer v33 · 1w ago
skills & prompt files 10
- skill HelloThisIsFlo-omnifocus-operator-37b566c/.agents/skills/doc-regression/SKILL.md
- skill HelloThisIsFlo-omnifocus-operator-37b566c/.agents/skills/doc-suite-updater/SKILL.md
- skill HelloThisIsFlo-omnifocus-operator-37b566c/.agents/skills/fastmcp-spike-guide/SKILL.md
- skill HelloThisIsFlo-omnifocus-operator-37b566c/.agents/skills/omnifocus-api-ground-truth-audit/SKILL.md
- skill HelloThisIsFlo-omnifocus-operator-37b566c/.agents/skills/test-omnifocus-operator/SKILL.md
- skill HelloThisIsFlo-omnifocus-operator-37b566c/.agents/skills/uat-gm-cross-coverage-audit/SKILL.md
- skill HelloThisIsFlo-omnifocus-operator-37b566c/.agents/skills/uat-regression/SKILL.md
- skill HelloThisIsFlo-omnifocus-operator-37b566c/.agents/skills/uat-suite-updater/SKILL.md
- skill HelloThisIsFlo-omnifocus-operator-37b566c/.agents/skills/update-changelog/SKILL.md
- agent-rules HelloThisIsFlo-omnifocus-operator-37b566c/AGENTS.md
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 300
filesystem 52
- fs (weak) HelloThisIsFlo-omnifocus-operator-37b566c/.agents/skills/test-omnifocus-operator/scripts/analyze_snapshot.py :42
import pathlib - fs HelloThisIsFlo-omnifocus-operator-37b566c/.agents/skills/uat-regression/discover.py :25
import pathlib - fs (weak) HelloThisIsFlo-omnifocus-operator-37b566c/.research/benchmark/run.py :18
from pathlib import Path - fs HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/direct-database-access-date-filters/1-overdue-equivalence/test_overdue_equivalence.py :23
from pathlib import Path - fs HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/direct-database-access-date-filters/2-flag-equivalences/test_flag_equivalences.py :20
from pathlib import Path - fs HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/direct-database-access-date-filters/3-effective-date-inheritance/test_effective_inheritance.py :16
from pathlib import Path - fs HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/direct-database-access-date-filters/4-date-column-audit/test_date_column_audit.py :24
from pathlib import Path - fs HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/direct-database-access-date-filters/5-completed-dropped-behavior/test_completed_dropped.py :21
from pathlib import Path - fs HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/direct-database-access-date-filters/6-due-soon-spike/spike_due_soon.py :21
from pathlib import Path - fs HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/direct-database-access-inbox/validate_inbox_equivalence.py :17
from pathlib import Path - fs HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/direct-database-access-ordering/1-rank-analysis/rank_semantics.py :29
from pathlib import Path - fs HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/direct-database-access/1-initial-discovery/poc_parse_ofocus.py :23
from pathlib import Path - fs HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/direct-database-access/3-validation-todos/todo1_cache_timing/test_cache_timing.py :21
from pathlib import Path - fs HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/direct-database-access/3-validation-todos/todo2_enum_priority/test_enum_priority.py :19
from pathlib import Path - fs HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/direct-database-access/3-validation-todos/todo2_enum_priority/verify_side_by_side.py :19
from pathlib import Path - fs HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/direct-database-access/3-validation-todos/todo3_sqlite_benchmark/test_sqlite_benchmark.py :15
from pathlib import Path - fs HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/direct-database-access/3-validation-todos/todo4_sqlite_freshness/test_sqlite_freshness.py :35
from pathlib import Path - fs HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/direct-database-access/4-final-checks/verify_failed_fields.py :19
from pathlib import Path - fs HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/direct-database-access/4-final-checks/verify_field_coverage.py :16
from pathlib import Path - fs HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/direct-database-access/4-final-checks/verify_repetition_fields.py :15
from pathlib import Path - fs HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-spike/experiments/05_middleware.py :132
with open(LOG_FILE) as f: - fs HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-spike/experiments/setup_mcp.py :11
import shutil - fs HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/taskpaper/converter/test_converter.py :15
from pathlib import Path - fs HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/timezone-behavior/01-api-audit/01d-sqlite-floating-inspect.py :22
from pathlib import Path - fs HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/timezone-behavior/02-conversion-proof/02-date-conversion-proof.py :16
from pathlib import Path - fs HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/timezone-behavior/03-create-readback/03-create-and-readback.py :18
from pathlib import Path - fs HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/v1.4.1-cache-coverage/experiments/05_omnijs_diff.py :40
from pathlib import Path - fs HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/v1.4.1-filter-benchmark/experiments/01_bench_parent_only.py :17
from pathlib import Path - fs HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/v1.4.1-filter-benchmark/experiments/02_bench_parent_plus_tag.py :6
from pathlib import Path - fs HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/v1.4.1-filter-benchmark/experiments/03_bench_parent_plus_date.py :6
from pathlib import Path - fs HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/v1.4.1-filter-benchmark/experiments/04_bench_livedb_crosscheck.py :17
from pathlib import Path - fs HelloThisIsFlo-omnifocus-operator-37b566c/setup_operator.py :11
import shutil - fs HelloThisIsFlo-omnifocus-operator-37b566c/src/omnifocus_operator/bridge/real.py :15
from pathlib import Path - fs HelloThisIsFlo-omnifocus-operator-37b566c/src/omnifocus_operator/repository/factory.py :12
from pathlib import Path - fs HelloThisIsFlo-omnifocus-operator-37b566c/src/omnifocus_operator/repository/hybrid/hybrid.py :17
import pathlib - fs HelloThisIsFlo-omnifocus-operator-37b566c/src/omnifocus_operator/service/resolve_dates.py :35
- Repo: half-open (>= after, < before). - fs HelloThisIsFlo-omnifocus-operator-37b566c/src/omnifocus_operator/simulator/__main__.py :25
from pathlib import Path - fs (weak) HelloThisIsFlo-omnifocus-operator-37b566c/tests/doubles/bridge.py :9
from pathlib import Path - fs (weak) HelloThisIsFlo-omnifocus-operator-37b566c/tests/test_bridge_contract.py :20
from pathlib import Path - fs (weak) HelloThisIsFlo-omnifocus-operator-37b566c/tests/test_bridge_only_repository.py :11
from pathlib import Path - fs (weak) HelloThisIsFlo-omnifocus-operator-37b566c/tests/test_cross_path_equivalence.py :43
from pathlib import Path - fs (weak) HelloThisIsFlo-omnifocus-operator-37b566c/tests/test_descriptions.py :10
import pathlib - fs (weak) HelloThisIsFlo-omnifocus-operator-37b566c/tests/test_hybrid_repository.py :20
from pathlib import Path - fs (weak) HelloThisIsFlo-omnifocus-operator-37b566c/tests/test_ipc_engine.py :17
from pathlib import Path - fs (weak) HelloThisIsFlo-omnifocus-operator-37b566c/tests/test_repository_factory.py :15
from pathlib import Path - fs (weak) HelloThisIsFlo-omnifocus-operator-37b566c/tests/test_rrule.py :7
from pathlib import Path - fs (weak) HelloThisIsFlo-omnifocus-operator-37b566c/tests/test_server.py :11
from pathlib import Path - fs (weak) HelloThisIsFlo-omnifocus-operator-37b566c/tests/test_simulator_bridge.py :17
from pathlib import Path - fs (weak) HelloThisIsFlo-omnifocus-operator-37b566c/tests/test_simulator_integration.py :28
from pathlib import Path - fs (weak) HelloThisIsFlo-omnifocus-operator-37b566c/tests/test_smoke.py :3
from pathlib import Path - fs (weak) HelloThisIsFlo-omnifocus-operator-37b566c/tests/test_type_boundary.py :12
import pathlib - fs HelloThisIsFlo-omnifocus-operator-37b566c/uat/capture_golden_master.py :15
import shutil
shell / exec 6
- shell (weak) HelloThisIsFlo-omnifocus-operator-37b566c/.research/benchmark/run.py :14
import subprocess - shell HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/direct-database-access/3-validation-todos/todo1_cache_timing/test_cache_timing.py :17
import subprocess - shell HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/direct-database-access/3-validation-todos/todo4_sqlite_freshness/test_sqlite_freshness.py :30
import subprocess - shell HelloThisIsFlo-omnifocus-operator-37b566c/src/omnifocus_operator/bridge/real.py :12
import subprocess - shell (weak) HelloThisIsFlo-omnifocus-operator-37b566c/tests/test_ipc_engine.py :14
import subprocess - shell (weak) HelloThisIsFlo-omnifocus-operator-37b566c/tests/test_simulator_integration.py :12
import subprocess
network 4
- net (weak) HelloThisIsFlo-omnifocus-operator-37b566c/.research/benchmark/run.py :16
import urllib.parse - net HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/direct-database-access/3-validation-todos/todo1_cache_timing/test_cache_timing.py :19
import urllib.parse - net HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/direct-database-access/3-validation-todos/todo4_sqlite_freshness/test_sqlite_freshness.py :32
import urllib.parse - net HelloThisIsFlo-omnifocus-operator-37b566c/src/omnifocus_operator/bridge/real.py :13
import urllib.parse
database 39
- db HelloThisIsFlo-omnifocus-operator-37b566c/.agents/skills/uat-regression/discover.py :27
import sqlite3 - db HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/direct-database-access-date-filters/1-overdue-equivalence/test_overdue_equivalence.py :21
import sqlite3 - db HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/direct-database-access-date-filters/2-flag-equivalences/test_flag_equivalences.py :18
import sqlite3 - db HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/direct-database-access-date-filters/3-effective-date-inheritance/test_effective_inheritance.py :14
import sqlite3 - db HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/direct-database-access-date-filters/4-date-column-audit/test_date_column_audit.py :22
import sqlite3 - db HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/direct-database-access-date-filters/5-completed-dropped-behavior/test_completed_dropped.py :19
import sqlite3 - db HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/direct-database-access-date-filters/6-due-soon-spike/spike_due_soon.py :18
import sqlite3 - db HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/direct-database-access-inbox/validate_inbox_equivalence.py :16
import sqlite3 - db HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/direct-database-access-ordering/1-rank-analysis/rank_range_validation.py :31
import sqlite3 - db HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/direct-database-access-ordering/1-rank-analysis/rank_semantics.py :28
import sqlite3 - db HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/direct-database-access-ordering/2-hierarchy/hierarchy_ordering.py :34
import sqlite3 - db HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/direct-database-access-ordering/2-hierarchy/inbox_ordering.py :25
import sqlite3 - db HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/direct-database-access-ordering/2-hierarchy/multi_project_cte.py :23
import sqlite3 - db HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/direct-database-access-ordering/2-hierarchy/reorder_validation.py :59
import sqlite3 - db HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/direct-database-access-ordering/3-other-entities/entity_ordering.py :30
import sqlite3 - db HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/direct-database-access-ordering/3-other-entities/rankintask_decoding.py :36
import sqlite3 - db HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/direct-database-access/3-validation-todos/todo1_cache_timing/test_cache_timing.py :16
import sqlite3 - db HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/direct-database-access/3-validation-todos/todo2_enum_priority/test_enum_priority.py :17
import sqlite3 - db HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/direct-database-access/3-validation-todos/todo2_enum_priority/verify_side_by_side.py :17
import sqlite3 - db HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/direct-database-access/3-validation-todos/todo3_sqlite_benchmark/test_sqlite_benchmark.py :13
import sqlite3 - db HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/direct-database-access/3-validation-todos/todo4_sqlite_freshness/test_sqlite_freshness.py :28
import sqlite3 - db HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/direct-database-access/4-final-checks/verify_failed_fields.py :17
import sqlite3 - db HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/direct-database-access/4-final-checks/verify_field_coverage.py :14
import sqlite3 - db HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/direct-database-access/4-final-checks/verify_repetition_fields.py :14
import sqlite3 - db HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/timezone-behavior/01-api-audit/01d-sqlite-floating-inspect.py :20
import sqlite3 - db HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/timezone-behavior/02-conversion-proof/02-date-conversion-proof.py :13
import sqlite3 - db HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/timezone-behavior/03-create-readback/03-create-and-readback.py :16
import sqlite3 - db HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/v1.4.1-cache-coverage/experiments/01_schema_probe.py :17
import sqlite3 - db HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/v1.4.1-cache-coverage/experiments/02_value_sample.py :14
import sqlite3 - db HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/v1.4.1-cache-coverage/experiments/03_attachment_presence.py :17
import sqlite3 - db HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/v1.4.1-cache-coverage/experiments/04_settings_defaults.py :15
import sqlite3 - db HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/v1.4.1-cache-coverage/experiments/05_omnijs_diff.py :38
import sqlite3 - db HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/v1.4.1-filter-benchmark/experiments/04_bench_livedb_crosscheck.py :15
import sqlite3 - db HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/v1.4.1-filter-benchmark/experiments/corpus.py :16
import sqlite3 - db HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/v1.4.1-filter-benchmark/experiments/python_parent_filter.py :19
import sqlite3 - db HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/v1.4.1-filter-benchmark/experiments/sql_parent_filter.py :14
import sqlite3 - db HelloThisIsFlo-omnifocus-operator-37b566c/src/omnifocus_operator/repository/hybrid/hybrid.py :20
import sqlite3 - db (weak) HelloThisIsFlo-omnifocus-operator-37b566c/tests/test_cross_path_equivalence.py :14
import sqlite3 - db (weak) HelloThisIsFlo-omnifocus-operator-37b566c/tests/test_hybrid_repository.py :12
import sqlite3
tool registrations 74
- emit_intermediates HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/bugfix-progress-handler-stdio-disconnect/server.py :42
- emit_with_final HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/bugfix-progress-handler-stdio-disconnect/server.py :60
- emit_only_final HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/bugfix-progress-handler-stdio-disconnect/server.py :80
- echo HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/bugfix-progress-handler-stdio-disconnect/server.py :94
- spike_add_task HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-middleware-validation/1-schema-generation/01_add_task_schema.py :27
- spike_edit_task HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-middleware-validation/1-schema-generation/02_edit_task_schema.py :37
- add_typed HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-middleware-validation/1-schema-generation/03_schema_comparison.py :36
- edit_typed HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-middleware-validation/1-schema-generation/03_schema_comparison.py :42
- add_untyped HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-middleware-validation/1-schema-generation/03_schema_comparison.py :51
- edit_untyped HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-middleware-validation/1-schema-generation/03_schema_comparison.py :57
- single_model HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-middleware-validation/1-schema-generation/04_list_wrapper_behavior.py :35
- list_model HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-middleware-validation/1-schema-generation/04_list_wrapper_behavior.py :41
- list_dict HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-middleware-validation/1-schema-generation/04_list_wrapper_behavior.py :47
- add_task HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-middleware-validation/2-error-flow/01_middleware_intercepts.py :94
- edit_task HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-middleware-validation/2-error-flow/01_middleware_intercepts.py :100
- add_task HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-middleware-validation/3-approaches/01_middleware_reformatter.py :83
- edit_task HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-middleware-validation/3-approaches/01_middleware_reformatter.py :89
- add_tasks HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-middleware-validation/3-approaches/02_on_list_tools_schema.py :115
- edit_tasks HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-middleware-validation/3-approaches/02_on_list_tools_schema.py :132
- add_task HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-middleware-validation/3-approaches/03_model_validator_wrap.py :75
- edit_task HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-middleware-validation/3-approaches/03_model_validator_wrap.py :81
- add_task_tool HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-middleware-validation/3-approaches/04_custom_function_tool.py :108
- add_task_tool HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-middleware-validation/3-approaches/04_custom_function_tool.py :109
- add_task_tool HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-middleware-validation/3-approaches/04_custom_function_tool.py :111
- edit_task_tool HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-middleware-validation/3-approaches/04_custom_function_tool.py :114
- edit_task_tool HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-middleware-validation/3-approaches/04_custom_function_tool.py :115
- edit_task_tool HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-middleware-validation/3-approaches/04_custom_function_tool.py :117
- add_task HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-middleware-validation/3-approaches/05_error_handling_middleware.py :75
- edit_task HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-middleware-validation/3-approaches/05_error_handling_middleware.py :81
- get_something HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-middleware-validation/3-approaches/05_error_handling_middleware.py :87
- spike_edit_task HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-middleware-validation/4-unset-deep-dive/04_json_schema_exclusion.py :245
- spike_edit_actions HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-middleware-validation/4-unset-deep-dive/04_json_schema_exclusion.py :250
- spike_tag_action HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-middleware-validation/4-unset-deep-dive/04_json_schema_exclusion.py :255
- spike_move_action HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-middleware-validation/4-unset-deep-dive/04_json_schema_exclusion.py :260
- spike_repetition_edit HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-middleware-validation/4-unset-deep-dive/04_json_schema_exclusion.py :265
- add_tasks HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-middleware-validation/5-integration/01_typed_add_tasks_e2e.py :62
- edit_tasks HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-middleware-validation/5-integration/02_typed_edit_tasks_e2e.py :84
- create_task HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-middleware-validation/middleware_validation_spike.py :113
- create_task_untyped HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-middleware-validation/middleware_validation_spike.py :120
- inspect_context HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-spike/experiments/01_server_and_context.py :40
- compare_ctx_vs_logger HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-spike/experiments/02_client_logging.py :83
- explore_server_loggers HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-spike/experiments/02_client_logging.py :110
- format_showcase HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-spike/experiments/02_client_logging.py :149
- ctx_with_structured_data HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-spike/experiments/02_client_logging.py :241
- all_ctx_levels HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-spike/experiments/02_client_logging.py :276
- rapid_fire HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-spike/experiments/02_client_logging.py :286
- check_stderr HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-spike/experiments/03_server_logging.py :48
- check_stderr_with_logging HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-spike/experiments/03_server_logging.py :71
- get_tasks HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-spike/experiments/04_test_client.py :57
- add_task HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-spike/experiments/04_test_client.py :62
- get_call_count HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-spike/experiments/04_test_client.py :67
- fail_loudly HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-spike/experiments/04_test_client.py :72
- echo HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-spike/experiments/05_middleware.py :103
- fast_tool HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-spike/experiments/05_middleware.py :109
- slow_tool HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-spike/experiments/05_middleware.py :115
- failing_tool HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-spike/experiments/05_middleware.py :122
- check_timing_log HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-spike/experiments/05_middleware.py :128
- process_batch HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-spike/experiments/06_progress.py :43
- process_with_messages HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-spike/experiments/06_progress.py :59
- process_unknown_total HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-spike/experiments/06_progress.py :77
- get_tasks_lifespan HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-spike/experiments/07_dependency_injection.py :77
- get_tasks_depends_ctx HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-spike/experiments/07_dependency_injection.py :95
- get_tasks_depends_closure HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-spike/experiments/07_dependency_injection.py :119
- mixed HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-spike/experiments/07_dependency_injection.py :136
- confirm_action HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-spike/experiments/08_elicitation.py :47
- ask_string HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-spike/experiments/08_elicitation.py :66
- ask_number HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-spike/experiments/08_elicitation.py :78
- ask_boolean HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-spike/experiments/08_elicitation.py :90
- ask_choice HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-spike/experiments/08_elicitation.py :102
- ask_multi_select HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-spike/experiments/08_elicitation.py :117
- ask_structured HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-spike/experiments/08_elicitation.py :140
- ask_with_defaults HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-spike/experiments/08_elicitation.py :174
- multi_turn HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-spike/experiments/08_elicitation.py :195
- fallback_demo HelloThisIsFlo-omnifocus-operator-37b566c/.research/deep-dives/fastmcp-spike/experiments/08_elicitation.py :225
declared dependencies 2
- fastmcp@>=3.1.1
- pydantic-settings@>=2.0