Dev & Engineering function-callingbashjavascriptpythonmodel-context-protocolaichatargc

LLM Functions

Build AIChat-callable LLM tools and agents from Bash, JavaScript, and Python functions.

FollowAgents review · FARS-2.0
Not yet reviewed
See the full review method →

What does this agent do, and when should you use it?

LLM Functions wraps ordinary Bash, JavaScript, and Python functions as LLM tools. It uses argc to generate JSON tool declarations from code comments and to build bin and functions.json. Agents are organized as prompt, tools, and documents, with definitions stored in agents/<agent>/index.yaml. AIChat is the only CLI explicitly documented as supporting the project; repositories are linked into its functions_dir or supplied through AICHAT_FUNCTIONS_DIR. The repository also includes an MCP server for exposing its tools and agents through Model Context Protocol, plus an MCP bridge for using external MCP tools.

Developers place .sh, .js, or .py functions in tools/. Bash tools can declare their interface with # @describe and # @option comments, while the JavaScript and Python examples provide descriptions through function comments and signatures. After listing tool filenames in tools.txt and agent names in agents.txt, argc build generates bin and functions.json, and argc check verifies environment variables, Node/Python dependencies, and the mcp-bridge server. An agent under agents/<agent>/ can use index.yaml to define name, description, instructions, conversation_starters, variables, and documents, alongside shared or agent-specific tools. Once linked, AIChat invokes tools with aichat --role %functions% or invokes an agent with aichat --agent <agent>.

  1. A shell-oriented developer wants to expose a command-running script as a function-calling tool from an AIChat conversation.
  2. A Node.js developer wants to expose an exports.run function that executes JavaScript logic.
  3. A Python developer wants to turn a typed run function with a docstring into a tool declaration.
  4. A team needs a focused agent with instructions, variables, documents, and a defined set of shared tools.
  5. An existing AIChat user wants to link a local functions repository into functions_dir and call it through --role or --agent.
  6. A developer evaluating MCP interoperability needs both an MCP-facing server and a bridge for external MCP tools.

What are this agent's strengths and limitations?

Pros
  • Reuses familiar Bash, JavaScript, and Python functions instead of requiring a separate tool-definition language.
  • argc build automatically produces functions.json declarations from code comments.
  • The agent directory keeps prompts, tool lists, and documents together in a defined structure.
  • Includes both an MCP server for publishing tools/agents and an MCP bridge for consuming external MCP tools.
Limitations
  • The documentation states that AIChat is currently the only CLI supporting LLM Functions, creating a narrow adoption boundary.
  • It requires argc and jq; argc check also validates Node/Python dependencies and the mcp-bridge server.
  • The supplied material does not document authentication, secret management, or failure handling for tools that call external APIs.
  • Examples include tools that execute shell, JavaScript, and Python code, so deployments must assess the permissions granted to connected tools.

How do you install or deploy this agent?

Install the documented prerequisites argc and jq; AIChat is also required to invoke the functions. Clone and enter the repository:
git clone https://github.com/sigoden/llm-functions
cd llm-functions
Create tools.txt with one tool filename per line and agents.txt with one agent name per line. Then run:
argc build
argc check
Link the current directory to AIChat's functions_dir:
ln -s "$(pwd)" "$(aichat --info | sed -n 's/^functions_dir\s\+//p')"
Alternatively, run argc link-to-aichat or set:
export AICHAT_FUNCTIONS_DIR="$(pwd)"
No account credentials or API keys are documented at the project level. Credential setup for individual tools that call external APIs is not described in the supplied material.

How do you use this agent?

List tools such as get_current_weather.sh and execute_command.sh in tools.txt, and agents such as coder and todo in agents.txt; then run argc build and argc check. After the repository is linked to AIChat, run:
aichat --role %functions% what is the weather in Paris?
Or run:
aichat --agent todo list all my todos
A custom Bash tool initializes argc with eval "$(argc --argc-eval \"$0\" \"$@\")" and writes output to $LLM_OUTPUT. JavaScript tools export exports.run, and Python tools define run.

How does this agent compare with similar options?

AIChat is the only CLI explicitly documented as supporting LLM Functions; the supplied material provides no feature comparison with other CLIs or agent frameworks.

FAQ

Can it be used as a general CLI without AIChat?
The supplied material identifies AIChat as the supported calling entry point and does not document direct support from another CLI.
Are API keys required?
No project-level credentials are listed. Individual tools may interact with APIs, but their authentication setup is not described.
How do tools become available for calling?
Put their filenames in tools.txt, then run argc build to generate bin and functions.json.
What can an agent definition contain?
index.yaml can define a name, description, version, instructions, conversation starters, variables, and documents, together with shared and agent-specific tools.

Related agents