fast-agent-mcp 0.0.16__py3-none-any.whl → 0.1.1__py3-none-any.whl

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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fast-agent-mcp
3
- Version: 0.0.16
3
+ Version: 0.1.1
4
4
  Summary: Define, Prompt and Test MCP enabled Agents and Workflows
5
5
  Author-email: Shaun Smith <fastagent@llmindset.co.uk>, Sarmad Qadri <sarmad@lastmileai.dev>
6
6
  License: Apache License
@@ -235,7 +235,7 @@ Provides-Extra: temporal
235
235
  Requires-Dist: temporalio>=1.8.0; extra == 'temporal'
236
236
  Description-Content-Type: text/markdown
237
237
 
238
- ## FastAgent
238
+ ## fast-agent
239
239
 
240
240
  <p align="center">
241
241
  <a href="https://pypi.org/project/fast-agent-mcp/"><img src="https://img.shields.io/pypi/v/fast-agent-mcp?color=%2334D058&label=pypi" /></a>
@@ -257,7 +257,7 @@ Evaluate how different models handle Agent and MCP Server calling tasks, then bu
257
257
 
258
258
  Prompts and configurations that define your Agent Applications are stored in simple files, with minimal boilerplate, enabling simple management and version control.
259
259
 
260
- Chat with individual Agents and Components before, during and after workflow execution to tune and diagnose your application.
260
+ Chat with individual Agents and Components before, during and after workflow execution to tune and diagnose your application. Agents can request human input to get additional context for task completion.
261
261
 
262
262
  Simple model selection makes testing Model <-> MCP Server interaction painless. You can read more about the motivation behind this project [here](https://llmindset.co.uk/resources/fast-agent/)
263
263
 
@@ -391,6 +391,21 @@ This starts an interactive session, which produces a short social media post for
391
391
 
392
392
  Chains can be incorporated in other workflows, or contain other workflow elements (including other Chains). You can set an `instruction` to precisely describe it's capabilities to other workflow steps if needed.
393
393
 
394
+ ### Human Input
395
+
396
+ Agents can request Human Input to assist with a task or get additional context:
397
+
398
+ ```python
399
+ @fast.agent(
400
+ instruction="An AI agent that assists with basic tasks. Request Human Input when needed.",
401
+ human_input=True,
402
+ )
403
+
404
+ await agent("print the next number in the sequence")
405
+ ```
406
+
407
+ In the example `human_input.py`, the Agent will prompt the User for additional information to complete the task.
408
+
394
409
  ### Parallel
395
410
 
396
411
  The Parallel Workflow sends the same message to multiple Agents simultaneously (`fan-out`), then uses the `fan-in` Agent to process the combined content.
@@ -415,9 +430,13 @@ Look at the `parallel.py` workflow example for more examples. If you don't speci
415
430
 
416
431
  `parallel` is also useful to ensemble ideas from different LLMs.
417
432
 
433
+ When using `parallel` in other workflows, specify an `instruction` to describe its operation.
434
+
418
435
  ### Evaluator-Optimizer
419
436
 
420
- Evaluator-Optimizers combine 2 agents: one to generate content (the `generator`), and the other to judge that content and provide actionable feedback (the `evaluator`). Messages are sent to the generator first, then the pair run in a loop until either the evaluator is satisfied with the quality, or the maximum number of refinements is reached.
437
+ Evaluator-Optimizers combine 2 agents: one to generate content (the `generator`), and the other to judge that content and provide actionable feedback (the `evaluator`). Messages are sent to the generator first, then the pair run in a loop until either the evaluator is satisfied with the quality, or the maximum number of refinements is reached. The final result from the Generator is returned.
438
+
439
+ If the Generator has `use_history` off, the previous iteration is returned when asking for improvements - otherwise conversational context is used.
421
440
 
422
441
  ```python
423
442
  @fast.evaluator_optimizer(
@@ -432,6 +451,8 @@ async with fast.run() as agent:
432
451
  await agent.researcher.send("produce a report on how to make the perfect espresso")
433
452
  ```
434
453
 
454
+ When used in a workflow, it returns the last `generator` message as the result.
455
+
435
456
  See the `evaluator.py` workflow example, or `fast-agent bootstrap researcher` for a more complete example.
436
457
 
437
458
  ### Router
@@ -458,7 +479,7 @@ Given a complex task, the Orchestrator uses an LLM to generate a plan to divide
458
479
  )
459
480
  ```
460
481
 
461
- See `orchestrator.py` in the workflow examples.
482
+ See the `orchestrator.py` or `agent_build.py` workflow example.
462
483
 
463
484
  ## Agent Features
464
485
 
@@ -540,7 +561,7 @@ agent["greeter"].send("Good Evening!") # Dictionary access is supported
540
561
  name="route", # name of the router
541
562
  agents=["agent1", "agent2", "agent3"], # list of agent names router can delegate to
542
563
  model="o3-mini.high", # specify routing model
543
- use_history=True, # router maintains chat history
564
+ use_history=False, # router maintains conversation history
544
565
  human_input=False, # whether router can request human input
545
566
  )
546
567
  ```
@@ -553,9 +574,10 @@ agent["greeter"].send("Good Evening!") # Dictionary access is supported
553
574
  instruction="instruction", # base instruction for the orchestrator
554
575
  agents=["agent1", "agent2"], # list of agent names this orchestrator can use
555
576
  model="o3-mini.high", # specify orchestrator planning model
556
- use_history=False, # orchestrator doesn't maintain chat history by default
577
+ use_history=False, # orchestrator doesn't maintain chat history (no effect).
557
578
  human_input=False, # whether orchestrator can request human input
558
579
  plan_type="full", # planning approach: "full" or "iterative"
580
+ max_iterations=5, # maximum number of full plan attempts, or iterations
559
581
  )
560
582
  ```
561
583
 
@@ -570,6 +592,7 @@ agent["greeter"].send("Good Evening!") # Dictionary access is supported
570
592
 
571
593
  ### llmindset.co.uk fork:
572
594
 
595
+ - Overhaul of Eval/Opt for Conversation Management
573
596
  - Remove instructor use for Orchestrator
574
597
  - Improved handling of Parallel/Fan-In and respose option
575
598
  - XML based generated prompts
@@ -590,9 +613,3 @@ agent["greeter"].send("Good Evening!") # Dictionary access is supported
590
613
  - Numerous defect fixes
591
614
 
592
615
  ### Features to add.
593
-
594
- - Chat History Clear.
595
-
596
- ```
597
-
598
- ```
@@ -11,19 +11,19 @@ mcp_agent/agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,
11
11
  mcp_agent/agents/agent.py,sha256=losanPSdZXZzmeiX-J6ctOinLlkhNZsxwi3Swr8lnxA,11482
12
12
  mcp_agent/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
13
  mcp_agent/cli/__main__.py,sha256=AVZ7tQFhU_sDOGuUGJq8ujgKtcxsYJBJwHbVaaiRDlI,166
14
- mcp_agent/cli/main.py,sha256=cqRxYTpeZ656lzf9qLR3LPnQXrFVDxlWm5gRuqyzUQg,2456
14
+ mcp_agent/cli/main.py,sha256=DE6EZzspfzHwPK59x8vL4AIDHRQkVQ1Ja70XRGU1IQs,2753
15
15
  mcp_agent/cli/terminal.py,sha256=5fqrKlJvIpKEuvpvZ653OueQSYFFktBEbosjr2ucMUc,1026
16
- mcp_agent/cli/commands/bootstrap.py,sha256=z1wZSy8vO_GZPGLrFGzG3EKFQgAHC08jiIdVyylo-58,10778
16
+ mcp_agent/cli/commands/bootstrap.py,sha256=Rmwbuwl52eHfnya7fnwKk2J7nCsHpSh6irka4mBDEnU,10779
17
17
  mcp_agent/cli/commands/config.py,sha256=32YTS5jmsYAs9QzAhjkG70_daAHqOemf4XbZBBSMz6g,204
18
- mcp_agent/cli/commands/setup.py,sha256=8ofxUAF2nUSu1IarDZSAsTt6_6PoEht3TGbz9N6WSbs,6239
18
+ mcp_agent/cli/commands/setup.py,sha256=_SCpd6_PrixqbSaE72JQ7erIRkZnJGmh_3TvvwSzEiE,6392
19
19
  mcp_agent/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
- mcp_agent/core/agent_app.py,sha256=2gnORb52cpWYGjRDNTJ9lVCEEc11c7Xi874ho7bbYVQ,6097
20
+ mcp_agent/core/agent_app.py,sha256=6U3HLYAJOfyVuUpZVELWT5lOo64-b_sfWp0yn88s7Wo,6085
21
21
  mcp_agent/core/agent_types.py,sha256=yKiMbv9QO2dduq4zXmoMZlOZpXJZhM4oNwIq1-134FE,318
22
22
  mcp_agent/core/agent_utils.py,sha256=yUJ-qvw5TblqqOsB1vj0Qvcz9mass9awPA6UNNvuw0A,1738
23
- mcp_agent/core/enhanced_prompt.py,sha256=ka-uuGNW7XggaGzXZQFB9T4azej455VPcgO66Q_7jnY,13008
23
+ mcp_agent/core/enhanced_prompt.py,sha256=XraDKdIMW960KXCiMfCEPKDakbf1wHYgvHwD-9CBDi0,13011
24
24
  mcp_agent/core/error_handling.py,sha256=D3HMW5odrbJvaKqcpCGj6eDXrbFcuqYaCZz7fyYiTu4,623
25
25
  mcp_agent/core/exceptions.py,sha256=a2-JGRwFFRoQEPuAq0JC5PhAJ5TO3xVJfdS4-VN29cw,2225
26
- mcp_agent/core/fastagent.py,sha256=MLMdQ4_Cjb2svWyGVWLGf8EzI3dSFCl4BS5qq8UrKgg,56966
26
+ mcp_agent/core/fastagent.py,sha256=drf11eHH1xCiyS91v_ADWfaV8T9asm_2Vw0NXxjinpc,58730
27
27
  mcp_agent/core/proxies.py,sha256=hXDUpsgGO4xBTIjdUeXj6vULPb8sf55vAFVQh6Ybn60,4411
28
28
  mcp_agent/core/server_validation.py,sha256=_59cn16nNT4HGPwg19HgxMtHK4MsdWYDUw_CuL-5xek,1696
29
29
  mcp_agent/core/types.py,sha256=Zhi9iW7uiOfdpSt9NC0FCtGRFtJPg4mpZPK2aYi7a7M,817
@@ -54,7 +54,8 @@ mcp_agent/mcp/mcp_agent_server.py,sha256=xP09HZTeguJi4Fq0p3fjLBP55uSYe5AdqM90xCg
54
54
  mcp_agent/mcp/mcp_aggregator.py,sha256=RVsgNnSJ1IPBkqKgF_Gp-Cpv97FVBIdppPey6FRoHB0,14751
55
55
  mcp_agent/mcp/mcp_connection_manager.py,sha256=WLli0w3TVcsszyD9M7zP7vLKPetnQLTf_0PGhvMm9YM,13145
56
56
  mcp_agent/mcp/stdio.py,sha256=tW075R5rQ-UlflXWFKIFDgCbWbuhKqxhiYolWvyEkFs,3985
57
- mcp_agent/resources/examples/data-analysis/analysis.py,sha256=1Ce68epq8j6yjgxkJeTtnLR4l5yq8ANGEZ2k1sIf6dw,2292
57
+ mcp_agent/resources/examples/data-analysis/analysis-campaign.py,sha256=EG-HhaDHltZ4hHAqhgfX_pHM2wem48aYhSIKJxyWHKc,7269
58
+ mcp_agent/resources/examples/data-analysis/analysis.py,sha256=5zLoioZQNKUfXt1EXLrGX3TU06-0N06-L9Gtp9BIr6k,2611
58
59
  mcp_agent/resources/examples/data-analysis/fastagent.config.yaml,sha256=eTKGbjnTHhDTeNRPQvG_fr9OQpEZ5Y9v7X2NyCj0V70,530
59
60
  mcp_agent/resources/examples/data-analysis/mount-point/WA_Fn-UseC_-HR-Employee-Attrition.csv,sha256=pcMeOL1_r8m8MziE6xgbBrQbjl5Ijo98yycZn7O-dlk,227977
60
61
  mcp_agent/resources/examples/internal/agent.py,sha256=f-jTgYabV3nWCQm0ZP9NtSEWjx3nQbRngzArRufcELg,384
@@ -64,12 +65,12 @@ mcp_agent/resources/examples/mcp_researcher/researcher-eval.py,sha256=kNPjIU-JwE
64
65
  mcp_agent/resources/examples/researcher/fastagent.config.yaml,sha256=2_VXZneckR6zk6RWzzL-smV_oWmgg4uSkLWqZv8jF0I,1995
65
66
  mcp_agent/resources/examples/researcher/researcher-eval.py,sha256=kNPjIU-JwE0oIBQKwhv6lZsUF_SPtYVkiEEbY1ZVZxk,1807
66
67
  mcp_agent/resources/examples/researcher/researcher.py,sha256=jPRafm7jbpHKkX_dQiYGG3Sw-e1Dm86q-JZT-WZDhM0,1425
67
- mcp_agent/resources/examples/workflows/agent_build.py,sha256=vdjS02rZR88RU53WYzXxPscfFNEFFe_niHYE_i49I8Q,2396
68
+ mcp_agent/resources/examples/workflows/agent_build.py,sha256=HxsTWkmcFh_X3UhAchvpwp7P4IVCBS-B-hK6e_DuNnM,2748
68
69
  mcp_agent/resources/examples/workflows/chaining.py,sha256=1G_0XBcFkSJCOXb6N_iXWlSc_oGAlhENR0k_CN1vJKI,1208
69
- mcp_agent/resources/examples/workflows/evaluator.py,sha256=aUotC9-soTjWgw5GAf9m74BKAHzwxRPBdnSb5ga3lY8,3072
70
+ mcp_agent/resources/examples/workflows/evaluator.py,sha256=3XmW1mjImlaWb0c5FWHYS9yP8nVGTbEdJySAoWXwrDg,3109
70
71
  mcp_agent/resources/examples/workflows/fastagent.config.yaml,sha256=k2AiapOcK42uqG2nWDVvnSLqN4okQIQZK0FTbZufBpY,809
71
72
  mcp_agent/resources/examples/workflows/human_input.py,sha256=c8cBdLEPbaMXddFwsfN3Z7RFs5PZXsdrjANfvq1VTPM,605
72
- mcp_agent/resources/examples/workflows/orchestrator.py,sha256=pRJqB-ok79_iEj8aG4FysHyXz6wAHLUX-5tS8khUI7k,2574
73
+ mcp_agent/resources/examples/workflows/orchestrator.py,sha256=oyKzmLA1z00wbAwDwBCthJ_qJx4fai6GAJpeOXDR-bE,2569
73
74
  mcp_agent/resources/examples/workflows/parallel.py,sha256=pLbQrtXfbdYqMVddxtg5dZnBnm5Wo2mXlIa1Vf2F1FQ,3096
74
75
  mcp_agent/resources/examples/workflows/router.py,sha256=XT_ewCrxPxdUTMCYQGw34qZQ3GGu8TYY_v5Lige8By4,1707
75
76
  mcp_agent/telemetry/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -80,7 +81,7 @@ mcp_agent/workflows/embedding/embedding_base.py,sha256=-c20ggQ8s7XhMxRX-WEhOgHE7
80
81
  mcp_agent/workflows/embedding/embedding_cohere.py,sha256=OKTJvKD_uEafd4c2uhR5tBjprea1nyvlJOO-3FDqOnk,1540
81
82
  mcp_agent/workflows/embedding/embedding_openai.py,sha256=dntjJ5P-FSMGYuyPZC8MuCU_ehwjXw9wDfzZZuSQN1E,1480
82
83
  mcp_agent/workflows/evaluator_optimizer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
83
- mcp_agent/workflows/evaluator_optimizer/evaluator_optimizer.py,sha256=NsRaRte0_zbGPrvwAZadvcgSpY3d5ugbfVHooHOcJfc,15706
84
+ mcp_agent/workflows/evaluator_optimizer/evaluator_optimizer.py,sha256=N4HjckQf_boFRxoWJmuvwq1IEnGYW-k8pKtqjpsnLSE,19223
84
85
  mcp_agent/workflows/intent_classifier/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
85
86
  mcp_agent/workflows/intent_classifier/intent_classifier_base.py,sha256=zTbOmq6EY_abOlme4zl28HM4RWNNS6bbHl3tF7SshJ0,4004
86
87
  mcp_agent/workflows/intent_classifier/intent_classifier_embedding.py,sha256=_bWZGukc_q9LdA_Q18UoAMSzhN8tt4K_bRHNUhy7Crw,3997
@@ -91,15 +92,15 @@ mcp_agent/workflows/intent_classifier/intent_classifier_llm_anthropic.py,sha256=
91
92
  mcp_agent/workflows/intent_classifier/intent_classifier_llm_openai.py,sha256=zj76WlTYnSCYjBQ_IDi5vFBQGmNwYaoUq1rT730sY98,1940
92
93
  mcp_agent/workflows/llm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
93
94
  mcp_agent/workflows/llm/augmented_llm.py,sha256=Hyx-jwgbMjE_WQ--YjIUvdj6HAgX36IvXBesGy6uic0,25884
94
- mcp_agent/workflows/llm/augmented_llm_anthropic.py,sha256=iHfbn7bwC-ICTajEhGwg9vP-UEj681kNmZ9Cv6H05s4,22968
95
+ mcp_agent/workflows/llm/augmented_llm_anthropic.py,sha256=XZmumX-og07VR4O2TnEYQ9ZPwGgzLWt3uq6MII-tjnI,23076
95
96
  mcp_agent/workflows/llm/augmented_llm_openai.py,sha256=a95Q4AFiVw36bXMgYNLFrC2zyDmHERWwkjxJFHlL6JU,25061
96
97
  mcp_agent/workflows/llm/llm_selector.py,sha256=G7pIybuBDwtmyxUDov_QrNYH2FoI0qFRu2JfoxWUF5Y,11045
97
98
  mcp_agent/workflows/llm/model_factory.py,sha256=7zTJrO2ReHa_6dfh_gY6xO8dTySqGFCKlOG9-AMJ-i8,6920
98
99
  mcp_agent/workflows/llm/prompt_utils.py,sha256=EY3eddqnmc_YDUQJFysPnpTH6hr4r2HneeEmX76P8TQ,4948
99
100
  mcp_agent/workflows/orchestrator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
100
- mcp_agent/workflows/orchestrator/orchestrator.py,sha256=dmj7CwTEHj0f8bTakijjvaOfJJ8ShgWwOWaCmFRiX7s,21933
101
- mcp_agent/workflows/orchestrator/orchestrator_models.py,sha256=xTl2vUIqdLPvDAnqA485Hf_A3DD48TWhAbo-jfGrmRE,7182
102
- mcp_agent/workflows/orchestrator/orchestrator_prompts.py,sha256=eJSQThfd6Jvr1jTDx104sJI5R684yE55L_edCiWERsQ,6153
101
+ mcp_agent/workflows/orchestrator/orchestrator.py,sha256=bpTx5V9tF8tNsltWvFSDbj-u5A3aU_tofrnUp8EZ1t4,26049
102
+ mcp_agent/workflows/orchestrator/orchestrator_models.py,sha256=1ldku1fYA_hu2F6K4l2C96mAdds05VibtSzSQrGm3yw,7321
103
+ mcp_agent/workflows/orchestrator/orchestrator_prompts.py,sha256=TBFhAkbcwPCt51lEdl7h1fLFLXqu9_jWLzG4EWpJqZI,8230
103
104
  mcp_agent/workflows/parallel/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
104
105
  mcp_agent/workflows/parallel/fan_in.py,sha256=EivpUL5-qftctws-tlfwmYS1QeSwr07POIbBUbwvwOk,13184
105
106
  mcp_agent/workflows/parallel/fan_out.py,sha256=J-yezgjzAWxfueW_Qcgwoet4PFDRIh0h4m48lIbFA4c,7023
@@ -114,8 +115,8 @@ mcp_agent/workflows/swarm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
114
115
  mcp_agent/workflows/swarm/swarm.py,sha256=-lAIeSWDqbGHGRPTvjiP9nIKWvxxy9DAojl9yQzO1Pw,11050
115
116
  mcp_agent/workflows/swarm/swarm_anthropic.py,sha256=pW8zFx5baUWGd5Vw3nIDF2oVOOGNorij4qvGJKdYPcs,1624
116
117
  mcp_agent/workflows/swarm/swarm_openai.py,sha256=wfteywvAGkT5bLmIxX_StHJq8144whYmCRnJASAjOes,1596
117
- fast_agent_mcp-0.0.16.dist-info/METADATA,sha256=8lvkk2i0uitUQtc30LcOd7Wdak4uflU0aXO_Ve37X1Y,26857
118
- fast_agent_mcp-0.0.16.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
119
- fast_agent_mcp-0.0.16.dist-info/entry_points.txt,sha256=2IXtSmDK9XjWN__RWuRIJTgWyW17wJnJ_h-pb0pZAxo,174
120
- fast_agent_mcp-0.0.16.dist-info/licenses/LICENSE,sha256=cN3FxDURL9XuzE5mhK9L2paZo82LTfjwCYVT7e3j0e4,10939
121
- fast_agent_mcp-0.0.16.dist-info/RECORD,,
118
+ fast_agent_mcp-0.1.1.dist-info/METADATA,sha256=pAhnRdhRDccoGazq-Vrtst1AWKgkGNR9Fe8TB8A9TJc,27861
119
+ fast_agent_mcp-0.1.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
120
+ fast_agent_mcp-0.1.1.dist-info/entry_points.txt,sha256=2IXtSmDK9XjWN__RWuRIJTgWyW17wJnJ_h-pb0pZAxo,174
121
+ fast_agent_mcp-0.1.1.dist-info/licenses/LICENSE,sha256=cN3FxDURL9XuzE5mhK9L2paZo82LTfjwCYVT7e3j0e4,10939
122
+ fast_agent_mcp-0.1.1.dist-info/RECORD,,
@@ -135,7 +135,7 @@ def copy_example_files(
135
135
 
136
136
  def show_overview():
137
137
  """Display an overview of available examples in a nicely formatted table."""
138
- console.print("\n[bold cyan]FastAgent Example Applications[/bold cyan]")
138
+ console.print("\n[bold cyan]fast-agent Example Applications[/bold cyan]")
139
139
  console.print("Build agents and compose workflows through practical examples\n")
140
140
 
141
141
  # Create a table for better organization
@@ -185,7 +185,7 @@ def init(
185
185
  # Check for existing .gitignore
186
186
  needs_gitignore = not find_gitignore(config_path)
187
187
 
188
- console.print("\n[bold]FastAgent Setup[/bold]\n")
188
+ console.print("\n[bold]fast-agent Setup[/bold]\n")
189
189
  console.print("This will create the following files:")
190
190
  console.print(f" - {config_path}/fastagent.config.yaml")
191
191
  console.print(f" - {config_path}/fastagent.secrets.yaml")
@@ -227,6 +227,9 @@ def init(
227
227
  console.print(
228
228
  "2. Keep fastagent.secrets.yaml secure and never commit it to version control"
229
229
  )
230
+ console.print(
231
+ "3. Update fastagent.config.yaml to set a default model (currently system default is 'haiku')"
232
+ )
230
233
  console.print("\nTo get started, run:")
231
234
  console.print(" uv run agent.py")
232
235
  else:
mcp_agent/cli/main.py CHANGED
@@ -22,7 +22,14 @@ console = Console()
22
22
 
23
23
  def show_welcome():
24
24
  """Show a welcome message with available commands."""
25
- console.print("\n[bold]Welcome to MCP Agent![/bold]")
25
+ from importlib.metadata import version
26
+
27
+ try:
28
+ app_version = version("fast-agent-mcp")
29
+ except: # noqa: E722
30
+ app_version = "unknown"
31
+
32
+ console.print(f"\n[bold]fast-agent (fast-agent-mcp) {app_version}[/bold]")
26
33
  console.print("Build effective agents using Model Context Protocol (MCP)")
27
34
 
28
35
  # Create a table for commands
@@ -41,8 +48,11 @@ def show_welcome():
41
48
  console.print("\n[bold]Getting Started:[/bold]")
42
49
  console.print("1. Set up a new project:")
43
50
  console.print(" fastagent setup")
44
- console.print("\n2. Try an example workflow:")
45
- console.print(" fastagent bootstrap create workflow")
51
+ console.print("\n2. Create Building Effective Agents workflow examples:")
52
+ console.print(" fastagent bootstrap workflow")
53
+ console.print("\n3. Explore other examples:")
54
+ console.print(" fastagent bootstrap")
55
+
46
56
  console.print("\nUse --help with any command for more information")
47
57
  console.print("Example: fastagent bootstrap --help")
48
58
 
@@ -129,7 +129,7 @@ class AgentApp:
129
129
  continue
130
130
 
131
131
  result = await self.send(agent, user_input)
132
-
132
+
133
133
  # Check if current agent is a chain that should continue with final agent
134
134
  if agent_types.get(agent) == "Chain":
135
135
  proxy = self._agents[agent]
@@ -52,7 +52,7 @@ class AgentCompleter(Completer):
52
52
  "clear": "Clear the screen",
53
53
  "agents": "List available agents",
54
54
  "STOP": "Stop this prompting session and move to next workflow step",
55
- "EXIT": "Exit FastAgent, terminating any running workflows",
55
+ "EXIT": "Exit fast-agent, terminating any running workflows",
56
56
  **(commands or {}), # Allow custom commands to be passed in
57
57
  }
58
58
  if is_human_input:
@@ -319,7 +319,7 @@ async def handle_special_commands(command, agent_app=None):
319
319
  rich_print(" @agent_name - Switch to agent")
320
320
  rich_print(" STOP - Return control back to the workflow")
321
321
  rich_print(
322
- " EXIT - Exit FastAgent, terminating any running workflows"
322
+ " EXIT - Exit fast-agent, terminating any running workflows"
323
323
  )
324
324
  rich_print("\n[bold]Keyboard Shortcuts:[/bold]")
325
325
  rich_print(
@@ -338,7 +338,7 @@ async def handle_special_commands(command, agent_app=None):
338
338
  return True
339
339
 
340
340
  elif command == "EXIT":
341
- raise PromptExitError("User requested to exit FastAgent session")
341
+ raise PromptExitError("User requested to exit fast-agent session")
342
342
 
343
343
  elif command == "LIST_AGENTS":
344
344
  if available_agents: