# Noda API and developer docs

The public API, the Markdown pages and the files agents read. Free, no key.

## What is public

Noda is a web app for renewable energy developers at [app.noda.energy](https://app.noda.energy). What you can read without an account is the content of this site, in three forms: a read-only JSON API, a Markdown version of every page, and the files that language models and search engines read ([llms.txt](https://noda.energy/llms.txt), [sitemap.xml](https://noda.energy/sitemap.xml)).

The app itself has no public API yet. Projects, maps, chats and reports belong to signed-in accounts. For partner or API access, write to [hello@noda.energy](mailto:hello@noda.energy).

## The content API

Base address `https://noda.energy/api/v1`. Requests are `GET` or `HEAD`, need no key and may come from any origin (`Access-Control-Allow-Origin: *`). Answers are JSON, `Content-Type: application/json; charset=utf-8`, and change only when the site does.

| Request | operationId | Returns |
| --- | --- | --- |
| `GET /api/v1` | `getApiIndex` | List the API's endpoints and files |
| `GET /api/v1/use-cases` | `listUseCases` | List Noda's use cases |
| `GET /api/v1/use-cases/{useCaseId}` | `getUseCase` | Get one use case |
| `GET /api/v1/guides` | `listGuides` | List the three guides |
| `GET /api/v1/guides/{guideId}` | `getGuide` | Get one guide |
| `GET /api/v1/faq` | `listFaq` | List the frequently asked questions |
| `GET /api/v1/pages` | `listPages` | List the site's pages |

The full description, with every schema and operation, is [openapi.json](https://noda.energy/openapi.json) (OpenAPI 3.1). Every operation has its own `operationId`, so it maps to one function an agent can call. [/.well-known/api-catalog](https://noda.energy/.well-known/api-catalog) points to it (RFC 9727).

## Example

One use case, trimmed to five fields:

```
 curl https://noda.energy/api/v1/use-cases/screen
```

```
 {
  "id": "screen",
  "title": "Screen a possible site",
  "summary": "Check the main grid, land and environmental questions before you pay for a detailed study.",
  "guide": {
    "id": "site-finding",
    "name": "Find a site",
    "url": "https://noda.energy/site-finding"
  },
  "askUrl": "https://app.noda.energy/home?ask=Screen%20my%20selected%20site%20in%20Romania%20for%20a%205%20MW%20solar%20project.%20Check%20grid%20access%2C%20land%20rights%20and%20use%2C%20terrain%2C%20access%20routes%20and%20environmental%20constraints%20at%20an%20early%20screening%20level.%20Explain%20which%20constraints%20could%20stop%20the%20project%2C%20which%20could%20change%20the%20design%2C%20and%20which%20need%20a%20specialist%20study.%20Compare%20a%20useful%20alternative%20where%20the%20evidence%20supports%20one.%20Give%20a%20go%2C%20hold%20or%20stop%20recommendation%20with%20reasons%2C%20missing%20evidence%20and%20the%20next%20practical%20checks.%20Do%20not%20treat%20a%20nearby%20grid%20line%20as%20proof%20of%20connection%20capacity.%0A%0AUse%20only%20project%20context%20and%20files%20that%20are%20actually%20available.%20Ask%20for%20critical%20missing%20inputs%20before%20drawing%20conclusions.%20Separate%20verified%20facts%2C%20assumptions%20and%20open%20questions.%20Reference%20sources%20and%20dates%20for%20material%20claims."
}
```

## Errors

An address under `/api` that does not exist answers `404`, and a method other than `GET` or `HEAD` answers `405`, both as JSON with a code, a message and a hint:

```
 {
  "error": {
    "status": 404,
    "code": "not_found",
    "message": "There is no endpoint at this address.",
    "hint": "The endpoints are listed at https://noda.energy/openapi.json.",
    "docs": "https://noda.energy/docs"
  }
}
```

## Open Noda with a question

An agent can hand a person a link that opens Noda with a first message already written:

```
 https://app.noda.energy/home?ask=<the message, URL-encoded>
```

A signed-in person gets a new project and the message is sent there. Anyone else signs up first, confirms the email, answers two short questions, and then the message is sent. Every use case in the API carries its own link as `askUrl`.

## Markdown versions

Every page has a Markdown version at the same address with `.md` added ([/index.md](https://noda.energy/index.md) for the home page, [/screening.md](https://noda.energy/screening.md) for /screening). It holds the page's text and links and leaves out the navigation, the styling and the scripts.

Every page also answers in Markdown when the request asks for it: send `Accept: text/markdown` to the page address. The answer is `Content-Type: text/markdown; charset=utf-8` with `Vary: Accept`, and an address that does not exist answers `404` in Markdown too.

## Noda for AI assistants (MCP)

Noda runs an MCP server, so Claude, ChatGPT, Cursor, VS Code and any MCP client can use it directly.

- **Public, no account:** `https://mcp.noda.energy/public`. It lists Noda's use cases, guides and FAQ, offers each use case as a prompt, reads every page in Markdown, and makes an "open in Noda" link with a question.
- **Signed in, Pro accounts:** `https://mcp.noda.energy/mcp`. The assistant signs in with OAuth (the company and the permissions are chosen on Noda's own page) and works with the projects, the map, sites and layers. Owners and admins can also make API keys for company bots in Settings, Integrations.

In Claude: Settings, Connectors, Add custom connector, and paste the address. In other clients, add it as a remote MCP server (Streamable HTTP). Both MCP versions in use are supported (2025-11-25 and 2026-07-28).

## Machine-readable files

- [/openapi.json](https://noda.energy/openapi.json): the API description (OpenAPI 3.1)
- [/.well-known/api-catalog](https://noda.energy/.well-known/api-catalog): where the API and its description are
- [/llms.txt](https://noda.energy/llms.txt) and [/llms-full.txt](https://noda.energy/llms-full.txt): the site for language models
- [/sitemap.xml](https://noda.energy/sitemap.xml) and [/robots.txt](https://noda.energy/robots.txt): every page may be read

## Contact

Questions about the API or the files, or a request for more: [hello@noda.energy](mailto:hello@noda.energy). More ways to reach us are on the [contact page](https://noda.energy/contact).

---

This is the Markdown version of https://noda.energy/docs (API and developer docs | Noda). Noda's public API for agents: read-only JSON of use cases, guides and FAQ, OpenAPI, an MCP server, Markdown of every page and llms.txt. Free, no key.

More: [all pages](https://noda.energy/llms.txt) · [API and developer docs](https://noda.energy/docs) · [contact](https://noda.energy/contact)
