universal-mcp-agents 0.1.14__py3-none-any.whl → 0.1.16__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.

Potentially problematic release.


This version of universal-mcp-agents might be problematic. Click here for more details.

Files changed (47) hide show
  1. universal_mcp/agents/__init__.py +1 -1
  2. universal_mcp/agents/base.py +2 -1
  3. universal_mcp/agents/bigtool/__main__.py +4 -3
  4. universal_mcp/agents/bigtool/agent.py +1 -0
  5. universal_mcp/agents/bigtool/graph.py +7 -4
  6. universal_mcp/agents/bigtool/tools.py +4 -5
  7. universal_mcp/agents/builder/__main__.py +49 -23
  8. universal_mcp/agents/builder/builder.py +101 -102
  9. universal_mcp/agents/builder/helper.py +4 -6
  10. universal_mcp/agents/builder/prompts.py +92 -39
  11. universal_mcp/agents/builder/state.py +1 -1
  12. universal_mcp/agents/codeact0/__init__.py +2 -1
  13. universal_mcp/agents/codeact0/agent.py +12 -5
  14. universal_mcp/agents/codeact0/langgraph_agent.py +11 -14
  15. universal_mcp/agents/codeact0/llm_tool.py +2 -2
  16. universal_mcp/agents/codeact0/playbook_agent.py +364 -0
  17. universal_mcp/agents/codeact0/prompts.py +113 -39
  18. universal_mcp/agents/codeact0/sandbox.py +43 -32
  19. universal_mcp/agents/codeact0/state.py +29 -3
  20. universal_mcp/agents/codeact0/tools.py +186 -0
  21. universal_mcp/agents/codeact0/utils.py +53 -18
  22. universal_mcp/agents/shared/__main__.py +3 -2
  23. universal_mcp/agents/shared/prompts.py +1 -1
  24. universal_mcp/agents/shared/tool_node.py +17 -12
  25. universal_mcp/agents/utils.py +36 -12
  26. {universal_mcp_agents-0.1.14.dist-info → universal_mcp_agents-0.1.16.dist-info}/METADATA +3 -3
  27. universal_mcp_agents-0.1.16.dist-info/RECORD +50 -0
  28. universal_mcp/agents/codeact0/usecases/1-unsubscribe.yaml +0 -4
  29. universal_mcp/agents/codeact0/usecases/10-reddit2.yaml +0 -10
  30. universal_mcp/agents/codeact0/usecases/11-github.yaml +0 -14
  31. universal_mcp/agents/codeact0/usecases/2-reddit.yaml +0 -27
  32. universal_mcp/agents/codeact0/usecases/2.1-instructions.md +0 -81
  33. universal_mcp/agents/codeact0/usecases/2.2-instructions.md +0 -71
  34. universal_mcp/agents/codeact0/usecases/3-earnings.yaml +0 -4
  35. universal_mcp/agents/codeact0/usecases/4-maps.yaml +0 -41
  36. universal_mcp/agents/codeact0/usecases/5-gmailreply.yaml +0 -8
  37. universal_mcp/agents/codeact0/usecases/6-contract.yaml +0 -6
  38. universal_mcp/agents/codeact0/usecases/7-overnight.yaml +0 -14
  39. universal_mcp/agents/codeact0/usecases/8-sheets_chart.yaml +0 -25
  40. universal_mcp/agents/codeact0/usecases/9-learning.yaml +0 -9
  41. universal_mcp/agents/planner/__init__.py +0 -51
  42. universal_mcp/agents/planner/__main__.py +0 -28
  43. universal_mcp/agents/planner/graph.py +0 -85
  44. universal_mcp/agents/planner/prompts.py +0 -14
  45. universal_mcp/agents/planner/state.py +0 -11
  46. universal_mcp_agents-0.1.14.dist-info/RECORD +0 -66
  47. {universal_mcp_agents-0.1.14.dist-info → universal_mcp_agents-0.1.16.dist-info}/WHEEL +0 -0
@@ -1,41 +0,0 @@
1
- base_prompt: 'Objective: Find businesses from Google Maps for a given category & location,
2
- store them in a Google Sheet, then process unprocessed leads to scrape emails and
3
- sync with HubSpot CRM. Stage 1 - Lead Discovery Get coordinates of Area + City.
4
- Search on Google Maps with category & coordinates.
5
- Extract: Name, Google Maps URL, Address, Phone, Website; leave Email & CRM Status
6
- blank. Sheet: Name: {Area}, {City} Leads - {Category} - {dd-mmm} If exists → append
7
- non-duplicate rows; else create in folder "Leads from Google Maps" (ID: 142QBejJX0jAqzDz_NHdwVTkcmagoog__).
8
- Add headers: Name | Google Maps URL | Address | Phone | Website | Email | CRM Status.
9
- Populate with businesses found. Edge Cases: No results → return message, skip sheet
10
- creation. Missing data → leave blank. Stage 2 - Lead Processing & CRM Sync Locate
11
- sheet in Google Drive, ensure headers match. Parse category from sheet name. Identify
12
- unprocessed rows (CRM Status blank) — by default process the first, or a specified
13
- row/range/count. Scrape Website for Email: If website exists → scrape homepage/contact
14
- page; fallback to firecrawl_scrape_url. Save found email in sheet. HubSpot Handling:
15
- Search contact by email/website/phone. If not found → create with available details,
16
- Lead Status = New, add note {Area, City} — {Category} — {Google Maps URL}. If exists
17
- → append note; keep other fields unchanged. Save HubSpot Contact URL/ID in sheet.
18
- Update CRM Status: Lead Created, Lead Creation Failed, Website not found, Email
19
- not found, etc. Edge Cases: No Website → create with phone; mark Website not found.
20
- No Email → create; mark Email not found. Email already in sheet → skip row. Execute immediately for "Cafes" near "IIT Bombay" in "Mumbai" without asking for confirmation.'
21
- tools:
22
- - serpapi__google_maps_search
23
- - firecrawl__scrape_url
24
- - google_drive__get_file_details
25
- - google_drive__create_folder
26
- - google_drive__find_folder_id_by_name
27
- - google_drive__search_files
28
- - google_sheet__update_values
29
- - google_sheet__get_values
30
- - google_sheet__get_spreadsheet_metadata
31
- - google_sheet__batch_get_values_by_range
32
- - google_sheet__create_spreadsheet
33
- - google_sheet__clear_values
34
- - hubspot__search_contacts_post
35
- - hubspot__batch_read_contacts_post
36
- - hubspot__get_contacts
37
- - hubspot__get_contact_by_id
38
- - hubspot__update_contact_by_id
39
- - hubspot__batch_update_contacts
40
- - hubspot__create_contacts_batch
41
- - hubspot__create_contact
@@ -1,8 +0,0 @@
1
- base_prompt: 'Process emails from the last 24 hours. Fetch primary
2
- inbox emails excluding replied threads, classify with LLM as Reply Required, No
3
- Reply Needed, or Ambiguous. For Reply Required/Ambiguous, draft human, on-brand replies for user review.
4
- Follow greeting, acknowledge, address concern, invite further questions, and friendly
5
- sign-off. Provide end summary of drafts, skipped, and ambiguous emails. Execute immediately without asking for confirmation. Do not send any emails. Just provide me a report.'
6
- tools:
7
- - google_mail__list_messages
8
- - google_mail__get_message_details
@@ -1,6 +0,0 @@
1
- base_prompt: 'Analyze a contract from my google drive from the perspective of the Service Provider. Use the search to find it, do not ask me any questions, and assume details that I have not provided. Identify potentially unfavorable clauses such as vague terms, one-sided obligations, IP transfer issues, indemnity clauses, termination conditions, and payment problems. Provide a structured analysis with clause numbers, full text, and explanations of concerns.'
2
- tools:
3
- - google_drive__get_file_details
4
- - google_drive__search_files
5
- - google_docs__get_document
6
- - exa__answer
@@ -1,14 +0,0 @@
1
- base_prompt: 'Create a summary of overnight updates from 8:00 PM yesterday to 8:00 AM today in IST. Check Gmail for important emails and ClickUp for mentions and assigned tasks. Organize findings into high priority and other items, then provide a comprehensive summary of all overnight activity.'
2
- tools:
3
- - google_mail__list_messages
4
- - clickup__comments_get_task_comments
5
- - clickup__comments_get_list_comments
6
- - clickup__comments_get_view_comments
7
- - clickup__tasks_get_list_tasks
8
- - clickup__tasks_filter_team_tasks
9
- - clickup__time_tracking_get_time_entries_within_date_range
10
- - clickup__time_tracking_get_time_entry_history
11
- - clickup__authorization_get_workspace_list
12
- - clickup__spaces_get_details
13
- - clickup__lists_get_list_details
14
-
@@ -1,25 +0,0 @@
1
- base_prompt: 'Analyze the data in Google Sheet (ID: 1nnnCp3_IWcdHv4UVgXtwYF5wedxbqF4RIeyjN6mCKD8) and create 3-5 relevant charts and visualizations. Add pie charts, bar graphs, and other appropriate visualizations based on the data structure. Embed all charts directly into the sheet and provide the updated sheet link.'
2
- tools:
3
- - google_sheet__create_spreadsheet
4
- - google_sheet__get_spreadsheet_metadata
5
- - google_sheet__batch_get_values_by_range
6
- - google_sheet__append_dimensions
7
- - google_sheet__insert_dimensions
8
- - google_sheet__delete_sheet
9
- - google_sheet__add_sheet
10
- - google_sheet__delete_dimensions
11
- - google_sheet__add_basic_chart
12
- - google_sheet__add_table
13
- - google_sheet__add_pie_chart
14
- - google_sheet__clear_values
15
- - google_sheet__update_values
16
- - google_sheet__clear_basic_filter
17
- - google_sheet__get_values
18
- - google_sheet__discover_tables
19
- - google_sheet__set_basic_filter
20
- - google_sheet__analyze_table_schema
21
- - google_sheet__copy_sheet_to_spreadsheet
22
- - google_sheet__append_values
23
- - google_sheet__batch_get_values_by_data_filter
24
- - google_sheet__batch_clear_values
25
- - google_sheet__format_cells
@@ -1,9 +0,0 @@
1
- base_prompt: 'Create a 7-day learning plan for Python Programming. Research essential concepts and skills, create a detailed day-by-day plan with topics, goals, resources, and exercises. Compile the plan into a Google Doc and schedule daily emails at 8 AM starting today. Send Day 1 immediately to adit@agentr.dev and provide the Google Doc link.'
2
- tools:
3
- - google_docs__get_document
4
- - google_docs__create_document
5
- - google_docs__insert_text
6
- - google_mail__send_email
7
- - google_mail__send_draft
8
- - google_mail__create_draft
9
- - exa__answer
@@ -1,51 +0,0 @@
1
- from langgraph.checkpoint.base import BaseCheckpointSaver
2
- from universal_mcp.tools.registry import ToolRegistry
3
-
4
- from universal_mcp.agents.base import BaseAgent
5
- from universal_mcp.agents.llm import load_chat_model
6
- from universal_mcp.agents.react import ReactAgent
7
-
8
- from .graph import build_graph
9
- from .prompts import DEVELOPER_PROMPT
10
-
11
-
12
- class PlannerAgent(BaseAgent):
13
- def __init__(
14
- self,
15
- name: str,
16
- instructions: str,
17
- model: str,
18
- registry: ToolRegistry,
19
- memory: BaseCheckpointSaver | None = None,
20
- executor_agent_cls: type[BaseAgent] = ReactAgent,
21
- **kwargs,
22
- ):
23
- super().__init__(
24
- name=name,
25
- instructions=instructions,
26
- model=model,
27
- memory=memory,
28
- **kwargs,
29
- )
30
- self.app_registry = registry
31
- self.llm = load_chat_model(model)
32
- self.executor_agent_cls = executor_agent_cls
33
-
34
- def _build_system_message(self):
35
- return DEVELOPER_PROMPT.format(name=self.name, instructions=self.instructions)
36
-
37
- async def _build_graph(self):
38
- return build_graph(
39
- self.llm,
40
- self.app_registry,
41
- self._build_system_message(),
42
- self.model,
43
- self.executor_agent_cls,
44
- ).compile(checkpointer=self.memory)
45
-
46
- @property
47
- def graph(self):
48
- return self._graph
49
-
50
-
51
- __all__ = ["PlannerAgent"]
@@ -1,28 +0,0 @@
1
- import asyncio
2
-
3
- from universal_mcp.agentr.registry import AgentrRegistry
4
-
5
- from universal_mcp.agents.planner import PlannerAgent
6
- from universal_mcp.agents.utils import messages_to_list
7
-
8
-
9
- async def main():
10
- registry = AgentrRegistry()
11
- agent = PlannerAgent(
12
- name="planner-agent",
13
- instructions="You are a helpful assistant.",
14
- model="azure/gpt-4o",
15
- registry=registry,
16
- )
17
- from rich import print
18
-
19
- print("Starting agent...")
20
- result = await agent.invoke(
21
- user_input="Send an email to manoj@agentr.dev with the subject 'testing planner' and body 'This is a test of the planner agent.'",
22
- thread_id="xyz",
23
- )
24
- print(messages_to_list(result["messages"]))
25
-
26
-
27
- if __name__ == "__main__":
28
- asyncio.run(main())
@@ -1,85 +0,0 @@
1
- from typing import Any
2
-
3
- from langchain_core.messages import AIMessage, SystemMessage
4
- from langgraph.graph import END, START, StateGraph
5
- from loguru import logger
6
-
7
- from universal_mcp.agents.shared.tool_node import build_tool_node_graph
8
-
9
- from .state import State
10
-
11
-
12
- def build_graph(llm, registry, instructions, model, executor_agent_cls):
13
- """Build the graph for the planner agent."""
14
- graph_builder = StateGraph(State)
15
-
16
- async def _tool_finder_node(state: State) -> dict[str, Any]:
17
- """Runs the tool finder subgraph to identify necessary tools."""
18
- task = state["messages"][-1].content
19
- logger.info(f"Running tool finder for task: {task}")
20
- tool_finder_graph = build_tool_node_graph(llm, registry)
21
- tool_finder_state = await tool_finder_graph.ainvoke({"original_task": task, "messages": state["messages"]})
22
-
23
- if not tool_finder_state.get("apps_required"):
24
- logger.info("Tool finder determined no apps are required.")
25
- return {"apps_with_tools": {}}
26
-
27
- apps_with_tools = tool_finder_state.get("apps_with_tools", {})
28
- logger.info(f"Tool finder identified apps and tools: {apps_with_tools}")
29
- return {"apps_with_tools": apps_with_tools, "task": task}
30
-
31
- def _should_continue(state: State) -> str:
32
- """Determines whether to continue to the executor or end."""
33
- if state.get("apps_with_tools"):
34
- return "continue"
35
- return "end"
36
-
37
- async def _executor_node(state: State) -> dict[str, Any]:
38
- """Executes the task with the identified tools."""
39
- tool_config = state["apps_with_tools"]
40
-
41
- logger.info(f"Preparing executor with tools: {tool_config}")
42
- agent = executor_agent_cls(
43
- name="executor-agent",
44
- instructions=instructions,
45
- model=model,
46
- registry=registry,
47
- tools=tool_config,
48
- )
49
-
50
- await agent.ainit()
51
- react_graph = agent._graph
52
- logger.info("Invoking executor agent with tools.")
53
- # We invoke the agent to make it run the tool
54
- response = await react_graph.ainvoke({"messages": state["messages"]})
55
-
56
- final_message = AIMessage(content=response["messages"][-1].content)
57
- return {"messages": [final_message]}
58
-
59
- async def _no_tools_node(state: State) -> dict[str, Any]:
60
- """Handles tasks that don't require tools by invoking the LLM directly."""
61
- logger.info("No tools required. Invoking LLM directly.")
62
- messages = [
63
- SystemMessage(content=instructions),
64
- *state["messages"],
65
- ]
66
- response = await llm.ainvoke(messages)
67
- return {"messages": [response]}
68
-
69
- graph_builder.add_node("tool_finder", _tool_finder_node)
70
- graph_builder.add_node("executor", _executor_node)
71
- graph_builder.add_node("no_tools_executor", _no_tools_node)
72
-
73
- graph_builder.add_edge(START, "tool_finder")
74
- graph_builder.add_conditional_edges(
75
- "tool_finder",
76
- _should_continue,
77
- {
78
- "continue": "executor",
79
- "end": "no_tools_executor",
80
- },
81
- )
82
- graph_builder.add_edge("executor", END)
83
- graph_builder.add_edge("no_tools_executor", END)
84
-
85
- return graph_builder
@@ -1,14 +0,0 @@
1
- # prompts.py
2
-
3
- DEVELOPER_PROMPT = """
4
- You are a planner agent that orchestrates tasks by selecting the right tools.
5
-
6
- Your primary goal is to analyze a user's request and determine the most effective sequence of tools to accomplish it. You have access to a registry of applications and their corresponding tools.
7
-
8
- Here's your process:
9
- 1. **Assess the Task**: Understand the user's intent and what they want to achieve.
10
- 2. **Identify Necessary Tools**: Based on the task, identify which applications and tools are required.
11
- 3. **Orchestrate Execution**: Pass the selected tools and instructions to an executor agent to perform the task.
12
-
13
- {instructions}
14
- """
@@ -1,11 +0,0 @@
1
- from typing import Annotated
2
-
3
- from langgraph.graph.message import add_messages
4
- from typing_extensions import TypedDict
5
- from universal_mcp.types import ToolConfig
6
-
7
-
8
- class State(TypedDict):
9
- messages: Annotated[list, add_messages]
10
- task: str
11
- apps_with_tools: ToolConfig
@@ -1,66 +0,0 @@
1
- universal_mcp/agents/__init__.py,sha256=kM4mC6Pf6lmaaZF1volo7VtKgA8FDyzb1sNenpB7Ulk,1244
2
- universal_mcp/agents/base.py,sha256=xQ_zMHTvULaiE4LiE7IfhrLmlBtvJ5zVE9Rq2nJ4Hm4,6976
3
- universal_mcp/agents/cli.py,sha256=AG9e4iSX3GazT537573YrYT1wSaZYOr42rrYQ7xP3YA,1016
4
- universal_mcp/agents/hil.py,sha256=_5PCK6q0goGm8qylJq44aSp2MadP-yCPvhOJYKqWLMo,3808
5
- universal_mcp/agents/llm.py,sha256=hVRwjZs3MHl5_3BWedmurs2Jt1oZDfFX0Zj9F8KH7fk,1787
6
- universal_mcp/agents/react.py,sha256=8XQvJ0HLVgc-K0qn9Ml48WGcgUGuIKtL67HatlT6Da0,3334
7
- universal_mcp/agents/simple.py,sha256=NSATg5TWzsRNS7V3LFiDG28WSOCIwCdcC1g7NRwg2nM,2095
8
- universal_mcp/agents/utils.py,sha256=pZFAqH__csH-gRLlTOnuU8kNix3_t5eC3yIk926FWpQ,6898
9
- universal_mcp/agents/bigtool/__init__.py,sha256=mZG8dsaCVyKlm82otxtiTA225GIFLUCUUYPEIPF24uw,2299
10
- universal_mcp/agents/bigtool/__main__.py,sha256=a15OUoqPR938x7eseWtxu0aLX7lRS3nu8k5Ks3giUY4,472
11
- universal_mcp/agents/bigtool/agent.py,sha256=FsWa7S00RHmzrLd2ms_aR4wJ09h_KFJ8DDzFnADKJOQ,251
12
- universal_mcp/agents/bigtool/context.py,sha256=ny7gd-vvVpUOYAeQbAEUT0A6Vm6Nn2qGywxTzPBzYFg,929
13
- universal_mcp/agents/bigtool/graph.py,sha256=SE1IavwrSciIWsb_miekEh3H46UJWpeIOkcp7CsRG_w,5764
14
- universal_mcp/agents/bigtool/prompts.py,sha256=Joi5mCzZX63aM_6eBrMOKuNRHjTkceVIibSsGBGqhYE,2041
15
- universal_mcp/agents/bigtool/state.py,sha256=TQeGZD99okclkoCh5oz-VYIlEsC9yLQyDpnBnm7QCN8,759
16
- universal_mcp/agents/bigtool/tools.py,sha256=vlydQQnITS7OPaSzyILf3czrgO3_fEB-i7zItKcEWjU,6377
17
- universal_mcp/agents/builder/__main__.py,sha256=mGw5xHK53qNGgs6q7s2PPPPWozWPDKXD2AZGQTqCDQc,10750
18
- universal_mcp/agents/builder/builder.py,sha256=uhUOH6S7F2iWDhpNOpfzVUT1VB0MQnmcEkLPYJs65gY,8151
19
- universal_mcp/agents/builder/helper.py,sha256=G6IoXB433zAwfOGhDXOIGsf_EC9bbOSGN8WPWGSzmrk,2700
20
- universal_mcp/agents/builder/prompts.py,sha256=k0IfhWZ10zou3I2e3kczxf2zpY2AsPshjeY_h5oQ1KA,2673
21
- universal_mcp/agents/builder/state.py,sha256=nJrH-ChSpqv-fsXhvP4UkouVdQw0ji376uFM0aJ91D0,921
22
- universal_mcp/agents/codeact/__init__.py,sha256=rLE8gvOo5H4YSr71DRq76b3RV3uuotxuAy_VnBVaVwk,60
23
- universal_mcp/agents/codeact/__main__.py,sha256=W2cHXRwH1dZG3ETIkMwUqA_d62K3IctHP-FDZWDjxdw,1067
24
- universal_mcp/agents/codeact/agent.py,sha256=sKZWokTHcuL68Y6SNyaaHe6_XkWxaIq36TrNmPJfQto,9762
25
- universal_mcp/agents/codeact/models.py,sha256=2fdAcF5bxWDpljjEwDEdPBflTMShSPwwncHrphRjsYg,222
26
- universal_mcp/agents/codeact/prompts.py,sha256=EMI-imnd0Ps0Bd2FOvSqgiicvvtFFu0MF9s93PiC_3k,4493
27
- universal_mcp/agents/codeact/sandbox.py,sha256=NjN6ISj8psFtHf8V0w24ChJdUMUWkq7OrlbHdzm4wBc,2299
28
- universal_mcp/agents/codeact/state.py,sha256=WTPfpxDlGRnlr5tZuXMg_KU7GS7TZbnrIKslOvZLbQI,565
29
- universal_mcp/agents/codeact/utils.py,sha256=JUbT_HYGS_D1BzmzoVpORIe7SGur1KgJguTZ_1tZ4JY,1918
30
- universal_mcp/agents/codeact0/__init__.py,sha256=rLE8gvOo5H4YSr71DRq76b3RV3uuotxuAy_VnBVaVwk,60
31
- universal_mcp/agents/codeact0/__main__.py,sha256=V2wLWW9ym3rtiSvPEs-N0Mki7G5dYHzV5dAsAoF-ygQ,1148
32
- universal_mcp/agents/codeact0/agent.py,sha256=WmCHhhGN1q2Q1s14FN2kaNBEIVlYRoMpWJOqQEYjaBo,6538
33
- universal_mcp/agents/codeact0/config.py,sha256=H-1woj_nhSDwf15F63WYn723y4qlRefXzGxuH81uYF0,2215
34
- universal_mcp/agents/codeact0/langgraph_agent.py,sha256=8-Y3-OOEpY_XLcnjvFX-KyAQA5SzBjya3YBrrV9Qh_8,652
35
- universal_mcp/agents/codeact0/llm_tool.py,sha256=9xgRylNZo3lya33L3iqS7yipJYaHCeUEEBCfjUp71vc,13821
36
- universal_mcp/agents/codeact0/prompts.py,sha256=VT3v61JkAvZwjQoxwKR3QsYdkbyd_1E8bIm3oABNfMg,7512
37
- universal_mcp/agents/codeact0/sandbox.py,sha256=tkrhQoV7sAIT5rtd5kpNYEgDz4y82WSHKpMGE6bqthE,3108
38
- universal_mcp/agents/codeact0/state.py,sha256=kcoCoz-kd0Ukw1YNGDHNggixCK34KzMl2t6GztakSo4,412
39
- universal_mcp/agents/codeact0/utils.py,sha256=6yeUVsB2CkcrutHjfpMI3KsMJkVpFj3Piag6A2IG0Jc,14733
40
- universal_mcp/agents/codeact0/usecases/1-unsubscribe.yaml,sha256=DiChHW-mNOcaaiec7f_04_A0Xyf9a2ihzXiPA9-Fw1I,239
41
- universal_mcp/agents/codeact0/usecases/10-reddit2.yaml,sha256=R3vrZZNv_E-m_SuSJ5tSv11HqMomm8Gtxp_LDhkrnAw,618
42
- universal_mcp/agents/codeact0/usecases/11-github.yaml,sha256=iu4-vlvopPct9vfAseElLXPUAWN5sMVri4oMbDYlA4s,672
43
- universal_mcp/agents/codeact0/usecases/2-reddit.yaml,sha256=-dstvFMjsuP9UQM3B_G1HBn7ImNIMxSCNbITpfwgwAY,2525
44
- universal_mcp/agents/codeact0/usecases/2.1-instructions.md,sha256=0gQBY_A3jT_lgKNiu6GdyEYupbX0Xz2unlCoTQwv-Es,5098
45
- universal_mcp/agents/codeact0/usecases/2.2-instructions.md,sha256=Cx-VkcC55MrgFxlMBMBCD83jEge_yZgBWKwtuK1OPFc,4458
46
- universal_mcp/agents/codeact0/usecases/3-earnings.yaml,sha256=c1ipGMmqafz8zTzGNYyn_4VldC-PB5FY87l8HS9QkOM,344
47
- universal_mcp/agents/codeact0/usecases/4-maps.yaml,sha256=2KwGE1sFGtP8vEjKZ5Yjlro2j5LzafWbVlFy0E3a1CA,2462
48
- universal_mcp/agents/codeact0/usecases/5-gmailreply.yaml,sha256=2ExMgk3z453phZocmCw0bmnJXugy79YNaoAfZV5CfMU,593
49
- universal_mcp/agents/codeact0/usecases/6-contract.yaml,sha256=yVvoz1-pmJVsJSkCtTCuO57Ln5y1Kj7ErkjPyRweJb0,574
50
- universal_mcp/agents/codeact0/usecases/7-overnight.yaml,sha256=Vod5md6wxmhY4MFkc1soMOpNNDXquVufo48QkM2orz0,731
51
- universal_mcp/agents/codeact0/usecases/8-sheets_chart.yaml,sha256=aZpdyDMnrHjmV9wMqgV3VXsYGvNPFD58px6ZPjva5PM,1097
52
- universal_mcp/agents/codeact0/usecases/9-learning.yaml,sha256=MXAgTU1p0Ek1md8dvb5Srb1W6QU4xPUgb6KgNfoza10,535
53
- universal_mcp/agents/planner/__init__.py,sha256=7nGDDtmPk2LN4s5poIFkflm5ZoyRuQSQ73Qw_4GOov4,1415
54
- universal_mcp/agents/planner/__main__.py,sha256=OfhTfYDZK_ZUfc8sX-Sa6TWk-dNqD2rl13Ln64mNAtw,771
55
- universal_mcp/agents/planner/graph.py,sha256=70hhIoEZOcYojpiyVSCedgYpnmxVP7aqdn8s6VBu-D4,3228
56
- universal_mcp/agents/planner/prompts.py,sha256=_JoHqiAvswtqCDu90AGUHmfsu8eWE1-_yI4LLn3pqMU,657
57
- universal_mcp/agents/planner/state.py,sha256=qqyp-jSGsCxe1US-PRLT4-y1sITAcVE6nCMlQLnvop0,278
58
- universal_mcp/agents/shared/__main__.py,sha256=u6ezelmT7poaMRr5AfKp3uXGOV7zEwj017j_iAeUcZs,1450
59
- universal_mcp/agents/shared/prompts.py,sha256=-gNyfhrJFtPEG4YeoJRYKmkmRHsI8a5f5ssxk_AWrOI,3760
60
- universal_mcp/agents/shared/tool_node.py,sha256=syydbbKFMpu9Gg45yGP-kpN5KvD2oSRXWtqo1YpD6gY,9038
61
- universal_mcp/applications/llm/__init__.py,sha256=xnpxq4Wl_pevvwtSUtEwcty8_d61ywO1V2YnEXyCREY,46
62
- universal_mcp/applications/llm/app.py,sha256=iNLU6z2LRZc01GfSKvV0vNzT1LhKAjq_UrSJEmjthjw,6032
63
- universal_mcp/applications/ui/app.py,sha256=c7OkZsO2fRtndgAzAQbKu-1xXRuRp9Kjgml57YD2NR4,9459
64
- universal_mcp_agents-0.1.14.dist-info/METADATA,sha256=6a7VjzkIfQdp6b4UfQVAMKFzg2qE8wszgkocVRgqNok,878
65
- universal_mcp_agents-0.1.14.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
66
- universal_mcp_agents-0.1.14.dist-info/RECORD,,