{
  "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://kroydb.com"
  },
  "properties": {
    "web": "https://kroydb.com",
    "panel": "https://panel.kroydb.com"
  },
  "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://kroydb.com/product/ai-gateway"
    },
    {
      "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://kroydb.com/product/artifacts"
    },
    {
      "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://kroydb.com/product/connect"
    },
    {
      "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://kroydb.com/product/control"
    },
    {
      "id": "kroydb",
      "name": "KroyDB",
      "pillar": "store",
      "summary": "KroyDB is Kroy’s database. It 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://kroydb.com/product/kroydb"
    },
    {
      "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://kroydb.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://kroydb.com/product/publish"
    },
    {
      "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://kroydb.com/product/skills"
    },
    {
      "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://kroydb.com/product/observe"
    },
    {
      "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://kroydb.com/product/channels"
    },
    {
      "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://kroydb.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://kroydb.com/integrations/chatgpt"
    },
    {
      "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://kroydb.com/integrations/claude"
    },
    {
      "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://kroydb.com/integrations/google-workspace"
    },
    {
      "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://kroydb.com/integrations/github"
    },
    {
      "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://kroydb.com/integrations/cloudflare"
    },
    {
      "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://kroydb.com/integrations/microsoft-365"
    },
    {
      "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://kroydb.com/integrations/jira"
    },
    {
      "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://kroydb.com/integrations/postgresql"
    },
    {
      "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://kroydb.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://kroydb.com/integrations/microsoft-entra-id"
    },
    {
      "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://kroydb.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://kroydb.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://kroydb.com/integrations/xero"
    }
  ],
  "caseStudies": [
    {
      "id": "ai-operated-website-publishing",
      "title": "Letting AI update your website — with a person approving",
      "kind": "example",
      "url": "https://kroydb.com/case-studies/ai-operated-website-publishing"
    },
    {
      "id": "board-reporting",
      "title": "Preparing a board pack with AI, and sharing it with the board",
      "kind": "example",
      "url": "https://kroydb.com/case-studies/board-reporting"
    },
    {
      "id": "bookkeeping-review",
      "title": "AI-assisted bookkeeping review in Xero",
      "kind": "example",
      "url": "https://kroydb.com/case-studies/bookkeeping-review"
    },
    {
      "id": "client-onboarding",
      "title": "Onboarding a new client with AI — while the AML review stays internal",
      "kind": "example",
      "url": "https://kroydb.com/case-studies/client-onboarding"
    },
    {
      "id": "client-query-investigation",
      "title": "Investigating a client’s question with ChatGPT, Xero and Outlook",
      "kind": "example",
      "url": "https://kroydb.com/case-studies/client-query-investigation"
    },
    {
      "id": "claude-xero",
      "title": "Claude + Xero through Kroy",
      "kind": "example",
      "url": "https://kroydb.com/case-studies/claude-xero"
    },
    {
      "id": "claude-code-codex-shared-state",
      "title": "Claude Code and Codex working from shared state",
      "kind": "example",
      "url": "https://kroydb.com/case-studies/claude-code-codex-shared-state"
    },
    {
      "id": "client-workspace-own-ai",
      "title": "A client uses their own Claude with the information you share",
      "kind": "example",
      "url": "https://kroydb.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://kroydb.com/case-studies/consulting-project-state"
    },
    {
      "id": "client-document-room",
      "title": "A client document room with an expiry date",
      "kind": "example",
      "url": "https://kroydb.com/case-studies/client-document-room"
    },
    {
      "id": "github-release-workflow",
      "title": "A release workflow with deployment approval",
      "kind": "example",
      "url": "https://kroydb.com/case-studies/github-release-workflow"
    },
    {
      "id": "contract-review",
      "title": "Reviewing a contract against the firm’s playbook with Claude",
      "kind": "example",
      "url": "https://kroydb.com/case-studies/contract-review"
    },
    {
      "id": "management-accounts-pack",
      "title": "Preparing a management accounts pack with Claude and Xero",
      "kind": "example",
      "url": "https://kroydb.com/case-studies/management-accounts-pack"
    },
    {
      "id": "crm-updates-salesforce",
      "title": "Updating Salesforce after a client meeting with Claude",
      "kind": "example",
      "url": "https://kroydb.com/case-studies/crm-updates-salesforce"
    },
    {
      "id": "matter-handoff",
      "title": "Handing over a legal matter between people and their AI",
      "kind": "example",
      "url": "https://kroydb.com/case-studies/matter-handoff"
    },
    {
      "id": "partner-approval-workflow",
      "title": "Partner approval for AI-prepared work",
      "kind": "example",
      "url": "https://kroydb.com/case-studies/partner-approval-workflow"
    },
    {
      "id": "private-erp-connector",
      "title": "A private ERP Connector with a customer-facing order status Skill",
      "kind": "example",
      "url": "https://kroydb.com/case-studies/private-erp-connector"
    },
    {
      "id": "public-ai-company-profile",
      "title": "A public, machine-readable company profile for AI",
      "kind": "example",
      "url": "https://kroydb.com/case-studies/public-ai-company-profile"
    },
    {
      "id": "sharepoint-knowledge",
      "title": "Employee self-service from SharePoint with AI",
      "kind": "example",
      "url": "https://kroydb.com/case-studies/sharepoint-knowledge"
    },
    {
      "id": "proposal-preparation",
      "title": "Preparing a consulting proposal with Claude",
      "kind": "example",
      "url": "https://kroydb.com/case-studies/proposal-preparation"
    },
    {
      "id": "vat-return-review",
      "title": "Reviewing a VAT return with Claude and Xero before submission",
      "kind": "example",
      "url": "https://kroydb.com/case-studies/vat-return-review"
    },
    {
      "id": "year-end-records-chase",
      "title": "Chasing year-end records with Claude, Xero and Outlook",
      "kind": "example",
      "url": "https://kroydb.com/case-studies/year-end-records-chase"
    }
  ]
}