> For the complete documentation index, see [llms.txt](https://edseries-plugins.gitbook.io/p/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://edseries-plugins.gitbook.io/p/edperks/extra/host-integrations.md).

# Host Integrations

EdPerks doesn't define what a "tool" is — a **host plugin** does. EdPerks owns the perks, the roll engine, the menus and the ticket economy, and reaches each host through a small provider. Two hosts ship built-in and are auto-detected at startup; no configuration is needed to enable them beyond installing the host plugin.

For each player, EdPerks picks the **first available host whose tool the player is currently holding**. So a server running both hosts will perk a held EdDungeons sword via the EdDungeons host and a held EdTools OmniTool via the EdTools host, automatically.

***

## EdDungeons

* **Perkable tool:** the player's held EdDungeons **sword**.
* **Perk storage:** stamped directly onto the held sword item as NBT, so it survives EdDungeons' in-place lore refreshes. One perk per sword.
* **How boosts apply:** through EdDungeons' public booster API as **permanent** boosters, re-synced whenever the held sword changes. EdDungeons itself is left untouched.
* **Supported stats:** any EdDungeons economy id works as a boost key — `money`, `souls`, `essence`, `shards`, `credits`, … — plus the special keys `damage`, `attack-speed` and `enchant`. The only alias is `tool-exp` → `sword-xp`.
* **Back button:** opens the menu set by `hooks.eddungeons.return-gui` (default `sword`).
* **Ticket store:** `[buy-tickets]` charges the named EdDungeons currency via its currency API.

## EdTools

* **Perkable tool:** the player's held **OmniTool**.
* **Perk storage:** stamped onto the OmniTool **per tool mode** — each mode (crop-tool, pickaxe-tool, …) carries its own perk. Rolling only affects the active mode.
* **How boosts apply:** through EdTools' public booster API as **permanent** boosters, re-synced on join, on held-item change, and on every in-place tool swap (zone auto-swap, swap command, selector GUIs) — so the active boosters always belong to the perk of the tool currently in use.
* **Supported stats:** any EdTools economy id works as a boost key — `money`, `farm-coins`, `mine-coins`, the block currencies, … — plus `enchant` (the global enchant booster). The special key `tool-exp` boosts the **block currency bound to the perk's own tool** (e.g. `crop-tool` → `crop-blocks`), which levels that tool faster since EdTools auto-levels from it. A tool with no bound block currency gets nothing from `tool-exp`.
* **Back button:** opens the menu set by `hooks.edtools.return-gui`; if empty, opens the held tool's own menu (its `gui:`).
* **Ticket store:** `[buy-tickets]` charges the named EdTools currency if it exists.

***

## Cross-host perks

Because boosts are matched against the **active host's** economies, the same perk file behaves correctly everywhere:

| Perk                      | On EdDungeons | On EdTools                      |
| ------------------------- | ------------- | ------------------------------- |
| **Money**                 | +money        | +money                          |
| **Souls**                 | +souls        | inert (no souls)                |
| **Blacksmith** (tool-exp) | +sword XP     | +the held tool's block currency |
| **Wizard** (enchant)      | +enchant proc | +global enchant booster         |

A boost key the active host doesn't recognise is silently ignored, so you can keep a single catalogue across a network running both plugins. See [Boost Stats](/p/edperks/essential/perks/boost-stats.md).

***

{% hint style="info" %}
Want EdPerks to support a different plugin's tools? Hosts are added through the public **PerkProvider SPI** — see the [Developer docs](/p/edperks/developers/edperks-api/perk-provider.md).
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://edseries-plugins.gitbook.io/p/edperks/extra/host-integrations.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
