{
  "schemaVersion": 1,
  "organisation": {
    "name": "Kroy",
    "description": "The governed interface between your organisation and AI.",
    "tagline": "Give AI somewhere safe to work.",
    "technicalDescription": "An independent database, state, access, execution and publishing layer through which humans, AI agents, organisations and systems can safely work with organisational information and capabilities.",
    "initialMarket": "London",
    "url": "https://getkroy.com"
  },
  "properties": {
    "web": "https://getkroy.com",
    "llm": "https://llm.kroy.cc",
    "marketplace": "https://marketplace.kroy.cc"
  },
  "capabilities": [
    {
      "id": "ai-gateway",
      "name": "AI Gateway",
      "pillar": "connect",
      "summary": "The Kroy AI Gateway sits between AI tools and business systems. AI requests go to Kroy, which authenticates, checks policy, requires approval where needed, executes the action and records it.",
      "url": "https://getkroy.com/product/ai-gateway"
    },
    {
      "id": "channels",
      "name": "Channels",
      "pillar": "publish",
      "summary": "A Kroy Channel combines an audience, a projection of data, artifacts, events and Skills. Organisations run separate Channels for employees, clients, partners, the public and AI agents.",
      "url": "https://getkroy.com/product/channels"
    },
    {
      "id": "artifacts",
      "name": "Artifacts",
      "pillar": "store",
      "summary": "Kroy Artifacts store the work AI produces — drafts, reports, analyses — with versions, a Draft-to-Approved status and a record of who or what created each change.",
      "url": "https://getkroy.com/product/artifacts"
    },
    {
      "id": "control",
      "name": "Control",
      "pillar": "control",
      "summary": "Kroy Control decides every AI request by checking who is asking, which agent is acting, what they are delegated to do, the organisation’s policies, and whether a human must approve.",
      "url": "https://getkroy.com/product/control"
    },
    {
      "id": "connect",
      "name": "Connect",
      "pillar": "connect",
      "summary": "Kroy Connectors link Microsoft 365, Xero, GitHub, databases and internal systems to Kroy once. Authorised AI then uses them through Kroy, which holds the credentials and enforces permissions.",
      "url": "https://getkroy.com/product/connect"
    },
    {
      "id": "observe",
      "name": "Observe",
      "pillar": "observe",
      "summary": "Kroy Observe shows which AI agents are connected, which Skills run, what was approved or denied and which systems AI reaches — an audit and adoption view, not employee surveillance.",
      "url": "https://getkroy.com/product/observe"
    },
    {
      "id": "database",
      "name": "Kroy Database",
      "pillar": "store",
      "summary": "The Kroy Database is where Kroy stores clients, projects, decisions and other organisational information as structured, permissioned entities with relationships, so authorised AI and people can query and update them.",
      "url": "https://getkroy.com/product/database"
    },
    {
      "id": "skills",
      "name": "Skills",
      "pillar": "act",
      "summary": "A Kroy Skill packages a business task — such as preparing a client reminder — with exactly the data, connector actions and approval rules it needs, so AI can do the job without broad access.",
      "url": "https://getkroy.com/product/skills"
    },
    {
      "id": "guest-access",
      "name": "Guest Access",
      "pillar": "control",
      "summary": "Kroy Guest Access lets an organisation share a governed projection of its data with clients, advisers or contractors — who can use Kroy directly or through their own Claude or ChatGPT.",
      "url": "https://getkroy.com/product/guest-access"
    },
    {
      "id": "publish",
      "name": "Publish",
      "pillar": "publish",
      "summary": "Kroy Publish turns structured Kroy data and approved Artifacts into feeds for websites, client portals, APIs and AI — with drafts, versions, approvals and audit — without being a website builder.",
      "url": "https://getkroy.com/product/publish"
    },
    {
      "id": "state",
      "name": "State",
      "pillar": "store",
      "summary": "Kroy State keeps decisions, projects, tasks, artifacts and provenance outside any single AI provider, so work started in Claude can continue in ChatGPT or Codex without re-explaining it.",
      "url": "https://getkroy.com/product/state"
    }
  ],
  "integrations": [
    {
      "id": "chatgpt",
      "name": "ChatGPT",
      "category": "ai-agents",
      "availability": "available",
      "maintainer": "kroy-built",
      "actions": [
        {
          "id": "kroy.state.read",
          "kind": "read",
          "approvalByDefault": false
        },
        {
          "id": "kroy.state.update",
          "kind": "write",
          "approvalByDefault": false
        },
        {
          "id": "kroy.skill.invoke",
          "kind": "write",
          "approvalByDefault": false
        },
        {
          "id": "kroy.artifact.draft_create",
          "kind": "write",
          "approvalByDefault": false
        },
        {
          "id": "kroy.approval.request",
          "kind": "write",
          "approvalByDefault": false
        },
        {
          "id": "kroy.artifact.publish",
          "kind": "write",
          "approvalByDefault": true
        }
      ],
      "events": [
        "kroy.approval.granted",
        "kroy.state.updated"
      ],
      "url": "https://getkroy.com/integrations/chatgpt"
    },
    {
      "id": "github",
      "name": "GitHub",
      "category": "development",
      "availability": "available",
      "maintainer": "kroy-built",
      "actions": [
        {
          "id": "github.repos.read",
          "kind": "read",
          "approvalByDefault": false
        },
        {
          "id": "github.issues.read",
          "kind": "read",
          "approvalByDefault": false
        },
        {
          "id": "github.pull_requests.read",
          "kind": "read",
          "approvalByDefault": false
        },
        {
          "id": "github.issues.create",
          "kind": "write",
          "approvalByDefault": false
        },
        {
          "id": "github.issues.comment",
          "kind": "write",
          "approvalByDefault": false
        },
        {
          "id": "github.branches.create",
          "kind": "write",
          "approvalByDefault": false
        },
        {
          "id": "github.pull_requests.create",
          "kind": "write",
          "approvalByDefault": false
        },
        {
          "id": "github.pull_requests.merge",
          "kind": "write",
          "approvalByDefault": true
        },
        {
          "id": "github.releases.create",
          "kind": "write",
          "approvalByDefault": true
        },
        {
          "id": "github.workflows.dispatch",
          "kind": "write",
          "approvalByDefault": true
        }
      ],
      "events": [
        "github.pull_request.opened",
        "github.pull_request.merged",
        "github.issue.opened",
        "github.workflow_run.completed"
      ],
      "url": "https://getkroy.com/integrations/github"
    },
    {
      "id": "google-workspace",
      "name": "Google Workspace",
      "category": "productivity",
      "availability": "available",
      "maintainer": "kroy-built",
      "actions": [
        {
          "id": "gmail.mail.read",
          "kind": "read",
          "approvalByDefault": false
        },
        {
          "id": "gmail.draft.create",
          "kind": "write",
          "approvalByDefault": false
        },
        {
          "id": "gmail.mail.send",
          "kind": "write",
          "approvalByDefault": true
        },
        {
          "id": "gdrive.files.read",
          "kind": "read",
          "approvalByDefault": false
        },
        {
          "id": "gdrive.files.create",
          "kind": "write",
          "approvalByDefault": false
        },
        {
          "id": "gdrive.files.share",
          "kind": "write",
          "approvalByDefault": true
        },
        {
          "id": "gcalendar.events.read",
          "kind": "read",
          "approvalByDefault": false
        },
        {
          "id": "gcalendar.events.create",
          "kind": "write",
          "approvalByDefault": false
        }
      ],
      "events": [
        "gdrive.file.created",
        "gmail.mail.received"
      ],
      "url": "https://getkroy.com/integrations/google-workspace"
    },
    {
      "id": "claude",
      "name": "Claude",
      "category": "ai-agents",
      "availability": "available",
      "maintainer": "kroy-built",
      "actions": [
        {
          "id": "kroy.state.read",
          "kind": "read",
          "approvalByDefault": false
        },
        {
          "id": "kroy.state.update",
          "kind": "write",
          "approvalByDefault": false
        },
        {
          "id": "kroy.skill.invoke",
          "kind": "write",
          "approvalByDefault": false
        },
        {
          "id": "kroy.artifact.draft_create",
          "kind": "write",
          "approvalByDefault": false
        },
        {
          "id": "kroy.approval.request",
          "kind": "write",
          "approvalByDefault": false
        },
        {
          "id": "kroy.artifact.publish",
          "kind": "write",
          "approvalByDefault": true
        }
      ],
      "events": [
        "kroy.approval.granted",
        "kroy.state.updated"
      ],
      "url": "https://getkroy.com/integrations/claude"
    },
    {
      "id": "microsoft-365",
      "name": "Microsoft 365",
      "category": "productivity",
      "availability": "available",
      "maintainer": "kroy-built",
      "actions": [
        {
          "id": "outlook.mail.read",
          "kind": "read",
          "approvalByDefault": false
        },
        {
          "id": "outlook.draft.create",
          "kind": "write",
          "approvalByDefault": false
        },
        {
          "id": "outlook.mail.send",
          "kind": "write",
          "approvalByDefault": true
        },
        {
          "id": "sharepoint.files.read",
          "kind": "read",
          "approvalByDefault": false
        },
        {
          "id": "sharepoint.files.upload",
          "kind": "write",
          "approvalByDefault": false
        }
      ],
      "events": [
        "sharepoint.file.created",
        "outlook.mail.received"
      ],
      "url": "https://getkroy.com/integrations/microsoft-365"
    },
    {
      "id": "microsoft-copilot",
      "name": "Microsoft Copilot",
      "category": "ai-agents",
      "availability": "available",
      "maintainer": "kroy-built",
      "actions": [
        {
          "id": "kroy.state.read",
          "kind": "read",
          "approvalByDefault": false
        },
        {
          "id": "kroy.state.update",
          "kind": "write",
          "approvalByDefault": false
        },
        {
          "id": "kroy.skill.invoke",
          "kind": "write",
          "approvalByDefault": false
        },
        {
          "id": "kroy.artifact.draft_create",
          "kind": "write",
          "approvalByDefault": false
        },
        {
          "id": "kroy.approval.request",
          "kind": "write",
          "approvalByDefault": false
        },
        {
          "id": "kroy.artifact.publish",
          "kind": "write",
          "approvalByDefault": true
        }
      ],
      "events": [
        "kroy.approval.granted",
        "kroy.state.updated"
      ],
      "url": "https://getkroy.com/integrations/microsoft-copilot"
    },
    {
      "id": "microsoft-entra-id",
      "name": "Microsoft Entra ID",
      "category": "identity",
      "availability": "available",
      "maintainer": "kroy-built",
      "actions": [
        {
          "id": "entra.users.read",
          "kind": "read",
          "approvalByDefault": false
        },
        {
          "id": "entra.groups.read",
          "kind": "read",
          "approvalByDefault": false
        },
        {
          "id": "entra.group_members.read",
          "kind": "read",
          "approvalByDefault": false
        }
      ],
      "events": [
        "entra.user.disabled",
        "entra.group_membership.changed"
      ],
      "url": "https://getkroy.com/integrations/microsoft-entra-id"
    },
    {
      "id": "postgresql",
      "name": "PostgreSQL",
      "category": "databases",
      "availability": "available",
      "maintainer": "kroy-built",
      "actions": [
        {
          "id": "postgresql.schema.read",
          "kind": "read",
          "approvalByDefault": false
        },
        {
          "id": "postgresql.query.read",
          "kind": "read",
          "approvalByDefault": false
        },
        {
          "id": "postgresql.query.adhoc_read",
          "kind": "read",
          "approvalByDefault": true
        },
        {
          "id": "postgresql.statement.execute",
          "kind": "write",
          "approvalByDefault": true
        }
      ],
      "events": [
        "postgresql.statement.executed"
      ],
      "url": "https://getkroy.com/integrations/postgresql"
    },
    {
      "id": "jira",
      "name": "Jira",
      "category": "project-management",
      "availability": "available",
      "maintainer": "kroy-built",
      "actions": [
        {
          "id": "jira.issue.read",
          "kind": "read",
          "approvalByDefault": false
        },
        {
          "id": "jira.issue.search",
          "kind": "read",
          "approvalByDefault": false
        },
        {
          "id": "jira.issue.create",
          "kind": "write",
          "approvalByDefault": false
        },
        {
          "id": "jira.issue.comment",
          "kind": "write",
          "approvalByDefault": false
        },
        {
          "id": "jira.issue.update",
          "kind": "write",
          "approvalByDefault": false
        },
        {
          "id": "jira.issue.transition",
          "kind": "write",
          "approvalByDefault": true
        }
      ],
      "events": [
        "jira.issue.created",
        "jira.issue.updated",
        "jira.issue.transitioned"
      ],
      "url": "https://getkroy.com/integrations/jira"
    },
    {
      "id": "cloudflare",
      "name": "Cloudflare",
      "category": "development",
      "availability": "available",
      "maintainer": "kroy-built",
      "actions": [
        {
          "id": "cloudflare.deployments.read",
          "kind": "read",
          "approvalByDefault": false
        },
        {
          "id": "cloudflare.deploy_hook.trigger",
          "kind": "write",
          "approvalByDefault": true
        },
        {
          "id": "cloudflare.cache.purge",
          "kind": "write",
          "approvalByDefault": true
        }
      ],
      "events": [
        "cloudflare.deployment.succeeded",
        "cloudflare.deployment.failed"
      ],
      "url": "https://getkroy.com/integrations/cloudflare"
    },
    {
      "id": "quickbooks",
      "name": "QuickBooks",
      "category": "accounting-finance",
      "availability": "available",
      "maintainer": "kroy-built",
      "actions": [
        {
          "id": "quickbooks.customers.read",
          "kind": "read",
          "approvalByDefault": false
        },
        {
          "id": "quickbooks.invoices.read",
          "kind": "read",
          "approvalByDefault": false
        },
        {
          "id": "quickbooks.bills.read",
          "kind": "read",
          "approvalByDefault": false
        },
        {
          "id": "quickbooks.reports.read",
          "kind": "read",
          "approvalByDefault": false
        },
        {
          "id": "quickbooks.estimates.create",
          "kind": "write",
          "approvalByDefault": false
        },
        {
          "id": "quickbooks.invoices.create",
          "kind": "write",
          "approvalByDefault": true
        },
        {
          "id": "quickbooks.invoices.send",
          "kind": "write",
          "approvalByDefault": true
        },
        {
          "id": "quickbooks.bills.create",
          "kind": "write",
          "approvalByDefault": true
        }
      ],
      "events": [
        "quickbooks.invoice.created",
        "quickbooks.payment.received"
      ],
      "url": "https://getkroy.com/integrations/quickbooks"
    },
    {
      "id": "salesforce",
      "name": "Salesforce",
      "category": "crm",
      "availability": "available",
      "maintainer": "kroy-built",
      "actions": [
        {
          "id": "salesforce.account.read",
          "kind": "read",
          "approvalByDefault": false
        },
        {
          "id": "salesforce.contact.read",
          "kind": "read",
          "approvalByDefault": false
        },
        {
          "id": "salesforce.opportunity.read",
          "kind": "read",
          "approvalByDefault": false
        },
        {
          "id": "salesforce.task.create",
          "kind": "write",
          "approvalByDefault": false
        },
        {
          "id": "salesforce.note.create",
          "kind": "write",
          "approvalByDefault": false
        },
        {
          "id": "salesforce.lead.create",
          "kind": "write",
          "approvalByDefault": false
        },
        {
          "id": "salesforce.contact.update",
          "kind": "write",
          "approvalByDefault": true
        },
        {
          "id": "salesforce.opportunity.update",
          "kind": "write",
          "approvalByDefault": true
        }
      ],
      "events": [
        "salesforce.opportunity.updated",
        "salesforce.lead.created"
      ],
      "url": "https://getkroy.com/integrations/salesforce"
    },
    {
      "id": "xero",
      "name": "Xero",
      "category": "accounting-finance",
      "availability": "available",
      "maintainer": "kroy-built",
      "actions": [
        {
          "id": "xero.contacts.read",
          "kind": "read",
          "approvalByDefault": false
        },
        {
          "id": "xero.invoices.read",
          "kind": "read",
          "approvalByDefault": false
        },
        {
          "id": "xero.bills.read",
          "kind": "read",
          "approvalByDefault": false
        },
        {
          "id": "xero.reports.read",
          "kind": "read",
          "approvalByDefault": false
        },
        {
          "id": "xero.invoices.draft_create",
          "kind": "write",
          "approvalByDefault": false
        },
        {
          "id": "xero.invoices.approve",
          "kind": "write",
          "approvalByDefault": true
        }
      ],
      "events": [
        "xero.invoice.created",
        "xero.invoice.paid"
      ],
      "url": "https://getkroy.com/integrations/xero"
    }
  ],
  "caseStudies": [
    {
      "id": "bookkeeping-review",
      "title": "AI-assisted bookkeeping review in Xero",
      "kind": "example",
      "url": "https://getkroy.com/case-studies/bookkeeping-review"
    },
    {
      "id": "board-reporting",
      "title": "Preparing a board pack with AI, and sharing it with the board",
      "kind": "example",
      "url": "https://getkroy.com/case-studies/board-reporting"
    },
    {
      "id": "client-document-room",
      "title": "A client document room with an expiry date",
      "kind": "example",
      "url": "https://getkroy.com/case-studies/client-document-room"
    },
    {
      "id": "client-onboarding",
      "title": "Onboarding a new client with AI — while the AML review stays internal",
      "kind": "example",
      "url": "https://getkroy.com/case-studies/client-onboarding"
    },
    {
      "id": "client-query-investigation",
      "title": "Investigating a client’s question with ChatGPT, Xero and Outlook",
      "kind": "example",
      "url": "https://getkroy.com/case-studies/client-query-investigation"
    },
    {
      "id": "client-workspace-own-ai",
      "title": "A client uses their own Claude with the information you share",
      "kind": "example",
      "url": "https://getkroy.com/case-studies/client-workspace-own-ai"
    },
    {
      "id": "consulting-project-state",
      "title": "Shared project state across a consulting team’s AI tools",
      "kind": "example",
      "url": "https://getkroy.com/case-studies/consulting-project-state"
    },
    {
      "id": "ai-operated-website-publishing",
      "title": "Letting AI update your website — with a person approving",
      "kind": "example",
      "url": "https://getkroy.com/case-studies/ai-operated-website-publishing"
    },
    {
      "id": "claude-code-codex-shared-state",
      "title": "Claude Code and Codex working from shared state",
      "kind": "example",
      "url": "https://getkroy.com/case-studies/claude-code-codex-shared-state"
    },
    {
      "id": "claude-xero",
      "title": "Claude + Xero through Kroy",
      "kind": "example",
      "url": "https://getkroy.com/case-studies/claude-xero"
    },
    {
      "id": "contract-review",
      "title": "Reviewing a contract against the firm’s playbook with Claude",
      "kind": "example",
      "url": "https://getkroy.com/case-studies/contract-review"
    },
    {
      "id": "matter-handoff",
      "title": "Handing over a legal matter between people and their AI",
      "kind": "example",
      "url": "https://getkroy.com/case-studies/matter-handoff"
    },
    {
      "id": "crm-updates-salesforce",
      "title": "Updating Salesforce after a client meeting with Claude",
      "kind": "example",
      "url": "https://getkroy.com/case-studies/crm-updates-salesforce"
    },
    {
      "id": "management-accounts-pack",
      "title": "Preparing a management accounts pack with Claude and Xero",
      "kind": "example",
      "url": "https://getkroy.com/case-studies/management-accounts-pack"
    },
    {
      "id": "partner-approval-workflow",
      "title": "Partner approval for AI-prepared work",
      "kind": "example",
      "url": "https://getkroy.com/case-studies/partner-approval-workflow"
    },
    {
      "id": "proposal-preparation",
      "title": "Preparing a consulting proposal with Claude",
      "kind": "example",
      "url": "https://getkroy.com/case-studies/proposal-preparation"
    },
    {
      "id": "sharepoint-knowledge",
      "title": "Employee self-service from SharePoint with AI",
      "kind": "example",
      "url": "https://getkroy.com/case-studies/sharepoint-knowledge"
    },
    {
      "id": "public-ai-company-profile",
      "title": "A public, machine-readable company profile for AI",
      "kind": "example",
      "url": "https://getkroy.com/case-studies/public-ai-company-profile"
    },
    {
      "id": "private-erp-connector",
      "title": "A private ERP Connector with a customer-facing order status Skill",
      "kind": "example",
      "url": "https://getkroy.com/case-studies/private-erp-connector"
    },
    {
      "id": "github-release-workflow",
      "title": "A release workflow with deployment approval",
      "kind": "example",
      "url": "https://getkroy.com/case-studies/github-release-workflow"
    },
    {
      "id": "year-end-records-chase",
      "title": "Chasing year-end records with Claude, Xero and Outlook",
      "kind": "example",
      "url": "https://getkroy.com/case-studies/year-end-records-chase"
    },
    {
      "id": "vat-return-review",
      "title": "Reviewing a VAT return with Claude and Xero before submission",
      "kind": "example",
      "url": "https://getkroy.com/case-studies/vat-return-review"
    }
  ]
}