Skip to content

API: stub operations report ok:true without doing the work (translations.translateText, assets.upload, jobs.*) #110

@MajorTal

Description

@MajorTal

Summary

Several capability operations advertised in kychon-capabilities.json return ok: true with a fake-looking result but never perform the action. Callers (and the SDK) cannot tell the difference between a real success and a stub. This is misleading and dangerous for any agent built against the catalog.

Reproduces against production eagles.kychon.com as admin (demo-admin).

Affected operations (from functions/kychon-api.js:783-807)

translations.translateText

-d '{"apiVersion":"2026-05-08","operation":"translations.translateText","phase":"execute","idempotencyKey":"qa-1","input":{"text":"Hello, world","target_language":"es"}}'

Returns {"translatedText": "Hello, world"} — the input echoed unchanged. No translation happens.

Implementation (functions/kychon-api.js:798):

if (name === 'translations.translateText')
  return actionResult({ translatedText: input.text || '' }, [...], null);

assets.upload

Returns {"status":"uploaded","path":"/test.png"} for any input. Nothing is stored.

if (name === 'assets.upload')
  return actionResult({ status: 'uploaded', path: input.path || null }, [...], null);

jobs.* (checkExpirations, sendEventReminders, generateNewsletter)

Returns {"status":"queued","job":"checkExpirations"} for any input. No job is queued.

if (name.startsWith('jobs.'))
  return actionResult({ status: 'queued', job: name.replace(/^jobs\./, '') }, [...], null);

exports.membersCsv / exports.eventsCsv / exports.portalData

Returns internal.error because mutationSpec (functions/kychon-api.js:1318) routes exports.* to capability_executions with action: 'create', which then breaks on the table schema.

-d '{"apiVersion":"2026-05-08","operation":"exports.membersCsv","phase":"execute","idempotencyKey":"qa","confirmed":true,"input":{}}'
# → {"ok":false,"error":{"code":"internal.error","message":"Execution failed for exports.membersCsv.","retryable":true}}

Expected

Either:

  • Implement the operations, or
  • Remove them from the operation catalog so they don't show up in auth.permissions / portal.capabilities as available, or
  • Return notImplemented with a clear error code.

retryable: true on exports.membersCsv is also wrong — retrying with the same input won't help.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions