OAUTH 2.1
PROPERTY OPS
ProhostAI MCP gives agents authenticated access to your property operations: manage listings and tasks, run cleaning and pricing workflows, and handle guest messaging under the manager's own account.
import { ScalekitClient } from "@scalekit-sdk/node";
import { createReactAgent } from "@langchain/langgraph/prebuilt";
const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
// ProhostAI tools scoped to this user
const { tools } = await sk.tools.listScopedTools("user_123", {
filter: { connectionNames: ["prohostaimcp"], toolNames: [
"prohostaimcp_list_places",
"prohostaimcp_search_tasks",
"prohostaimcp_list_skills"] },
pageSize: 100,
});
const agent = createReactAgent({ llm, tools });
await agent.invoke({ messages: [{ role: "user", content: "Which turnovers need a cleaner assigned before tomorrow's check-ins?" }] });import OpenAI from "openai";
import { ScalekitClient } from "@scalekit-sdk/node";
const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
const openai = new OpenAI();
const { tools } = await sk.tools.listScopedTools("user_123", {
filter: { connectionNames: ["prohostaimcp"] }, pageSize: 100,
});
const res = await openai.chat.completions.create({
model: "gpt-5",
messages: [{ role: "user", content: "Which turnovers need a cleaner assigned before tomorrow's check-ins?" }],
tools,
});
// Execute the tool call with the user's vaulted ProhostAI credential
await sk.tools.executeTool(res.choices[0].message.tool_calls[0], "user_123");import Anthropic from "@anthropic-ai/sdk";
import { ScalekitClient } from "@scalekit-sdk/node";
const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
const anthropic = new Anthropic();
const { tools } = await sk.tools.listScopedTools("user_123", {
filter: { connectionNames: ["prohostaimcp"] }, pageSize: 100,
});
const msg = await anthropic.messages.create({
model: "claude-sonnet-5",
max_tokens: 1024,
messages: [{ role: "user", content: "Which turnovers need a cleaner assigned before tomorrow's check-ins?" }],
tools,
});
// Tool call runs with the user's vaulted ProhostAI credential
await sk.tools.executeTool(msg.content, "user_123");import { Agent } from "@google/adk/agents";
import { ScalekitClient } from "@scalekit-sdk/node";
const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
const { tools } = await sk.tools.listScopedTools("user_123", {
filter: { connectionNames: ["prohostaimcp"] }, pageSize: 100,
});
const agent = new Agent({
name: "prohostai_agent",
model: "gemini-2.5-pro",
instruction: "Manage ProhostAI for the signed-in user.",
tools,
});
await agent.run("Which turnovers need a cleaner assigned before tomorrow's check-ins?");// shared token
audit → bot_service_account
// scalekit
audit → user_abc ✓// authn only
has_token? yes
call → 200 (anything)
// scalekit
scope ⊃ tool? yes
call → 200 (allowed)vault/
tenant_acme/ → isolated
tenant_globex/ → isolated
// cross-tenant: denied// DIY: N tools
connector_oauth.py ×100
// scalekit
client.tools.execute_tool(
tool_name="any_tool",
) → 100+ tools
Does the agent access ProhostAI as the user or as a shared key?
As the user. Each workspace member authorizes once and Scalekit resolves their credential at request time. Audit logs attribute every action to that user, not a shared service account.
Where is the ProhostAI OAuth token stored?
In Scalekit's managed AES-256 token vault, namespaced per tenant. Refresh is automatic. Revocation is a single dashboard action. Tokens never appear in prompts, logs, or LLM context.
Can I limit what the agent is allowed to do in ProhostAI?
Yes. Pass a tool name filter to listScopedTools so the automation agent only sees the subset you authorize. Pre-API-call scope checks block out-of-policy actions before the request reaches ProhostAI.
What happens when a user revokes ProhostAI access?
The connection is invalidated on the next tool call. Subsequent requests for that user fail closed with a clear error. Other users in the tenant remain unaffected. The event is logged for audit.
Does the agent respect ProhostAI permissions?
Yes. Every call runs as the authorizing user. Native roles, sharing settings, and scope restrictions in ProhostAI apply to each request, and actions log to the audit chain.



We use cookies, so things load fast, we learn what to fix, and you can always reach us on chat