Beyond the standard wrapper around the ACI.dev APIs,, the SDK provides a suite of features and helper functions to make it easier and more seamless to use functions in LLM powered agentic applications. This is our vision and the recommended way of trying out the SDK in agentic applications.

One key feature is the set of meta function schemas we provide. Essentially, they are just the json schema version of some of the backend APIs of ACI.dev. They are provided so that your LLM/Agent can utlize some of the features of ACI.dev directly via function (tool) calling .

from aci.meta_functions import ACISearchFunctions, ACIExecuteFunction

These meta functions differ from the direct function (tool) calls you might typically execute—such as GITHUB__LIST_STARGAZERS — in that they are specifically tailored for use by large language models (LLMs) to interact with ACI.dev backend APIs.

Technically, you can also write your own meta functions around the ACI.dev backend APIs. After getting the input arguments generated by the LLM for the meta functions, you can use the SDK to send the request to the backend APIs with the input arguments.

ACI_SEARCH_FUNCTIONS

  • It’s the json schema version of the /v1/functions endpoint and aci.functions.search function in SDK.
  • It’s used to search for available functions (e.g. GITHUB__STAR_REPOSITORY, GMAIL__SEND_EMAIL, BRAVE_SEARCH__WEB_SEARCH) in ACI.dev.

ACI_EXECUTE_FUNCTION

  • It’s the json schema version of the /v1/functions/{function_name}/execute endpoint and aci.functions.execute function in SDK.
  • It’s used to execute a function (e.g. GITHUB__STAR_REPOSITORY, GMAIL__SEND_EMAIL, BRAVE_SEARCH__WEB_SEARCH) in ACI.dev.

Schemas

from aci.meta_functions import ACISearchFunctions
from aci.enums import FunctionDefinitionFormat

# OpenAI (The Chat Completion API)
print(ACISearchFunctions.to_json_schema(format=FunctionDefinitionFormat.OPENAI))

"""
{
  "type": "function",
  "function": {
    "name": "ACI_SEARCH_FUNCTIONS",
    "description": "This function allows you to find relevant executable functions and their schemas that can help complete your tasks.",
    "parameters": {
      "type": "object",
      "properties": {
        "intent": {
          "type": "string",
          "description": "Use this to find relevant functions you might need. Returned results of this function will be sorted by relevance to the intent."
        },
        "limit": {
          "type": "integer",
          "default": 100,
          "description": "The maximum number of functions to return from the search per response.",
          "minimum": 1
        },
        "offset": {
          "type": "integer",
          "default": 0,
          "minimum": 0,
          "description": "Pagination offset."
        }
      },
      "required": [],
      "additionalProperties": false
    }
  }
}
"""

Together with our Unified Function Calling Handler, it offer a powerful, self-discovery mechanism for LLM-driven applications, enabling them to autonomously select, interpret, and execute functions based on the context of a given task or conversation.

# unified function calling handler
result = client.handle_function_call(
    tool_call.function.name,
    json.loads(tool_call.function.arguments),
    linked_account_owner_id="john_doe",
    allowed_apps_only=True,
    format=FunctionDefinitionFormat.OPENAI
)

For examples of how to use the meta functions, please refer to the SDK repository .