PHPackages                             neosidekick/lawnmower - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. neosidekick/lawnmower

ActiveNeos-package[Utility &amp; Helpers](/categories/utility)

neosidekick/lawnmower
=====================

Your versatile toolchain for connecting AI Agents to Neos CMS

101[1 issues](https://github.com/NEOSidekick/NEOSidekick.Lawnmower/issues)PHP

Since Jun 18Pushed 10mo ago1 watchersCompare

[ Source](https://github.com/NEOSidekick/NEOSidekick.Lawnmower)[ Packagist](https://packagist.org/packages/neosidekick/lawnmower)[ RSS](/packages/neosidekick-lawnmower/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

NEOSidekick Lawnmower: your versatile toolchain for connecting AI Agents to Neos CMS
====================================================================================

[](#neosidekick-lawnmower-your-versatile-toolchain-for-connecting-ai-agents-to-neos-cms)

**THIS PACKAGE IS A DEMO AND NOT (YET) READY FOR PRODUCTION-USE**

For our talk at the Neos Conference 2025, we came up with this package to experiment with connecting AI Agents to Neos CMS. It helps, on the one hand to send webhooks for content changes in Neos CMS to AI Agents, and on the other hand to provide endpoints for AI Agents to interact with Neos CMS.

[More information](https://neosidekick.com/ai-agents-talk)

Installation
------------

[](#installation)

```
composer require neosidekick/lawnmower
```

Content Repository Webhooks
---------------------------

[](#content-repository-webhooks)

### Authentication

[](#authentication)

Important: right now there is no authentication available for webhooks as it is a draft project. Feel free to come up with suggestions and PRs!

Tool Endpoints
--------------

[](#tool-endpoints)

### Authentication

[](#authentication-1)

To use the tool endpoints, you need to create a hash token with the role `NEOSidekick.Lawnmower:TokenEditor`. This can be done using the command line interface:

```
./flow hashtoken:createhashtoken --roleNames NEOSidekick.Lawnmower:TokenEditor
```

Feel free to adjust the privileges of this role to your needs.

### General Endpoints

[](#general-endpoints)

#### List tools

[](#list-tools)

```
GET /neosidekick/lawnmower/tools/list
Content-Type: application/json
Authorization: Bearer here-comes-your-bearer-token

{}
```

#### Ping

[](#ping)

```
POST /neosidekick/lawnmower/tools/call
Content-Type: application/json
Authorization: Bearer here-comes-your-bearer-token

{
  "name": "Ping",
  "arguments": {
    "param1": "Hello",
    "param2": "World"
  }
}
```

#### Get Sitemap

[](#get-sitemap)

```
POST /neosidekick/lawnmower/tools/call
Content-Type: application/json
Authorization: Bearer 4FGl4St6UIK6lsFi3iliZrB6dv8Sbk47IitEuusUs1PV9snss0MkAKOiYnVNGt1y

{
  "name": "Sitemap",
  "arguments": {
    "dimension": {
      "language": ["en"]
    }
  }
}
```

### Workspace

[](#workspace)

#### Create a new workspace

[](#create-a-new-workspace)

```
POST /neosidekick/lawnmower/tools/call
Content-Type: application/json
Authorization: Bearer here-comes-your-bearer-token

{
  "name": "CreateWorkspace",
  "arguments": {
    "workspaceName": "my-funny-workspace"
  }
}
```

### Publish and Delete Workspace

[](#publish-and-delete-workspace)

```
POST /neosidekick/lawnmower/tools/call
Content-Type: application/json
Authorization: Bearer here-comes-your-bearer-token

{
  "name": "PublishAndDeleteWorkspace",
  "arguments": {
    "workspaceName": "my-funny-workspace"
  }
}
```

#### Discard and Delete Workspace

[](#discard-and-delete-workspace)

```
POST /neosidekick/lawnmower/tools/call
Content-Type: application/json
Authorization: Bearer here-comes-your-bearer-token

{
  "name": "DiscardAndDeleteWorkspace",
  "arguments": {
    "workspaceName": "my-funny-workspace"
  }
}
```

### Nodes

[](#nodes)

#### Update Node Properties

[](#update-node-properties)

```
POST /neosidekick/lawnmower/tools/call
Content-Type: application/json
Authorization: Bearer here-comes-your-bearer-token

{
  "name": "UpdateNodeProperties",
  "arguments": {
    "nodeContextPath": {
      "nodePath": "/sites/site/main/node-blj8xfx5l21m9",
      "workspaceName": "my-funny-workspace",
      "dimensions": {
          "language": [
            "en_US"
          ]
      }
    },
    "updatedProperties": {
      "text": "New text"
    }
  }
}
```

#### Search in Nodes

[](#search-in-nodes)

```
POST /neosidekick/lawnmower/tools/call
Content-Type: application/json
Authorization: Bearer here-comes-your-bearer-token

{
  "name": "SearchInNodes",
  "arguments": {
    "term": "John Doe"
  }
}
```

###  Health Score

12

—

LowBetter than 1% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity3

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity14

Early-stage or recently created project

 Bus Factor1

Top contributor holds 73.9% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/c898f86932821ebd9add02d4f01864bd4804e1a620083fbc5951af0bb3e9c850?d=identicon)[codeq](/maintainers/codeq)

---

Top Contributors

[![gradinarufelix](https://avatars.githubusercontent.com/u/4405087?v=4)](https://github.com/gradinarufelix "gradinarufelix (17 commits)")[![rolandschuetz](https://avatars.githubusercontent.com/u/735982?v=4)](https://github.com/rolandschuetz "rolandschuetz (6 commits)")

---

Tags

ai-agentsgenerative-aineos-cms

### Embed Badge

![Health badge](/badges/neosidekick-lawnmower/health.svg)

```
[![Health](https://phpackages.com/badges/neosidekick-lawnmower/health.svg)](https://phpackages.com/packages/neosidekick-lawnmower)
```

###  Alternatives

[ivanovsaleksejs/num-to-text

Converts numbers or prices to text representation in various languages. For example, 437605 becomes "four hundred thirty seven thousand six hundred five". Price class for displaying prices with currencies is also available.

2015.9k](/packages/ivanovsaleksejs-num-to-text)[vildanbina/composer-upgrader

Effortlessly upgrade all Composer dependencies to their latest versions with a single command.

364.7k1](/packages/vildanbina-composer-upgrader)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
