For developers & AI assistants
MCP connection guide
Connect ChatGPT, Claude, Cursor or any Model Context Protocol client to FutureNest Global School's live data — securely, as a signed-in user.
1. Server URL
Add this Streamable HTTP endpoint in your assistant's connector settings:
https://futurenestglobalschool.com/mcpProtected-resource metadata is published at https://futurenestglobalschool.com/.well-known/oauth-protected-resource. The server accepts only OAuth 2.1 bearer tokens — there is no API key and no anonymous access to school data.
2. OAuth sign-in steps
- Paste the server URL into your MCP client and start the connection.
- The client reads the metadata above, discovers the authorization server and registers itself automatically (dynamic client registration — nothing to configure).
- Your browser opens the FutureNest sign-in page. Sign in with the account the school created for you.
- A consent screen names the connecting app. Choose Approve to grant access, or Deny to cancel.
- The client receives a token and the tools appear. Call
whoamifirst to confirm the connection.
Every call runs as your account under row-level security, and is written to the school's audit log (who, when, which tool, outcome). Public tools work for any signed-in account; enquiry tools require a staff or admin role.
3. Available tools
whoami — Check connection & identity
Health check. Confirms the server is reachable, whether you are authenticated, and whether the database responds.
Example arguments: {}
get_school_info — School details
Public information: address, phone, email, timings, age groups and programs.
Example arguments: {}
list_certifications — Licences & certificates
Lists the school's published certifications with titles, categories and document links.
Example arguments: {}
list_admissions_leads — Admission enquiries (staff only)
Reviews website admission enquiries, newest first, with optional status filtering.
Example arguments: { "limit": 20, "status": "new" }
update_admissions_lead — Update an enquiry (staff only)
Sets the status or internal notes on a single admission enquiry.
Example arguments: { "id": "<lead-uuid>", "status": "contacted", "notes": "Called, visit booked Friday" }
list_franchise_leads — Franchise enquiries (staff only)
Reviews franchise partnership enquiries with investment range, location and timeline.
Example arguments: { "limit": 20 }
4. Example tool calls
In chat, plain language is enough — “check the FutureNest connection”, or “list this week’s admission enquiries and mark the first one contacted”. Over raw JSON-RPC the calls look like this:
POST https://futurenestglobalschool.com/mcp
Authorization: Bearer <oauth-access-token>
Content-Type: application/json
Accept: application/json, text/event-stream
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": { "name": "whoami", "arguments": {} }
}{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "list_admissions_leads",
"arguments": { "limit": 10, "status": "new" }
}
}{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "update_admissions_lead",
"arguments": {
"id": "00000000-0000-0000-0000-000000000000",
"status": "contacted",
"notes": "Spoke to parent, campus visit booked"
}
}
}5. Rate limits
- 30 tool calls per minute, per user
- 300 tool calls per hour, per user
- 10 write/update calls per minute, per user
- 25-second ceiling on any single call
Exceeding a limit returns a rate_limited error with retry_after_seconds — wait that long and retry.
6. Error responses
Every failure returns the same shape:
{
"error": {
"code": "rate_limited",
"message": "Rate limit reached: 30 tool calls per minute per user.",
"hint": "Wait for the retry window to pass, then try again.",
"retry_after_seconds": 42
}
}| Code | Meaning | What to do |
|---|---|---|
unauthenticated | No valid token was presented. | Re-run the OAuth flow and approve the consent screen. |
forbidden | Signed in, but this account cannot see that data. | Ask an admin to grant a staff role. |
rate_limited | Per-user quota exceeded. | Wait for retry_after_seconds, then retry. |
timeout | The call ran past 25 seconds. | Narrow the request and try again. |
invalid_input | Arguments failed validation. | Check the tool's input schema and resend. |
not_found | The requested record does not exist. | Re-list records to get a valid id. |
internal_error | Unexpected server-side failure. | Run whoami, then retry. |
7. Need access?
Staff-level tools are granted by the school. Contact us and we’ll set up your account and role.
Ready to visit our campus?
Book a walkthrough, meet our educators and see how your child will learn, play and grow.
