> For the complete documentation index, see [llms.txt](https://adamite.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://adamite.gitbook.io/docs/server/functions.md).

# Functions

By default, your Adamite instance will be configured with a basic functions package found in the `functions` folder. This folder is a self-contained NPM package with its own dependencies. The entry point to all of your functions (known as a function root) is a file called `functions/src/index.js`.

```javascript
const { InvokableFunction } = require("@adamite/service-functions");

module.exports = {
  helloWorld: new InvokableFunction(() => {
    console.log("Hello World");
  })
};
```

In this file, you can see a basic invokable function declared, called `helloWorld`. Calling this function using the SDK would result in `"Hello World"` being logged to the server's console.

## Function Types

There are three types of functions you can export within your function root.

| Function Type       | Description                                                                                                                                              |
| ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `InvokableFunction` | A function which can be called or "invoked" from the client at will.                                                                                     |
| `RuntimeFunction`   | A function which is executed when the server starts. This is useful for starting additional servers, establishing connections to external services, etc. |
| `ScheduledFunction` | A function which is executed on a schedule using [cron syntax](https://crontab.guru/).                                                                   |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://adamite.gitbook.io/docs/server/functions.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
