---
title: "MGS1102: this review provider does not implement that op"
description: Fires when a review surface needs one of the four reserved provider ops and the wired spell does not export it, so the capability is reported as missing rather than silently doing nothing.
tags: [MGS1102, capability, review, provider, spell, github, publish]
---

# MGS1102: this review provider does not implement that op

magus called one of the four reserved review ops and the wired spell does not
export it.

```text
[MGS1102] review provider: publish_review is not implemented by this spell, so
nothing was sent
```

## Why

A review provider is a spell exporting up to four reserved function names -
`find_review`, `review_threads`, `publish_review`, `reply_review`. A spell may
implement a **subset**, and that is stated in the contract rather than tolerated:
a host with no comment API can still take a review body, so a missing op means
that provider lacks the capability, not that the spell is broken.

What matters is that a missing op means two different things depending on the
direction of the call, and magus treats them differently:

- **On a READ** - `review_threads` against a host with no comment API - an absent
  op answers nothing, and nothing is the truth. The surface renders no
  conversation and says why.
- **On a WRITE** - `publish_review` - an absent op answering nothing would be
  read as success. The caller marks every draft published, publish only ever
  considers unpublished drafts, and the remarks are gone permanently. So a write
  to an op nobody implemented is an **error**, and this is that error.

That asymmetry is the whole reason the code exists. A tolerated silence is safe
for a question and unsafe for an act.

## Fix

- **Check which spell is wired.** `magus\review.provider(...)` in your magusfile
  names it; the ops it exports are what magus can call.
- **Export the op**, if the host supports it. See
  [Authoring spells](../../../guides/authoring-spells.md) for the shape of a
  provider op and the parameters each reserved name receives.
- **Use a different surface for that act.** Where a provider cannot publish,
  magus will not fabricate a path that appears to - the remarks stay drafts and
  stay yours.

## See also

- [MGS1101](MGS1101.md) - a VCS backend that cannot answer a lookup.
- [MGS1103](MGS1103.md) - a provider that does not say who opened a review.
- [Review](../../../concepts/review.md) - the four ops and what each answers.
