API

Документація API

Усе для підключення сайту, мобільного застосунку та AI-помічників до Ladna.

OpenAPI JSON

Що може робити AI-помічник

Можливості, які AI-помічник може використовувати тільки в межах вашої студії та лише з вашого дозволу.

Одна онлайн-адреса студії

Використовує Streamable HTTP. Кожна студія має власну адресу та документи пошуку підключення.

OAuth із PKCE

Персональні підключення відкривають вхід у Ladna, реєструються автоматично й самі оновлюють доступ.

Інструменти лише для читання

Список інструментів дотримується поточних прав людини у студії та не може змінювати дані.

Швидкий старт для персонального підключення

Замініть your-studio на адресу своєї студії та використайте це онлайн-посилання. Застосунок сам знайде вхід Ladna, S256 PKCE, реєстрацію й оновлення доступу.

https://ladna.app/mcp/ladna-studio/your-studio

Каталог інструментів

18 зареєстрованих інструментів лише для читання, згрупованих за призначенням. Людина бачить тільки те, що дозволяють її поточні права у студії.

Огляд студії

describe-ladna-skills

Use when deciding which Ladna tool fits a studio request or when the user asks what Ladna can do. Returns a curated account-scoped capability description.

get-studio-profile

Returns studio profile, active locations, timezone, and opening hours for the connected studio.

Розклад і записи

get-class-counts-for-day

Returns studio class counts for a calendar day in the connected studio scope.

get-class-bookings-for-day

Returns scheduled classes for a calendar day with trainer, location, room, capacity, and booked customer names in the connected studio scope.

Клієнти й абонементи

search-customers

Searches customers by name or phone fragment in the connected studio and returns masked contact details for disambiguation.

investigate-customer-booking-ledger

Reconstructs a customer booking, class-pass, and outstanding-payment ledger in the connected studio scope, including all-time ordinary trial-pass eligibility and audited manual-override qualification as of a supplied timestamp. This tool is strictly read-only.

Фінанси

get-payment-overview

Returns a read-only, currency-grouped overview of customer payments, customer refunds, event payments, outstanding class-pass balances, and fiscal failures for a bounded period in the active finance epoch.

search-payments

Searches bounded customer payments, customer refunds, and event payments in the connected studio scope. Contacts are masked and gateway secrets are never returned.

get-financial-report

Returns the read-only studio financial report for the active finance epoch: payments, refunds, operational expenses, and owner cash movements. Owner deposits and withdrawals are excluded from operating result.

get-earnings-report

Returns recognized earnings for completed lessons and rentals in the active finance epoch, less operational expenses and accrued salary. Class-pass sales are cashflow and are not counted again as lesson earnings.

get-rental-report

Returns completed room rentals with location, room, customer, duration, accrued, paid, refunded, debt, and status in the active finance epoch.

get-cashbox-overview

Returns current cashbox balances from the latest actual reconciliation plus subsequent append-only cash ledger movements in the active finance epoch.

get-payroll-overview

Returns payroll cadence and immutable closed or voided payroll-run snapshots. Closing a run accrues salary but does not record an actual payout.

Події

get-events-overview

Returns bounded event lifecycle, inventory, ticket, check-in, revenue, and refund-obligation summaries in the connected studio scope without buyer contacts.

get-event-summary

Returns a read-only operational summary for one event ID in the connected studio scope, including ticket-type inventory and no buyer contacts.

Допомога й правила Ladna

search-owner-help

Searches Ladna owner help pages from the curated help config. Returns matching page slugs, titles, summaries, sections, and short fragments.

get-owner-help-page

Returns one Ladna owner help page by slug from the curated help config.

get-business-logic-reference

Returns curated Ladna business logic references by allow-listed key. Does not read arbitrary file paths.

post MCP

Calls Ladna studio MCP tools through JSON-RPC in the bearer token account scope.

/mcp/ladna-studio

post MCP

Calls read-only Ladna studio MCP tools as a signed-in studio staff member.

/mcp/ladna-studio/{accountSlug}

Службове підключення через окремий ключ

Автоматизації між серверами можуть і надалі використовувати окремий ключ студії. Ця адреса не використовує персональний вхід.

https://ladna.app/mcp/ladna-studio
Authorization: Bearer ladna_your_token

Типові сценарії

Огляд студії, розклад і записи на сьогодні, пошук клієнтів, фінансові звіти лише для читання, події та пошук у допомозі Ladna.

Доступ та обмеження

401 означає, що потрібно увійти або оновити доступ, 403 — поточна людина чи студія не має дозволу, а 429 — слід зачекати перед повторною спробою.

MCP записи на день

POST /mcp/ladna-studio

PHP
$response = (new \GuzzleHttp\Client())->request('POST', 'https://ladna.app/mcp/ladna-studio', [
    'headers' => [
        'Authorization' => 'Bearer ladna_your_token',
        'Accept' => 'application/json',
    ],
    'json' => json_decode('{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "get-class-bookings-for-day",
        "arguments": {
            "date": "2026-06-30"
        }
    }
}', true),
]);

$data = json_decode((string) $response->getBody(), true);
Python
import requests

response = requests.request(
    'POST',
    'https://ladna.app/mcp/ladna-studio',
    headers={
        'Authorization': 'Bearer ladna_your_token',
        'Accept': 'application/json',
    },
    json={
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "get-class-bookings-for-day",
        "arguments": {
            "date": "2026-06-30"
        }
    }
},
)
response.raise_for_status()
data = response.json()
JS
const response = await fetch('https://ladna.app/mcp/ladna-studio', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer ladna_your_token',
    'Accept': 'application/json',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "get-class-bookings-for-day",
        "arguments": {
            "date": "2026-06-30"
        }
    }
}),
});

const data = await response.json();

MCP пошук клієнта

POST /mcp/ladna-studio

PHP
$response = (new \GuzzleHttp\Client())->request('POST', 'https://ladna.app/mcp/ladna-studio', [
    'headers' => [
        'Authorization' => 'Bearer ladna_your_token',
        'Accept' => 'application/json',
    ],
    'json' => json_decode('{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "search-customers",
        "arguments": {
            "query": "Тетяна",
            "limit": 5
        }
    }
}', true),
]);

$data = json_decode((string) $response->getBody(), true);
Python
import requests

response = requests.request(
    'POST',
    'https://ladna.app/mcp/ladna-studio',
    headers={
        'Authorization': 'Bearer ladna_your_token',
        'Accept': 'application/json',
    },
    json={
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "search-customers",
        "arguments": {
            "query": "Тетяна",
            "limit": 5
        }
    }
},
)
response.raise_for_status()
data = response.json()
JS
const response = await fetch('https://ladna.app/mcp/ladna-studio', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer ladna_your_token',
    'Accept': 'application/json',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "search-customers",
        "arguments": {
            "query": "Тетяна",
            "limit": 5
        }
    }
}),
});

const data = await response.json();

MCP дослідити реєстр записів клієнта

POST /mcp/ladna-studio

PHP
$response = (new \GuzzleHttp\Client())->request('POST', 'https://ladna.app/mcp/ladna-studio', [
    'headers' => [
        'Authorization' => 'Bearer ladna_your_token',
        'Accept' => 'application/json',
    ],
    'json' => json_decode('{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "investigate-customer-booking-ledger",
        "arguments": {
            "customer_id": 63,
            "from_date": "2026-07-01",
            "to_date": "2026-07-31",
            "as_of": "2026-07-28T20:05:00+03:00",
            "source": "manual"
        }
    }
}', true),
]);

$data = json_decode((string) $response->getBody(), true);
Python
import requests

response = requests.request(
    'POST',
    'https://ladna.app/mcp/ladna-studio',
    headers={
        'Authorization': 'Bearer ladna_your_token',
        'Accept': 'application/json',
    },
    json={
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "investigate-customer-booking-ledger",
        "arguments": {
            "customer_id": 63,
            "from_date": "2026-07-01",
            "to_date": "2026-07-31",
            "as_of": "2026-07-28T20:05:00+03:00",
            "source": "manual"
        }
    }
},
)
response.raise_for_status()
data = response.json()
JS
const response = await fetch('https://ladna.app/mcp/ladna-studio', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer ladna_your_token',
    'Accept': 'application/json',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "investigate-customer-booking-ledger",
        "arguments": {
            "customer_id": 63,
            "from_date": "2026-07-01",
            "to_date": "2026-07-31",
            "as_of": "2026-07-28T20:05:00+03:00",
            "source": "manual"
        }
    }
}),
});

const data = await response.json();

MCP пошук у довідці власника

POST /mcp/ladna-studio

PHP
$response = (new \GuzzleHttp\Client())->request('POST', 'https://ladna.app/mcp/ladna-studio', [
    'headers' => [
        'Authorization' => 'Bearer ladna_your_token',
        'Accept' => 'application/json',
    ],
    'json' => json_decode('{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "search-owner-help",
        "arguments": {
            "query": "як додати клієнта",
            "limit": 3
        }
    }
}', true),
]);

$data = json_decode((string) $response->getBody(), true);
Python
import requests

response = requests.request(
    'POST',
    'https://ladna.app/mcp/ladna-studio',
    headers={
        'Authorization': 'Bearer ladna_your_token',
        'Accept': 'application/json',
    },
    json={
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "search-owner-help",
        "arguments": {
            "query": "як додати клієнта",
            "limit": 3
        }
    }
},
)
response.raise_for_status()
data = response.json()
JS
const response = await fetch('https://ladna.app/mcp/ladna-studio', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer ladna_your_token',
    'Accept': 'application/json',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "search-owner-help",
        "arguments": {
            "query": "як додати клієнта",
            "limit": 3
        }
    }
}),
});

const data = await response.json();

MCP вміння Ladna асистента

POST /mcp/ladna-studio

PHP
$response = (new \GuzzleHttp\Client())->request('POST', 'https://ladna.app/mcp/ladna-studio', [
    'headers' => [
        'Authorization' => 'Bearer ladna_your_token',
        'Accept' => 'application/json',
    ],
    'json' => json_decode('{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "describe-ladna-skills",
        "arguments": {
            "channel": "dashboard_chat"
        }
    }
}', true),
]);

$data = json_decode((string) $response->getBody(), true);
Python
import requests

response = requests.request(
    'POST',
    'https://ladna.app/mcp/ladna-studio',
    headers={
        'Authorization': 'Bearer ladna_your_token',
        'Accept': 'application/json',
    },
    json={
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "describe-ladna-skills",
        "arguments": {
            "channel": "dashboard_chat"
        }
    }
},
)
response.raise_for_status()
data = response.json()
JS
const response = await fetch('https://ladna.app/mcp/ladna-studio', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer ladna_your_token',
    'Accept': 'application/json',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "describe-ladna-skills",
        "arguments": {
            "channel": "dashboard_chat"
        }
    }
}),
});

const data = await response.json();

MCP огляд оплат студії

POST /mcp/ladna-studio

PHP
$response = (new \GuzzleHttp\Client())->request('POST', 'https://ladna.app/mcp/ladna-studio', [
    'headers' => [
        'Authorization' => 'Bearer ladna_your_token',
        'Accept' => 'application/json',
    ],
    'json' => json_decode('{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "get-payment-overview",
        "arguments": {
            "date_from": "2026-07-01",
            "date_to": "2026-07-31"
        }
    }
}', true),
]);

$data = json_decode((string) $response->getBody(), true);
Python
import requests

response = requests.request(
    'POST',
    'https://ladna.app/mcp/ladna-studio',
    headers={
        'Authorization': 'Bearer ladna_your_token',
        'Accept': 'application/json',
    },
    json={
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "get-payment-overview",
        "arguments": {
            "date_from": "2026-07-01",
            "date_to": "2026-07-31"
        }
    }
},
)
response.raise_for_status()
data = response.json()
JS
const response = await fetch('https://ladna.app/mcp/ladna-studio', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer ladna_your_token',
    'Accept': 'application/json',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "get-payment-overview",
        "arguments": {
            "date_from": "2026-07-01",
            "date_to": "2026-07-31"
        }
    }
}),
});

const data = await response.json();

MCP пошук оплат студії

POST /mcp/ladna-studio

PHP
$response = (new \GuzzleHttp\Client())->request('POST', 'https://ladna.app/mcp/ladna-studio', [
    'headers' => [
        'Authorization' => 'Bearer ladna_your_token',
        'Accept' => 'application/json',
    ],
    'json' => json_decode('{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "search-payments",
        "arguments": {
            "date_from": "2026-07-01",
            "date_to": "2026-07-31",
            "query": "Коваль",
            "limit": 20
        }
    }
}', true),
]);

$data = json_decode((string) $response->getBody(), true);
Python
import requests

response = requests.request(
    'POST',
    'https://ladna.app/mcp/ladna-studio',
    headers={
        'Authorization': 'Bearer ladna_your_token',
        'Accept': 'application/json',
    },
    json={
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "search-payments",
        "arguments": {
            "date_from": "2026-07-01",
            "date_to": "2026-07-31",
            "query": "Коваль",
            "limit": 20
        }
    }
},
)
response.raise_for_status()
data = response.json()
JS
const response = await fetch('https://ladna.app/mcp/ladna-studio', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer ladna_your_token',
    'Accept': 'application/json',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "search-payments",
        "arguments": {
            "date_from": "2026-07-01",
            "date_to": "2026-07-31",
            "query": "Коваль",
            "limit": 20
        }
    }
}),
});

const data = await response.json();

MCP фінансовий звіт студії

POST /mcp/ladna-studio

PHP
$response = (new \GuzzleHttp\Client())->request('POST', 'https://ladna.app/mcp/ladna-studio', [
    'headers' => [
        'Authorization' => 'Bearer ladna_your_token',
        'Accept' => 'application/json',
    ],
    'json' => json_decode('{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "get-financial-report",
        "arguments": {
            "date_from": "2026-07-01",
            "date_to": "2026-07-31",
            "limit": 20
        }
    }
}', true),
]);

$data = json_decode((string) $response->getBody(), true);
Python
import requests

response = requests.request(
    'POST',
    'https://ladna.app/mcp/ladna-studio',
    headers={
        'Authorization': 'Bearer ladna_your_token',
        'Accept': 'application/json',
    },
    json={
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "get-financial-report",
        "arguments": {
            "date_from": "2026-07-01",
            "date_to": "2026-07-31",
            "limit": 20
        }
    }
},
)
response.raise_for_status()
data = response.json()
JS
const response = await fetch('https://ladna.app/mcp/ladna-studio', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer ladna_your_token',
    'Accept': 'application/json',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "get-financial-report",
        "arguments": {
            "date_from": "2026-07-01",
            "date_to": "2026-07-31",
            "limit": 20
        }
    }
}),
});

const data = await response.json();

MCP огляд кас студії

POST /mcp/ladna-studio

PHP
$response = (new \GuzzleHttp\Client())->request('POST', 'https://ladna.app/mcp/ladna-studio', [
    'headers' => [
        'Authorization' => 'Bearer ladna_your_token',
        'Accept' => 'application/json',
    ],
    'json' => json_decode('{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "get-cashbox-overview",
        "arguments": {
            "location_id": 12,
            "currency": "UAH"
        }
    }
}', true),
]);

$data = json_decode((string) $response->getBody(), true);
Python
import requests

response = requests.request(
    'POST',
    'https://ladna.app/mcp/ladna-studio',
    headers={
        'Authorization': 'Bearer ladna_your_token',
        'Accept': 'application/json',
    },
    json={
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "get-cashbox-overview",
        "arguments": {
            "location_id": 12,
            "currency": "UAH"
        }
    }
},
)
response.raise_for_status()
data = response.json()
JS
const response = await fetch('https://ladna.app/mcp/ladna-studio', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer ladna_your_token',
    'Accept': 'application/json',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "get-cashbox-overview",
        "arguments": {
            "location_id": 12,
            "currency": "UAH"
        }
    }
}),
});

const data = await response.json();

MCP звіт по заробітку студії

POST /mcp/ladna-studio

PHP
$response = (new \GuzzleHttp\Client())->request('POST', 'https://ladna.app/mcp/ladna-studio', [
    'headers' => [
        'Authorization' => 'Bearer ladna_your_token',
        'Accept' => 'application/json',
    ],
    'json' => json_decode('{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "get-earnings-report",
        "arguments": {
            "date_from": "2026-07-01",
            "date_to": "2026-07-31"
        }
    }
}', true),
]);

$data = json_decode((string) $response->getBody(), true);
Python
import requests

response = requests.request(
    'POST',
    'https://ladna.app/mcp/ladna-studio',
    headers={
        'Authorization': 'Bearer ladna_your_token',
        'Accept': 'application/json',
    },
    json={
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "get-earnings-report",
        "arguments": {
            "date_from": "2026-07-01",
            "date_to": "2026-07-31"
        }
    }
},
)
response.raise_for_status()
data = response.json()
JS
const response = await fetch('https://ladna.app/mcp/ladna-studio', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer ladna_your_token',
    'Accept': 'application/json',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "get-earnings-report",
        "arguments": {
            "date_from": "2026-07-01",
            "date_to": "2026-07-31"
        }
    }
}),
});

const data = await response.json();

MCP звіт по орендах студії

POST /mcp/ladna-studio

PHP
$response = (new \GuzzleHttp\Client())->request('POST', 'https://ladna.app/mcp/ladna-studio', [
    'headers' => [
        'Authorization' => 'Bearer ladna_your_token',
        'Accept' => 'application/json',
    ],
    'json' => json_decode('{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "get-rental-report",
        "arguments": {
            "date_from": "2026-07-01",
            "date_to": "2026-07-31"
        }
    }
}', true),
]);

$data = json_decode((string) $response->getBody(), true);
Python
import requests

response = requests.request(
    'POST',
    'https://ladna.app/mcp/ladna-studio',
    headers={
        'Authorization': 'Bearer ladna_your_token',
        'Accept': 'application/json',
    },
    json={
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "get-rental-report",
        "arguments": {
            "date_from": "2026-07-01",
            "date_to": "2026-07-31"
        }
    }
},
)
response.raise_for_status()
data = response.json()
JS
const response = await fetch('https://ladna.app/mcp/ladna-studio', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer ladna_your_token',
    'Accept': 'application/json',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "get-rental-report",
        "arguments": {
            "date_from": "2026-07-01",
            "date_to": "2026-07-31"
        }
    }
}),
});

const data = await response.json();

MCP огляд зарплатних періодів

POST /mcp/ladna-studio

PHP
$response = (new \GuzzleHttp\Client())->request('POST', 'https://ladna.app/mcp/ladna-studio', [
    'headers' => [
        'Authorization' => 'Bearer ladna_your_token',
        'Accept' => 'application/json',
    ],
    'json' => json_decode('{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "get-payroll-overview",
        "arguments": {
            "limit": 20
        }
    }
}', true),
]);

$data = json_decode((string) $response->getBody(), true);
Python
import requests

response = requests.request(
    'POST',
    'https://ladna.app/mcp/ladna-studio',
    headers={
        'Authorization': 'Bearer ladna_your_token',
        'Accept': 'application/json',
    },
    json={
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "get-payroll-overview",
        "arguments": {
            "limit": 20
        }
    }
},
)
response.raise_for_status()
data = response.json()
JS
const response = await fetch('https://ladna.app/mcp/ladna-studio', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer ladna_your_token',
    'Accept': 'application/json',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "get-payroll-overview",
        "arguments": {
            "limit": 20
        }
    }
}),
});

const data = await response.json();

MCP огляд подій студії

POST /mcp/ladna-studio

PHP
$response = (new \GuzzleHttp\Client())->request('POST', 'https://ladna.app/mcp/ladna-studio', [
    'headers' => [
        'Authorization' => 'Bearer ladna_your_token',
        'Accept' => 'application/json',
    ],
    'json' => json_decode('{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "get-events-overview",
        "arguments": {
            "status_bucket": "upcoming",
            "limit": 20
        }
    }
}', true),
]);

$data = json_decode((string) $response->getBody(), true);
Python
import requests

response = requests.request(
    'POST',
    'https://ladna.app/mcp/ladna-studio',
    headers={
        'Authorization': 'Bearer ladna_your_token',
        'Accept': 'application/json',
    },
    json={
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "get-events-overview",
        "arguments": {
            "status_bucket": "upcoming",
            "limit": 20
        }
    }
},
)
response.raise_for_status()
data = response.json()
JS
const response = await fetch('https://ladna.app/mcp/ladna-studio', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer ladna_your_token',
    'Accept': 'application/json',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "get-events-overview",
        "arguments": {
            "status_bucket": "upcoming",
            "limit": 20
        }
    }
}),
});

const data = await response.json();

MCP підсумок події студії

POST /mcp/ladna-studio

PHP
$response = (new \GuzzleHttp\Client())->request('POST', 'https://ladna.app/mcp/ladna-studio', [
    'headers' => [
        'Authorization' => 'Bearer ladna_your_token',
        'Accept' => 'application/json',
    ],
    'json' => json_decode('{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "get-event-summary",
        "arguments": {
            "event_id": 42
        }
    }
}', true),
]);

$data = json_decode((string) $response->getBody(), true);
Python
import requests

response = requests.request(
    'POST',
    'https://ladna.app/mcp/ladna-studio',
    headers={
        'Authorization': 'Bearer ladna_your_token',
        'Accept': 'application/json',
    },
    json={
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "get-event-summary",
        "arguments": {
            "event_id": 42
        }
    }
},
)
response.raise_for_status()
data = response.json()
JS
const response = await fetch('https://ladna.app/mcp/ladna-studio', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer ladna_your_token',
    'Accept': 'application/json',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "get-event-summary",
        "arguments": {
            "event_id": 42
        }
    }
}),
});

const data = await response.json();