---
key: find-what-to-call
title: Find the operation to call
audience: developer
section: api/getting-started
routes: []
since: 0.0.1
updated: 0.0.1
status: published
summary: Use the operation index to find any of Nova's roughly 3,200 callable operations and the exact permission each one needs, not just the documented starter set.
keywords: [operation index, operations.json, discover, what can my key do, endpoints, permission keys, all operations]
related: [api-reference, api-scopes-reference, api-errors, nova-mcp-tools]
---

The [[api-reference]] documents about 80 common operations in full, with
schemas and examples. It is a starting point, not the limit. A credential can
call **any** operation it holds the permissions for, which is roughly 3,200
of them. The operation index lists every one.

```bash
curl -s https://app.novabmp.com/v1/public/api-docs/operations.json -o operations.json
```

## What is in it

```json
{
  "operation_count": 3267,
  "documented_count": 78,
  "areas": [{"id": "crm", "operation_count": 115}, "…"],
  "operations": [
    {"operation_id": "post_agreements_by_agreement_void",
     "method": "POST",
     "path": "/v1/agreements/{agreement_uid}/void",
     "area": "agreements",
     "summary": "Void an agreement",
     "permissions": ["agreements.void"],
     "path_params": ["agreement_uid"],
     "read_only": false,
     "destructive": false,
     "documented": false}
  ]
}
```

| Field | Meaning |
|---|---|
| `permissions` | Every key the operation checks; the credential must hold all of them |
| `permissions_any` | Present when holding one of a group is enough |
| `path_params` | Placeholders to fill with uids |
| `read_only` / `destructive` | A `GET`, or an operation that removes something |
| `documented` | `true` when the reference has its full schema and examples |

It carries no request or response schemas; for those, the documented
operations are in the reference, and every other operation takes the same
fields the app's own screen sends.

## Finding things

What can my key do with invoices?

```bash
jq '.operations[] | select(.path | contains("invoices")) | {operation_id, method, path, permissions}' operations.json
```

A call was refused for `billing.invoices.void`. What else does that key
unlock?

```bash
jq '.operations[] | select(.permissions | index("billing.invoices.void"))' operations.json
```

## What is not in it

Signing in, the OAuth endpoints, platform administration and the routes that
manage keys, agents and connected apps. Software is refused on those
whatever it holds.

## For AI assistants

An assistant cannot hold 3,200 tools, so over MCP it uses
`find_operations` to search this index and `call_nova_operation` to call
what it finds. See [[nova-mcp-tools]].

The index is generated from the routes on every release, so an operation
added later appears without anyone writing it down.
