fast-agent-mcp 0.2.58__tar.gz → 0.3.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of fast-agent-mcp might be problematic. Click here for more details.

Files changed (309) hide show
  1. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/.gitignore +1 -3
  2. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/PKG-INFO +7 -7
  3. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/README.md +1 -1
  4. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/custom-agents/agent.py +3 -3
  5. {fast_agent_mcp-0.2.58/src/mcp_agent/resources → fast_agent_mcp-0.3.1}/examples/data-analysis/analysis-campaign.py +5 -4
  6. {fast_agent_mcp-0.2.58/src/mcp_agent/resources → fast_agent_mcp-0.3.1}/examples/data-analysis/analysis.py +1 -1
  7. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/mcp/elicitations/forms_demo.py +3 -3
  8. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/mcp/elicitations/game_character.py +2 -2
  9. {fast_agent_mcp-0.2.58/src/mcp_agent/resources → fast_agent_mcp-0.3.1}/examples/mcp/elicitations/game_character_handler.py +1 -1
  10. {fast_agent_mcp-0.2.58/src/mcp_agent/resources → fast_agent_mcp-0.3.1}/examples/mcp/elicitations/tool_call.py +1 -1
  11. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/mcp/mcp-filtering/test_mcp_filtering.py +27 -23
  12. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/mcp/state-transfer/agent_one.py +1 -1
  13. {fast_agent_mcp-0.2.58/src/mcp_agent/resources → fast_agent_mcp-0.3.1}/examples/mcp/state-transfer/agent_two.py +1 -1
  14. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/mcp/vision-examples/example1.py +2 -2
  15. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/mcp/vision-examples/example2.py +1 -1
  16. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/mcp/vision-examples/example3.py +1 -1
  17. fast_agent_mcp-0.3.1/examples/new-api/display_check.py +25 -0
  18. fast_agent_mcp-0.3.1/examples/new-api/simple_llm.py +80 -0
  19. fast_agent_mcp-0.3.1/examples/new-api/simple_llm_advanced.py +110 -0
  20. fast_agent_mcp-0.3.1/examples/new-api/simple_mcp.py +27 -0
  21. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/otel/agent.py +3 -3
  22. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/otel/agent2.py +3 -3
  23. {fast_agent_mcp-0.2.58/src/mcp_agent/resources → fast_agent_mcp-0.3.1}/examples/researcher/researcher-eval.py +1 -1
  24. {fast_agent_mcp-0.2.58/src/mcp_agent/resources → fast_agent_mcp-0.3.1}/examples/researcher/researcher-imp.py +1 -1
  25. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/researcher/researcher.py +1 -1
  26. fast_agent_mcp-0.3.1/examples/setup/.gitignore +24 -0
  27. fast_agent_mcp-0.3.1/examples/setup/agent.py +18 -0
  28. fast_agent_mcp-0.3.1/examples/setup/fastagent.config.yaml +44 -0
  29. fast_agent_mcp-0.3.1/examples/setup/fastagent.secrets.yaml.example +38 -0
  30. fast_agent_mcp-0.3.1/examples/setup/pyproject.toml.tmpl +17 -0
  31. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/tensorzero/agent.py +2 -2
  32. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/tensorzero/image_demo.py +3 -3
  33. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/tensorzero/simple_agent.py +1 -1
  34. {fast_agent_mcp-0.2.58/src/mcp_agent/resources → fast_agent_mcp-0.3.1}/examples/workflows/chaining.py +1 -1
  35. {fast_agent_mcp-0.2.58/src/mcp_agent/resources → fast_agent_mcp-0.3.1}/examples/workflows/evaluator.py +3 -3
  36. {fast_agent_mcp-0.2.58/src/mcp_agent/resources → fast_agent_mcp-0.3.1}/examples/workflows/human_input.py +5 -3
  37. {fast_agent_mcp-0.2.58/src/mcp_agent/resources → fast_agent_mcp-0.3.1}/examples/workflows/orchestrator.py +1 -1
  38. {fast_agent_mcp-0.2.58/src/mcp_agent/resources → fast_agent_mcp-0.3.1}/examples/workflows/parallel.py +2 -2
  39. {fast_agent_mcp-0.2.58/src/mcp_agent/resources → fast_agent_mcp-0.3.1}/examples/workflows/router.py +5 -2
  40. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/hatch_build.py +37 -12
  41. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/pyproject.toml +17 -24
  42. fast_agent_mcp-0.3.1/src/fast_agent/__init__.py +127 -0
  43. fast_agent_mcp-0.3.1/src/fast_agent/agents/__init__.py +36 -0
  44. {fast_agent_mcp-0.2.58/src/mcp_agent/core → fast_agent_mcp-0.3.1/src/fast_agent/agents}/agent_types.py +2 -1
  45. fast_agent_mcp-0.3.1/src/fast_agent/agents/llm_agent.py +217 -0
  46. fast_agent_mcp-0.3.1/src/fast_agent/agents/llm_decorator.py +486 -0
  47. fast_agent_mcp-0.2.58/src/mcp_agent/agents/base_agent.py → fast_agent_mcp-0.3.1/src/fast_agent/agents/mcp_agent.py +377 -385
  48. fast_agent_mcp-0.3.1/src/fast_agent/agents/tool_agent.py +168 -0
  49. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/agents/workflow/chain_agent.py +43 -33
  50. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/agents/workflow/evaluator_optimizer.py +31 -35
  51. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/agents/workflow/iterative_planner.py +56 -47
  52. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/agents/workflow/orchestrator_models.py +4 -4
  53. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/agents/workflow/parallel_agent.py +34 -41
  54. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/agents/workflow/router_agent.py +54 -39
  55. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/cli/__main__.py +5 -3
  56. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/cli/commands/check_config.py +95 -66
  57. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/cli/commands/go.py +20 -11
  58. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/cli/commands/quickstart.py +4 -4
  59. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/cli/commands/server_helpers.py +1 -1
  60. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/cli/commands/setup.py +75 -134
  61. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/cli/commands/url_parser.py +9 -8
  62. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/cli/main.py +36 -16
  63. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/cli/terminal.py +2 -2
  64. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/config.py +10 -2
  65. fast_agent_mcp-0.3.1/src/fast_agent/constants.py +8 -0
  66. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/context.py +24 -19
  67. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/context_dependent.py +9 -5
  68. fast_agent_mcp-0.3.1/src/fast_agent/core/__init__.py +52 -0
  69. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/core/agent_app.py +39 -36
  70. fast_agent_mcp-0.3.1/src/fast_agent/core/core_app.py +135 -0
  71. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/core/direct_decorators.py +12 -26
  72. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/core/direct_factory.py +95 -73
  73. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent/core}/executor/executor.py +4 -5
  74. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/core/fastagent.py +32 -32
  75. fast_agent_mcp-0.3.1/src/fast_agent/core/logging/__init__.py +5 -0
  76. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent/core}/logging/events.py +3 -3
  77. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent/core}/logging/json_serializer.py +1 -1
  78. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent/core}/logging/listeners.py +85 -7
  79. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent/core}/logging/logger.py +7 -7
  80. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent/core}/logging/transport.py +10 -11
  81. fast_agent_mcp-0.3.1/src/fast_agent/core/prompt.py +9 -0
  82. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/core/validation.py +4 -4
  83. fast_agent_mcp-0.3.1/src/fast_agent/event_progress.py +61 -0
  84. fast_agent_mcp-0.3.1/src/fast_agent/history/history_exporter.py +44 -0
  85. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/human_input/__init__.py +9 -12
  86. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/human_input/elicitation_handler.py +26 -8
  87. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/human_input/elicitation_state.py +7 -7
  88. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/human_input/simple_form.py +6 -4
  89. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/human_input/types.py +1 -18
  90. fast_agent_mcp-0.3.1/src/fast_agent/interfaces.py +228 -0
  91. fast_agent_mcp-0.3.1/src/fast_agent/llm/__init__.py +9 -0
  92. fast_agent_mcp-0.2.58/src/mcp_agent/llm/augmented_llm.py → fast_agent_mcp-0.3.1/src/fast_agent/llm/fastagent_llm.py +127 -218
  93. fast_agent_mcp-0.3.1/src/fast_agent/llm/internal/passthrough.py +137 -0
  94. fast_agent_mcp-0.2.58/src/mcp_agent/llm/augmented_llm_playback.py → fast_agent_mcp-0.3.1/src/fast_agent/llm/internal/playback.py +29 -25
  95. fast_agent_mcp-0.2.58/src/mcp_agent/llm/augmented_llm_silent.py → fast_agent_mcp-0.3.1/src/fast_agent/llm/internal/silent.py +10 -17
  96. fast_agent_mcp-0.3.1/src/fast_agent/llm/internal/slow.py +38 -0
  97. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/llm/memory.py +40 -30
  98. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/llm/model_database.py +35 -2
  99. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/llm/model_factory.py +103 -77
  100. fast_agent_mcp-0.3.1/src/fast_agent/llm/model_info.py +126 -0
  101. {fast_agent_mcp-0.2.58/src/mcp_agent/llm/providers → fast_agent_mcp-0.3.1/src/fast_agent/llm/provider/anthropic}/anthropic_utils.py +7 -7
  102. fast_agent_mcp-0.3.1/src/fast_agent/llm/provider/anthropic/llm_anthropic.py +603 -0
  103. {fast_agent_mcp-0.2.58/src/mcp_agent/llm/providers → fast_agent_mcp-0.3.1/src/fast_agent/llm/provider/anthropic}/multipart_converter_anthropic.py +79 -86
  104. {fast_agent_mcp-0.2.58/src/mcp_agent/llm/providers → fast_agent_mcp-0.3.1/src/fast_agent/llm/provider/bedrock}/bedrock_utils.py +3 -1
  105. fast_agent_mcp-0.2.58/src/mcp_agent/llm/providers/augmented_llm_bedrock.py → fast_agent_mcp-0.3.1/src/fast_agent/llm/provider/bedrock/llm_bedrock.py +833 -717
  106. {fast_agent_mcp-0.2.58/src/mcp_agent/llm/providers → fast_agent_mcp-0.3.1/src/fast_agent/llm/provider/google}/google_converter.py +66 -14
  107. fast_agent_mcp-0.3.1/src/fast_agent/llm/provider/google/llm_google_native.py +431 -0
  108. fast_agent_mcp-0.2.58/src/mcp_agent/llm/providers/augmented_llm_aliyun.py → fast_agent_mcp-0.3.1/src/fast_agent/llm/provider/openai/llm_aliyun.py +6 -7
  109. fast_agent_mcp-0.2.58/src/mcp_agent/llm/providers/augmented_llm_azure.py → fast_agent_mcp-0.3.1/src/fast_agent/llm/provider/openai/llm_azure.py +4 -4
  110. fast_agent_mcp-0.2.58/src/mcp_agent/llm/providers/augmented_llm_deepseek.py → fast_agent_mcp-0.3.1/src/fast_agent/llm/provider/openai/llm_deepseek.py +10 -11
  111. fast_agent_mcp-0.2.58/src/mcp_agent/llm/providers/augmented_llm_generic.py → fast_agent_mcp-0.3.1/src/fast_agent/llm/provider/openai/llm_generic.py +4 -4
  112. fast_agent_mcp-0.2.58/src/mcp_agent/llm/providers/augmented_llm_google_oai.py → fast_agent_mcp-0.3.1/src/fast_agent/llm/provider/openai/llm_google_oai.py +4 -4
  113. fast_agent_mcp-0.2.58/src/mcp_agent/llm/providers/augmented_llm_groq.py → fast_agent_mcp-0.3.1/src/fast_agent/llm/provider/openai/llm_groq.py +14 -16
  114. fast_agent_mcp-0.2.58/src/mcp_agent/llm/providers/augmented_llm_openai.py → fast_agent_mcp-0.3.1/src/fast_agent/llm/provider/openai/llm_openai.py +133 -207
  115. fast_agent_mcp-0.2.58/src/mcp_agent/llm/providers/augmented_llm_openrouter.py → fast_agent_mcp-0.3.1/src/fast_agent/llm/provider/openai/llm_openrouter.py +6 -6
  116. fast_agent_mcp-0.2.58/src/mcp_agent/llm/providers/augmented_llm_tensorzero_openai.py → fast_agent_mcp-0.3.1/src/fast_agent/llm/provider/openai/llm_tensorzero_openai.py +17 -16
  117. fast_agent_mcp-0.2.58/src/mcp_agent/llm/providers/augmented_llm_xai.py → fast_agent_mcp-0.3.1/src/fast_agent/llm/provider/openai/llm_xai.py +6 -6
  118. {fast_agent_mcp-0.2.58/src/mcp_agent/llm/providers → fast_agent_mcp-0.3.1/src/fast_agent/llm/provider/openai}/multipart_converter_openai.py +125 -63
  119. {fast_agent_mcp-0.2.58/src/mcp_agent/llm/providers → fast_agent_mcp-0.3.1/src/fast_agent/llm/provider/openai}/openai_multipart.py +12 -12
  120. {fast_agent_mcp-0.2.58/src/mcp_agent/llm/providers → fast_agent_mcp-0.3.1/src/fast_agent/llm/provider/openai}/openai_utils.py +18 -16
  121. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/llm/provider_key_manager.py +2 -2
  122. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/llm/provider_types.py +2 -0
  123. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/llm/sampling_converter.py +15 -12
  124. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/llm/usage_tracking.py +23 -5
  125. fast_agent_mcp-0.3.1/src/fast_agent/mcp/__init__.py +54 -0
  126. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/mcp/elicitation_factory.py +3 -3
  127. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/mcp/elicitation_handlers.py +19 -10
  128. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/mcp/gen_client.py +3 -3
  129. fast_agent_mcp-0.3.1/src/fast_agent/mcp/helpers/__init__.py +36 -0
  130. fast_agent_mcp-0.3.1/src/fast_agent/mcp/helpers/content_helpers.py +183 -0
  131. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/mcp/helpers/server_config_helpers.py +8 -8
  132. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/mcp/hf_auth.py +25 -23
  133. fast_agent_mcp-0.3.1/src/fast_agent/mcp/interfaces.py +93 -0
  134. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/mcp/logger_textio.py +4 -4
  135. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/mcp/mcp_agent_client_session.py +49 -44
  136. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/mcp/mcp_aggregator.py +66 -115
  137. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/mcp/mcp_connection_manager.py +16 -23
  138. {fast_agent_mcp-0.2.58/src/mcp_agent/core → fast_agent_mcp-0.3.1/src/fast_agent/mcp}/mcp_content.py +23 -15
  139. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/mcp/mime_utils.py +39 -0
  140. fast_agent_mcp-0.3.1/src/fast_agent/mcp/prompt.py +159 -0
  141. fast_agent_mcp-0.2.58/src/mcp_agent/mcp/prompt_message_multipart.py → fast_agent_mcp-0.3.1/src/fast_agent/mcp/prompt_message_extended.py +27 -20
  142. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/mcp/prompt_render.py +21 -19
  143. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/mcp/prompt_serialization.py +46 -46
  144. fast_agent_mcp-0.3.1/src/fast_agent/mcp/prompts/__main__.py +7 -0
  145. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/mcp/prompts/prompt_helpers.py +31 -30
  146. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/mcp/prompts/prompt_load.py +8 -8
  147. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/mcp/prompts/prompt_server.py +11 -19
  148. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/mcp/prompts/prompt_template.py +18 -18
  149. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/mcp/resource_utils.py +1 -1
  150. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/mcp/sampling.py +31 -26
  151. {fast_agent_mcp-0.2.58/src/mcp_agent/mcp_server → fast_agent_mcp-0.3.1/src/fast_agent/mcp/server}/__init__.py +1 -1
  152. {fast_agent_mcp-0.2.58/src/mcp_agent/mcp_server → fast_agent_mcp-0.3.1/src/fast_agent/mcp/server}/agent_server.py +5 -6
  153. fast_agent_mcp-0.3.1/src/fast_agent/mcp/ui_agent.py +48 -0
  154. fast_agent_mcp-0.3.1/src/fast_agent/mcp/ui_mixin.py +209 -0
  155. fast_agent_mcp-0.3.1/src/fast_agent/mcp_server_registry.py +90 -0
  156. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1/src/fast_agent/resources}/examples/data-analysis/analysis-campaign.py +5 -4
  157. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1/src/fast_agent/resources}/examples/data-analysis/analysis.py +1 -1
  158. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/resources/examples/mcp/elicitations/forms_demo.py +3 -3
  159. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/resources/examples/mcp/elicitations/game_character.py +2 -2
  160. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1/src/fast_agent/resources}/examples/mcp/elicitations/game_character_handler.py +1 -1
  161. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1/src/fast_agent/resources}/examples/mcp/elicitations/tool_call.py +1 -1
  162. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/resources/examples/mcp/state-transfer/agent_one.py +1 -1
  163. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1/src/fast_agent/resources}/examples/mcp/state-transfer/agent_two.py +1 -1
  164. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1/src/fast_agent/resources}/examples/researcher/researcher-eval.py +1 -1
  165. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1/src/fast_agent/resources}/examples/researcher/researcher-imp.py +1 -1
  166. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/resources/examples/researcher/researcher.py +1 -1
  167. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/resources/examples/tensorzero/agent.py +2 -2
  168. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/resources/examples/tensorzero/image_demo.py +3 -3
  169. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/resources/examples/tensorzero/simple_agent.py +1 -1
  170. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1/src/fast_agent/resources}/examples/workflows/chaining.py +1 -1
  171. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1/src/fast_agent/resources}/examples/workflows/evaluator.py +3 -3
  172. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1/src/fast_agent/resources}/examples/workflows/human_input.py +5 -3
  173. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1/src/fast_agent/resources}/examples/workflows/orchestrator.py +1 -1
  174. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1/src/fast_agent/resources}/examples/workflows/parallel.py +2 -2
  175. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1/src/fast_agent/resources}/examples/workflows/router.py +5 -2
  176. fast_agent_mcp-0.3.1/src/fast_agent/resources/setup/.gitignore +24 -0
  177. fast_agent_mcp-0.3.1/src/fast_agent/resources/setup/agent.py +18 -0
  178. fast_agent_mcp-0.3.1/src/fast_agent/resources/setup/fastagent.config.yaml +44 -0
  179. fast_agent_mcp-0.3.1/src/fast_agent/resources/setup/fastagent.secrets.yaml.example +38 -0
  180. fast_agent_mcp-0.3.1/src/fast_agent/resources/setup/pyproject.toml.tmpl +17 -0
  181. fast_agent_mcp-0.3.1/src/fast_agent/tools/elicitation.py +369 -0
  182. fast_agent_mcp-0.3.1/src/fast_agent/types/__init__.py +32 -0
  183. fast_agent_mcp-0.3.1/src/fast_agent/types/llm_stop_reason.py +77 -0
  184. fast_agent_mcp-0.3.1/src/fast_agent/ui/__init__.py +38 -0
  185. fast_agent_mcp-0.3.1/src/fast_agent/ui/console_display.py +1005 -0
  186. {fast_agent_mcp-0.2.58/src/mcp_agent/human_input → fast_agent_mcp-0.3.1/src/fast_agent/ui}/elicitation_form.py +17 -12
  187. fast_agent_mcp-0.2.58/src/mcp_agent/human_input/elicitation_forms.py → fast_agent_mcp-0.3.1/src/fast_agent/ui/elicitation_style.py +1 -1
  188. {fast_agent_mcp-0.2.58/src/mcp_agent/core → fast_agent_mcp-0.3.1/src/fast_agent/ui}/enhanced_prompt.py +96 -25
  189. {fast_agent_mcp-0.2.58/src/mcp_agent/core → fast_agent_mcp-0.3.1/src/fast_agent/ui}/interactive_prompt.py +330 -125
  190. fast_agent_mcp-0.3.1/src/fast_agent/ui/mcp_ui_utils.py +224 -0
  191. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent/ui}/progress_display.py +2 -2
  192. {fast_agent_mcp-0.2.58/src/mcp_agent/logging → fast_agent_mcp-0.3.1/src/fast_agent/ui}/rich_progress.py +4 -4
  193. {fast_agent_mcp-0.2.58/src/mcp_agent/core → fast_agent_mcp-0.3.1/src/fast_agent/ui}/usage_display.py +3 -8
  194. fast_agent_mcp-0.2.58/src/mcp_agent/__init__.py +0 -114
  195. fast_agent_mcp-0.2.58/src/mcp_agent/agents/agent.py +0 -92
  196. fast_agent_mcp-0.2.58/src/mcp_agent/agents/workflow/__init__.py +0 -1
  197. fast_agent_mcp-0.2.58/src/mcp_agent/agents/workflow/orchestrator_agent.py +0 -597
  198. fast_agent_mcp-0.2.58/src/mcp_agent/app.py +0 -175
  199. fast_agent_mcp-0.2.58/src/mcp_agent/core/__init__.py +0 -26
  200. fast_agent_mcp-0.2.58/src/mcp_agent/core/prompt.py +0 -191
  201. fast_agent_mcp-0.2.58/src/mcp_agent/event_progress.py +0 -134
  202. fast_agent_mcp-0.2.58/src/mcp_agent/human_input/handler.py +0 -81
  203. fast_agent_mcp-0.2.58/src/mcp_agent/llm/__init__.py +0 -2
  204. fast_agent_mcp-0.2.58/src/mcp_agent/llm/augmented_llm_passthrough.py +0 -232
  205. fast_agent_mcp-0.2.58/src/mcp_agent/llm/augmented_llm_slow.py +0 -53
  206. fast_agent_mcp-0.2.58/src/mcp_agent/llm/providers/__init__.py +0 -8
  207. fast_agent_mcp-0.2.58/src/mcp_agent/llm/providers/augmented_llm_anthropic.py +0 -718
  208. fast_agent_mcp-0.2.58/src/mcp_agent/llm/providers/augmented_llm_google_native.py +0 -496
  209. fast_agent_mcp-0.2.58/src/mcp_agent/llm/providers/sampling_converter_anthropic.py +0 -57
  210. fast_agent_mcp-0.2.58/src/mcp_agent/llm/providers/sampling_converter_openai.py +0 -26
  211. fast_agent_mcp-0.2.58/src/mcp_agent/llm/sampling_format_converter.py +0 -37
  212. fast_agent_mcp-0.2.58/src/mcp_agent/logging/__init__.py +0 -0
  213. fast_agent_mcp-0.2.58/src/mcp_agent/mcp/__init__.py +0 -50
  214. fast_agent_mcp-0.2.58/src/mcp_agent/mcp/helpers/__init__.py +0 -25
  215. fast_agent_mcp-0.2.58/src/mcp_agent/mcp/helpers/content_helpers.py +0 -187
  216. fast_agent_mcp-0.2.58/src/mcp_agent/mcp/interfaces.py +0 -266
  217. fast_agent_mcp-0.2.58/src/mcp_agent/mcp/prompts/__init__.py +0 -0
  218. fast_agent_mcp-0.2.58/src/mcp_agent/mcp/prompts/__main__.py +0 -10
  219. fast_agent_mcp-0.2.58/src/mcp_agent/mcp_server_registry.py +0 -343
  220. fast_agent_mcp-0.2.58/src/mcp_agent/tools/tool_definition.py +0 -14
  221. fast_agent_mcp-0.2.58/src/mcp_agent/ui/console_display.py +0 -790
  222. fast_agent_mcp-0.2.58/src/mcp_agent/ui/console_display_legacy.py +0 -401
  223. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/LICENSE +0 -0
  224. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/azure-openai/fastagent.config.yaml +0 -0
  225. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/bedrock/fast-agent.config.yaml +0 -0
  226. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/custom-agents/fastagent.config.yaml +0 -0
  227. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/data-analysis/fastagent.config.yaml +0 -0
  228. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/data-analysis/mount-point/WA_Fn-UseC_-HR-Employee-Attrition.csv +0 -0
  229. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/mcp/elicitations/elicitation_account_server.py +0 -0
  230. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/mcp/elicitations/elicitation_forms_server.py +0 -0
  231. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/mcp/elicitations/elicitation_game_server.py +0 -0
  232. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/mcp/elicitations/fastagent.config.yaml +0 -0
  233. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/mcp/elicitations/fastagent.secrets.yaml.example +0 -0
  234. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/mcp/mcp-filtering/fastagent.config.yaml +0 -0
  235. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/mcp/mcp-filtering/fastagent.secrets.yaml.example +0 -0
  236. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/mcp/mcp-filtering/mcp_server.py +0 -0
  237. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/mcp/state-transfer/fastagent.config.yaml +0 -0
  238. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/mcp/state-transfer/fastagent.secrets.yaml.example +0 -0
  239. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/mcp/vision-examples/cat.png +0 -0
  240. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/mcp/vision-examples/fastagent.config.yaml +0 -0
  241. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/otel/docker-compose.yaml +0 -0
  242. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/otel/fastagent.config.yaml +0 -0
  243. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/researcher/fastagent.config.yaml +0 -0
  244. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/tensorzero/.env.sample +0 -0
  245. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/tensorzero/Makefile +0 -0
  246. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/tensorzero/README.md +0 -0
  247. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/tensorzero/demo_images/clam.jpg +0 -0
  248. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/tensorzero/demo_images/crab.png +0 -0
  249. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/tensorzero/demo_images/shrimp.png +0 -0
  250. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/tensorzero/docker-compose.yml +0 -0
  251. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/tensorzero/fastagent.config.yaml +0 -0
  252. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/tensorzero/mcp_server/Dockerfile +0 -0
  253. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/tensorzero/mcp_server/entrypoint.sh +0 -0
  254. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/tensorzero/mcp_server/mcp_server.py +0 -0
  255. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/tensorzero/mcp_server/pyproject.toml +0 -0
  256. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/tensorzero/tensorzero_config/system_schema.json +0 -0
  257. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/tensorzero/tensorzero_config/system_template.minijinja +0 -0
  258. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/tensorzero/tensorzero_config/tensorzero.toml +0 -0
  259. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/workflows/fastagent.config.yaml +0 -0
  260. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/workflows/graded_report.md +0 -0
  261. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/workflows/short_story.md +0 -0
  262. {fast_agent_mcp-0.2.58 → fast_agent_mcp-0.3.1}/examples/workflows/short_story.txt +0 -0
  263. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/agents/workflow/orchestrator_prompts.py +0 -0
  264. {fast_agent_mcp-0.2.58/src/mcp_agent/agents → fast_agent_mcp-0.3.1/src/fast_agent/cli}/__init__.py +0 -0
  265. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/cli/constants.py +0 -0
  266. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/core/error_handling.py +0 -0
  267. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/core/exceptions.py +0 -0
  268. {fast_agent_mcp-0.2.58/src/mcp_agent/cli → fast_agent_mcp-0.3.1/src/fast_agent/core/executor}/__init__.py +0 -0
  269. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent/core}/executor/task_registry.py +0 -0
  270. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent/core}/executor/workflow_signal.py +0 -0
  271. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/human_input/form_fields.py +0 -0
  272. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/llm/prompt_utils.py +0 -0
  273. {fast_agent_mcp-0.2.58/src/mcp_agent/core → fast_agent_mcp-0.3.1/src/fast_agent/llm}/request_params.py +0 -0
  274. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/mcp/common.py +0 -0
  275. {fast_agent_mcp-0.2.58/src/mcp_agent/executor → fast_agent_mcp-0.3.1/src/fast_agent/mcp/prompts}/__init__.py +0 -0
  276. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/mcp/prompts/prompt_constants.py +0 -0
  277. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/py.typed +0 -0
  278. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/resources/examples/data-analysis/fastagent.config.yaml +0 -0
  279. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/resources/examples/data-analysis/mount-point/WA_Fn-UseC_-HR-Employee-Attrition.csv +0 -0
  280. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/resources/examples/mcp/elicitations/elicitation_account_server.py +0 -0
  281. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/resources/examples/mcp/elicitations/elicitation_forms_server.py +0 -0
  282. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/resources/examples/mcp/elicitations/elicitation_game_server.py +0 -0
  283. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/resources/examples/mcp/elicitations/fastagent.config.yaml +0 -0
  284. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/resources/examples/mcp/elicitations/fastagent.secrets.yaml.example +0 -0
  285. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/resources/examples/mcp/state-transfer/fastagent.config.yaml +0 -0
  286. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/resources/examples/mcp/state-transfer/fastagent.secrets.yaml.example +0 -0
  287. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/resources/examples/researcher/fastagent.config.yaml +0 -0
  288. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/resources/examples/tensorzero/.env.sample +0 -0
  289. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/resources/examples/tensorzero/Makefile +0 -0
  290. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/resources/examples/tensorzero/README.md +0 -0
  291. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/resources/examples/tensorzero/demo_images/clam.jpg +0 -0
  292. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/resources/examples/tensorzero/demo_images/crab.png +0 -0
  293. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/resources/examples/tensorzero/demo_images/shrimp.png +0 -0
  294. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/resources/examples/tensorzero/docker-compose.yml +0 -0
  295. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/resources/examples/tensorzero/fastagent.config.yaml +0 -0
  296. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/resources/examples/tensorzero/mcp_server/.python-version +0 -0
  297. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/resources/examples/tensorzero/mcp_server/Dockerfile +0 -0
  298. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/resources/examples/tensorzero/mcp_server/entrypoint.sh +0 -0
  299. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/resources/examples/tensorzero/mcp_server/mcp_server.py +0 -0
  300. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/resources/examples/tensorzero/mcp_server/pyproject.toml +0 -0
  301. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/resources/examples/tensorzero/tensorzero_config/system_schema.json +0 -0
  302. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/resources/examples/tensorzero/tensorzero_config/system_template.minijinja +0 -0
  303. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/resources/examples/tensorzero/tensorzero_config/tensorzero.toml +0 -0
  304. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/resources/examples/workflows/fastagent.config.yaml +0 -0
  305. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/resources/examples/workflows/graded_report.md +0 -0
  306. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/resources/examples/workflows/short_story.md +0 -0
  307. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent}/resources/examples/workflows/short_story.txt +0 -0
  308. {fast_agent_mcp-0.2.58/src/mcp_agent → fast_agent_mcp-0.3.1/src/fast_agent/ui}/console.py +0 -0
  309. {fast_agent_mcp-0.2.58/src/mcp_agent/core → fast_agent_mcp-0.3.1/src/fast_agent/ui}/mermaid_utils.py +0 -0
@@ -161,7 +161,7 @@ examples/**/*.secrets.yaml
161
161
  !examples/**/*.secrets.yaml.example
162
162
 
163
163
  # Build-generated resources (copied from examples/ during build)
164
- src/mcp_agent/resources/examples/
164
+ src/fast_agent/resources/
165
165
 
166
166
  # Test data files
167
167
  examples/mcp_root_test/test_data/*.png
@@ -179,8 +179,6 @@ project_contents.md
179
179
 
180
180
  # example logs
181
181
  examples/**/*.jsonl
182
- mcp_agent.config.yaml
183
- mcp_agent.secrets.yaml
184
182
  fastagent.secrets.yaml
185
183
  CLAUDE.md
186
184
  example-outputs/
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fast-agent-mcp
3
- Version: 0.2.58
3
+ Version: 0.3.1
4
4
  Summary: Define, Prompt and Test MCP enabled Agents and Workflows
5
5
  Author-email: Shaun Smith <fastagent@llmindset.co.uk>
6
6
  License: Apache License
@@ -208,18 +208,18 @@ License-File: LICENSE
208
208
  Classifier: License :: OSI Approved :: Apache Software License
209
209
  Classifier: Operating System :: OS Independent
210
210
  Classifier: Programming Language :: Python :: 3
211
- Requires-Python: >=3.13
211
+ Requires-Python: >=3.13.7
212
212
  Requires-Dist: a2a-sdk>=0.3.0
213
213
  Requires-Dist: aiohttp>=3.11.13
214
- Requires-Dist: anthropic>=0.63.0
214
+ Requires-Dist: anthropic>=0.66.0
215
215
  Requires-Dist: azure-identity>=1.14.0
216
216
  Requires-Dist: boto3>=1.35.0
217
217
  Requires-Dist: deprecated>=1.2.18
218
218
  Requires-Dist: email-validator>=2.2.0
219
219
  Requires-Dist: fastapi>=0.115.6
220
- Requires-Dist: google-genai>=1.27.0
221
- Requires-Dist: mcp==1.13.1
222
- Requires-Dist: openai>=1.99.9
220
+ Requires-Dist: google-genai>=1.33.0
221
+ Requires-Dist: mcp==1.14.0
222
+ Requires-Dist: openai>=1.106.1
223
223
  Requires-Dist: opentelemetry-distro>=0.55b0
224
224
  Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.7.0
225
225
  Requires-Dist: opentelemetry-instrumentation-anthropic>=0.43.1; python_version >= '3.10' and python_version < '4.0'
@@ -321,7 +321,7 @@ Here is the complete `sizer.py` Agent application, with boilerplate code:
321
321
 
322
322
  ```python
323
323
  import asyncio
324
- from mcp_agent.core.fastagent import FastAgent
324
+ from fast_agent.core.fastagent import FastAgent
325
325
 
326
326
  # Create the application
327
327
  fast = FastAgent("Agent Example")
@@ -83,7 +83,7 @@ Here is the complete `sizer.py` Agent application, with boilerplate code:
83
83
 
84
84
  ```python
85
85
  import asyncio
86
- from mcp_agent.core.fastagent import FastAgent
86
+ from fast_agent.core.fastagent import FastAgent
87
87
 
88
88
  # Create the application
89
89
  fast = FastAgent("Agent Example")
@@ -1,13 +1,13 @@
1
1
  import asyncio
2
2
 
3
- from mcp_agent.agents.base_agent import BaseAgent
4
- from mcp_agent.core.fastagent import FastAgent
3
+ from fast_agent.agents.mcp_agent import McpAgent
4
+ from fast_agent.core.fastagent import FastAgent
5
5
 
6
6
  # Create the application
7
7
  fast = FastAgent("fast-agent example")
8
8
 
9
9
 
10
- class MyAgent(BaseAgent):
10
+ class MyAgent(McpAgent):
11
11
  async def initialize(self):
12
12
  await super().initialize()
13
13
  print("it's a-me!...Mario!")
@@ -1,7 +1,7 @@
1
1
  import asyncio
2
2
 
3
- from mcp_agent.core.fastagent import FastAgent
4
- from mcp_agent.llm.augmented_llm import RequestParams
3
+ from fast_agent.core.fastagent import FastAgent
4
+ from fast_agent.llm.fastagent_llm import RequestParams
5
5
 
6
6
  # Create the application
7
7
  fast = FastAgent("Data Analysis & Campaign Generator")
@@ -179,8 +179,9 @@ async def main() -> None:
179
179
  )
180
180
 
181
181
  async with fast.run() as agent:
182
- await agent.research_campaign_creator.prompt(
183
- default_prompt="Analyze the CSV file in the current directory and create a comprehensive multi-lingual social media campaign based on the findings. Save all campaign elements as separate files."
182
+ await agent.interactive(
183
+ "research_campaign_creator",
184
+ default_prompt="Analyze the CSV file in the current directory and create a comprehensive multi-lingual social media campaign based on the findings. Save all campaign elements as separate files.",
184
185
  )
185
186
 
186
187
 
@@ -1,6 +1,6 @@
1
1
  import asyncio
2
2
 
3
- from mcp_agent.core.fastagent import FastAgent
3
+ from fast_agent.core.fastagent import FastAgent
4
4
 
5
5
  # Create the application
6
6
  fast = FastAgent("Data Analysis (Roots)")
@@ -13,8 +13,8 @@ import asyncio
13
13
  from rich.console import Console
14
14
  from rich.panel import Panel
15
15
 
16
- from mcp_agent.core.fastagent import FastAgent
17
- from mcp_agent.mcp.helpers.content_helpers import get_resource_text
16
+ from fast_agent.core.fastagent import FastAgent
17
+ from fast_agent.mcp.helpers.content_helpers import get_resource_text
18
18
 
19
19
  fast = FastAgent("Elicitation Forms Demo", quiet=True)
20
20
  console = Console()
@@ -38,7 +38,7 @@ async def main():
38
38
  console.print(
39
39
  "[dim]Demonstrates: string validation, email format, URL format, date format[/dim]"
40
40
  )
41
- result = await agent.get_resource("elicitation://event-registration")
41
+ result = await agent["forms-demo"].get_resource("elicitation://event-registration")
42
42
 
43
43
  if result_text := get_resource_text(result):
44
44
  panel = Panel(
@@ -14,8 +14,8 @@ from game_character_handler import game_character_elicitation_handler
14
14
  from rich.console import Console
15
15
  from rich.panel import Panel
16
16
 
17
- from mcp_agent.core.fastagent import FastAgent
18
- from mcp_agent.mcp.helpers.content_helpers import get_resource_text
17
+ from fast_agent.core.fastagent import FastAgent
18
+ from fast_agent.mcp.helpers.content_helpers import get_resource_text
19
19
 
20
20
  fast = FastAgent("Game Character Creator", quiet=True)
21
21
  console = Console()
@@ -17,7 +17,7 @@ from rich.progress import BarColumn, Progress, TextColumn
17
17
  from rich.prompt import Confirm
18
18
  from rich.table import Table
19
19
 
20
- from mcp_agent.logging.logger import get_logger
20
+ from fast_agent.core.logging.logger import get_logger
21
21
 
22
22
  if TYPE_CHECKING:
23
23
  from mcp import ClientSession
@@ -1,6 +1,6 @@
1
1
  import asyncio
2
2
 
3
- from mcp_agent.core.fastagent import FastAgent
3
+ from fast_agent.core.fastagent import FastAgent
4
4
 
5
5
  # Create the application
6
6
  fast = FastAgent("fast-agent example")
@@ -1,16 +1,13 @@
1
1
  import asyncio
2
2
  import sys
3
3
 
4
- from mcp_agent.core.fastagent import FastAgent, PromptExitError
4
+ from fast_agent.core.fastagent import FastAgent, PromptExitError
5
+
6
+ fast_agent = FastAgent(name="MCP Filtering Demo", parse_cli_args=False, quiet=False)
5
7
 
6
- fast_agent = FastAgent(
7
- name="MCP Filtering Demo",
8
- parse_cli_args=False,
9
- quiet=False
10
- )
11
8
 
12
9
  @fast_agent.agent(
13
- name="filtered_agent",
10
+ name="filtered_agent",
14
11
  model="gpt-4o-mini",
15
12
  instruction="You are a creative writer with filtered access to tools, resources, and prompts.",
16
13
  servers=["creativity"],
@@ -19,75 +16,82 @@ fast_agent = FastAgent(
19
16
  # Resource filtering: only writing resources (not coding resources)
20
17
  resources={"creativity": ["resource://writing/*"]},
21
18
  # Prompt filtering: only writing prompts (not coding prompts)
22
- prompts={"creativity": ["writing_*"]}
19
+ prompts={"creativity": ["writing_*"]},
23
20
  )
24
21
  async def filtered_agent():
25
22
  return "Filtered agent ready"
26
23
 
24
+
27
25
  @fast_agent.agent(
28
26
  name="unfiltered_agent",
29
- model="gpt-4o-mini",
27
+ model="gpt-4o-mini",
30
28
  instruction="You are a creative writer with access to all tools, resources, and prompts.",
31
- servers=["creativity"]
29
+ servers=["creativity"],
32
30
  # No filtering - gets everything
33
31
  )
34
32
  async def unfiltered_agent():
35
33
  return "Unfiltered agent ready"
36
34
 
35
+
37
36
  async def main():
38
37
  try:
39
38
  async with fast_agent.run() as agent:
40
39
  try:
41
40
  print("🎯 MCP Filtering Demo")
42
41
  print("=" * 50)
43
-
42
+
44
43
  # Show filtered agent capabilities
45
44
  print("\n📦 FILTERED AGENT:")
46
45
  filtered = agent._agent("filtered_agent")
47
-
46
+
48
47
  tools = await filtered.list_tools()
49
- print(f"✅ Available tools ({len(tools.tools)}): {[tool.name for tool in tools.tools]}")
50
-
48
+ print(
49
+ f"✅ Available tools ({len(tools.tools)}): {[tool.name for tool in tools.tools]}"
50
+ )
51
+
51
52
  resources = await filtered.list_resources()
52
53
  resource_list = resources.get("creativity", [])
53
54
  print(f"📚 Available resources ({len(resource_list)}): {resource_list}")
54
-
55
+
55
56
  prompts = await filtered.list_prompts()
56
57
  prompt_list = prompts.get("creativity", [])
57
58
  prompt_names = [p.name for p in prompt_list]
58
59
  print(f"💬 Available prompts ({len(prompt_names)}): {prompt_names}")
59
-
60
+
60
61
  # Show unfiltered agent capabilities
61
62
  print("\n🌐 UNFILTERED AGENT:")
62
63
  unfiltered = agent._agent("unfiltered_agent")
63
-
64
+
64
65
  tools = await unfiltered.list_tools()
65
- print(f"✅ Available tools ({len(tools.tools)}): {[tool.name for tool in tools.tools]}")
66
-
66
+ print(
67
+ f"✅ Available tools ({len(tools.tools)}): {[tool.name for tool in tools.tools]}"
68
+ )
69
+
67
70
  resources = await unfiltered.list_resources()
68
71
  resource_list = resources.get("creativity", [])
69
72
  print(f"📚 Available resources ({len(resource_list)}): {resource_list}")
70
-
73
+
71
74
  prompts = await unfiltered.list_prompts()
72
75
  prompt_list = prompts.get("creativity", [])
73
76
  prompt_names = [p.name for p in prompt_list]
74
77
  print(f"💬 Available prompts ({len(prompt_names)}): {prompt_names}")
75
-
78
+
76
79
  print("\n" + "=" * 50)
77
80
  print("🚀 Starting interactive session with filtered agent...")
78
81
  print("Type 'exit' to quit")
79
-
82
+
80
83
  await agent.interactive(agent_name="filtered_agent")
81
84
 
82
85
  except PromptExitError:
83
86
  print("👋 Goodbye!")
84
-
87
+
85
88
  except KeyboardInterrupt:
86
89
  print("\nExiting...")
87
90
  sys.exit(0)
88
91
  except Exception as e:
89
92
  print(f"Error: {e}")
90
93
  import traceback
94
+
91
95
  traceback.print_exc()
92
96
  sys.exit(1)
93
97
 
@@ -1,6 +1,6 @@
1
1
  import asyncio
2
2
 
3
- from mcp_agent.core.fastagent import FastAgent
3
+ from fast_agent.core.fastagent import FastAgent
4
4
 
5
5
  # Create the application
6
6
  fast = FastAgent("fast-agent agent_one (mcp server)")
@@ -1,6 +1,6 @@
1
1
  import asyncio
2
2
 
3
- from mcp_agent.core.fastagent import FastAgent
3
+ from fast_agent.core.fastagent import FastAgent
4
4
 
5
5
  # Create the application
6
6
  fast = FastAgent("fast-agent agent_two (mcp client)")
@@ -1,8 +1,8 @@
1
1
  import asyncio
2
2
  from pathlib import Path
3
3
 
4
- from mcp_agent.core.fastagent import FastAgent
5
- from mcp_agent.core.prompt import Prompt
4
+ from fast_agent.core.fastagent import FastAgent
5
+ from fast_agent.core.prompt import Prompt
6
6
 
7
7
  # Create the application
8
8
  fast = FastAgent("fast-agent example")
@@ -1,6 +1,6 @@
1
1
  import asyncio
2
2
 
3
- from mcp_agent.core.fastagent import FastAgent
3
+ from fast_agent.core.fastagent import FastAgent
4
4
 
5
5
  # Create the application
6
6
  fast = FastAgent("fast-agent example")
@@ -1,6 +1,6 @@
1
1
  import asyncio
2
2
 
3
- from mcp_agent.core.fastagent import FastAgent
3
+ from fast_agent.core.fastagent import FastAgent
4
4
 
5
5
  # Create the application
6
6
  fast = FastAgent("fast-agent example")
@@ -0,0 +1,25 @@
1
+ import asyncio
2
+
3
+ from fast_agent.agents.agent_types import AgentConfig
4
+ from fast_agent.agents.llm_agent import LlmAgent
5
+ from fast_agent.core import Core
6
+ from fast_agent.llm.model_factory import ModelFactory
7
+ from fast_agent.llm.request_params import RequestParams
8
+
9
+
10
+ async def main():
11
+ core: Core = Core()
12
+ await core.initialize()
13
+ test: AgentConfig = AgentConfig("hello", model="kimi")
14
+ agent: LlmAgent = LlmAgent(test, context=core.context)
15
+ await agent.attach_llm(ModelFactory.create_factory("haiku"))
16
+ await agent.send("hello world, render some xml tags both inside and outside of code fences")
17
+ await agent.generate("write a 200 word story", RequestParams(maxTokens=50))
18
+ await agent.generate(
19
+ "repeat after me: `one, two, three, four`",
20
+ RequestParams(stopSequences=[" two,"]),
21
+ )
22
+
23
+
24
+ if __name__ == "__main__":
25
+ asyncio.run(main())
@@ -0,0 +1,80 @@
1
+ import asyncio
2
+
3
+ from mcp.server.fastmcp import FastMCP
4
+
5
+ from fast_agent.agents.agent_types import AgentConfig
6
+ from fast_agent.agents.tool_agent import ToolAgent
7
+ from fast_agent.core import Core
8
+ from fast_agent.llm.model_factory import ModelFactory
9
+
10
+ # Initialize FastMCP instance for decorator-based tools
11
+ # Set log_level to WARNING or ERROR to avoid httpx INFO logs
12
+ mcp = FastMCP("Weather Bot", log_level="WARNING")
13
+
14
+
15
+ # Option 1: Using @mcp.tool decorator
16
+ @mcp.tool()
17
+ async def check_weather(city: str) -> str:
18
+ """Check the weather in a given city.
19
+
20
+ Args:
21
+ city: The city to check the weather for
22
+
23
+ Returns:
24
+ Weather information for the city
25
+ """
26
+ return f"The weather in {city} is sunny."
27
+
28
+
29
+ # Option 2: Simple function-based tool (without decorator)
30
+ async def check_weather_function(city: str) -> str:
31
+ """Check the weather in a given city (function version).
32
+
33
+ Args:
34
+ city: The city to check the weather for
35
+
36
+ Returns:
37
+ Weather information for the city
38
+ """
39
+ return f"The weather in {city} is sunny."
40
+
41
+
42
+ # Alternative: Regular (non-async) function also works
43
+ def get_temperature(city: str) -> int:
44
+ """Get the temperature in a city.
45
+
46
+ Args:
47
+ city: The city to get temperature for
48
+
49
+ Returns:
50
+ Temperature in degrees Celsius
51
+ """
52
+ return 22
53
+
54
+
55
+ async def main():
56
+ core: Core = Core()
57
+ await core.initialize()
58
+
59
+ # Create agent configuration
60
+ config = AgentConfig(name="weather_bot", model="haiku")
61
+
62
+ tool_agent = ToolAgent(
63
+ config,
64
+ tools=[
65
+ check_weather,
66
+ get_temperature,
67
+ ],
68
+ context=core.context,
69
+ )
70
+
71
+ # Attach the LLM
72
+ await tool_agent.attach_llm(ModelFactory.create_factory("haiku"))
73
+
74
+ # Test the agent
75
+ await tool_agent.send("What's the weather like in San Francisco and what's the temperature?")
76
+ await core.cleanup()
77
+
78
+
79
+ if __name__ == "__main__":
80
+ asyncio.run(main())
@@ -0,0 +1,110 @@
1
+ import asyncio
2
+ from typing import Any, Dict
3
+
4
+ from mcp.server.fastmcp.tools.base import Tool as FastMCPTool
5
+
6
+ from fast_agent.agents.agent_types import AgentConfig
7
+ from fast_agent.agents.tool_agent import ToolAgent
8
+ from fast_agent.core import Core
9
+ from fast_agent.llm.model_factory import ModelFactory
10
+
11
+
12
+ # Example 1: Simple function that will be wrapped
13
+ async def search_web(query: str, max_results: int = 5) -> str:
14
+ """Search the web for information.
15
+
16
+ Args:
17
+ query: The search query
18
+ max_results: Maximum number of results to return
19
+
20
+ Returns:
21
+ Search results as a formatted string
22
+ """
23
+ # Mock implementation
24
+ return f"Found {max_results} results for '{query}': [Result 1, Result 2, ...]"
25
+
26
+
27
+ # Example 2: Create a FastMCP Tool directly for more control
28
+ def create_calculator_tool() -> FastMCPTool:
29
+ """Create a calculator tool with explicit schema."""
30
+
31
+ def calculate(operation: str, a: float, b: float) -> float:
32
+ """Perform a calculation."""
33
+ operations = {
34
+ "add": lambda x, y: x + y,
35
+ "subtract": lambda x, y: x - y,
36
+ "multiply": lambda x, y: x * y,
37
+ "divide": lambda x, y: x / y if y != 0 else float("inf"),
38
+ }
39
+
40
+ if operation not in operations:
41
+ raise ValueError(f"Unknown operation: {operation}")
42
+
43
+ return operations[operation](a, b)
44
+
45
+ # Create the tool with explicit configuration
46
+ return FastMCPTool.from_function(
47
+ fn=calculate,
48
+ name="calculator",
49
+ description="Perform basic arithmetic operations",
50
+ # FastMCP will still generate the schema, but we could override if needed
51
+ )
52
+
53
+
54
+ # Example 3: Complex async tool with side effects
55
+ async def send_email(to: str, subject: str, body: str) -> Dict[str, Any]:
56
+ """Send an email (mock implementation).
57
+
58
+ Args:
59
+ to: Recipient email address
60
+ subject: Email subject
61
+ body: Email body content
62
+
63
+ Returns:
64
+ Dictionary with send status and message ID
65
+ """
66
+ # Mock async operation
67
+ await asyncio.sleep(0.1)
68
+
69
+ return {
70
+ "status": "sent",
71
+ "message_id": f"msg_{hash((to, subject))}",
72
+ "timestamp": "2024-01-01T12:00:00Z",
73
+ }
74
+
75
+
76
+ async def main():
77
+ core: Core = Core()
78
+ await core.initialize()
79
+
80
+ # Create agent configuration
81
+ config = AgentConfig(name="assistant", model="haiku")
82
+
83
+ # Mix different tool types
84
+ tools = [
85
+ search_web, # Async function
86
+ create_calculator_tool(), # Pre-configured FastMCP Tool
87
+ send_email, # Complex async function
88
+ ]
89
+
90
+ # Create tool agent
91
+ tool_agent = ToolAgent(config, tools=tools, context=core.context)
92
+
93
+ # Attach the LLM
94
+ await tool_agent.attach_llm(ModelFactory.create_factory("haiku"))
95
+
96
+ # Test various tools
97
+ print("Testing search:")
98
+ await tool_agent.send("Search for information about Python FastMCP")
99
+
100
+ print("\nTesting calculator:")
101
+ await tool_agent.send("What is 42 multiplied by 17?")
102
+
103
+ print("\nTesting email:")
104
+ await tool_agent.send(
105
+ "Send an email to test@example.com with subject 'Hello' and body 'Test message'"
106
+ )
107
+
108
+
109
+ if __name__ == "__main__":
110
+ asyncio.run(main())
@@ -0,0 +1,27 @@
1
+ import asyncio
2
+
3
+ from fast_agent.core import Core
4
+
5
+
6
+ async def main():
7
+ core: Core = Core()
8
+ await core.initialize()
9
+
10
+ # # Create agent configuration
11
+ # config = AgentConfig(name="weather_bot", model="haiku")
12
+
13
+ # tool_agent = McpAgent(
14
+ # config,
15
+ # context=core.context,
16
+ # )
17
+
18
+ # # Attach the LLM
19
+ # await tool_agent.attach_llm(ModelFactory.create_factory("haiku"))
20
+
21
+ # # Test the agent
22
+ # await tool_agent.send("What's the weather like in San Francisco and what's the temperature?")
23
+ # await core.cleanup()
24
+
25
+
26
+ if __name__ == "__main__":
27
+ asyncio.run(main())
@@ -3,9 +3,9 @@ from typing import Annotated
3
3
 
4
4
  from pydantic import BaseModel, Field
5
5
 
6
- from mcp_agent.core.fastagent import FastAgent
7
- from mcp_agent.core.prompt import Prompt
8
- from mcp_agent.core.request_params import RequestParams
6
+ from fast_agent.core.fastagent import FastAgent
7
+ from fast_agent.core.prompt import Prompt
8
+ from fast_agent.llm.request_params import RequestParams
9
9
 
10
10
  # Create the application
11
11
  fast = FastAgent("fast-agent example")
@@ -3,9 +3,9 @@ from typing import Annotated
3
3
 
4
4
  from pydantic import BaseModel, Field
5
5
 
6
- from mcp_agent.core.fastagent import FastAgent
7
- from mcp_agent.core.prompt import Prompt
8
- from mcp_agent.core.request_params import RequestParams
6
+ from fast_agent.core.fastagent import FastAgent
7
+ from fast_agent.core.prompt import Prompt
8
+ from fast_agent.llm.request_params import RequestParams
9
9
 
10
10
  # Create the application
11
11
  fast = FastAgent("fast-agent example")
@@ -1,6 +1,6 @@
1
1
  import asyncio
2
2
 
3
- from mcp_agent.core.fastagent import FastAgent
3
+ from fast_agent.core.fastagent import FastAgent
4
4
 
5
5
  agents = FastAgent(name="Researcher Agent (EO)")
6
6
 
@@ -1,6 +1,6 @@
1
1
  import asyncio
2
2
 
3
- from mcp_agent.core.fastagent import FastAgent
3
+ from fast_agent.core.fastagent import FastAgent
4
4
 
5
5
  agents = FastAgent(name="Enhanced Researcher")
6
6
 
@@ -1,6 +1,6 @@
1
1
  import asyncio
2
2
 
3
- from mcp_agent.core.fastagent import FastAgent
3
+ from fast_agent.core.fastagent import FastAgent
4
4
 
5
5
  # from rich import print
6
6
 
@@ -0,0 +1,24 @@
1
+ # Secrets
2
+ fastagent.secrets.yaml
3
+
4
+ # Python cache/bytecode
5
+ __pycache__/
6
+ *.py[cod]
7
+
8
+ # Local env and virtualenvs
9
+ .env
10
+ .venv/
11
+ venv/
12
+ env/
13
+
14
+ # OS cruft
15
+ .DS_Store
16
+ Thumbs.db
17
+
18
+ # Logs/artifacts
19
+ fastagent.jsonl
20
+ *.jsonl
21
+
22
+ # Editors (optional)
23
+ .idea/
24
+ .vscode/