Proposal: give Obol agents controlled X publishing via MCP
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 30/100
Direzione di ricerca
Inizia tracciando gli entry point di obol agent init e obol agent sync, quindi esamina la riconciliazione di Agent e i pattern esistenti dei server MCP x402. L’issue non indica file, quindi mappa questi flussi prima dell’implementazione; il lavoro è completo quando l’account X condiviso è autenticato senza credenziali dell’agent-pod, la configurazione MCP sopravvive a sync e alla riconciliazione, e vengono testati config, il wiring di Secret, policy e il comportamento di audit.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
Give Obol Stack agents a controlled way to publish to X through a stack-managed MCP service, so the default agent and CRD-created sub-agents can promote their services without each pod holding raw X credentials.
Background
X now documents a hosted MCP endpoint, and Hermes supports MCP servers. The hosted X MCP is useful for authenticated X API access and read/discovery workflows, but the documented capability set appears focused on reads/search/bookmarks/trends/news/Articles rather than ordinary Post creation. X's REST API still exposes POST /2/tweets, and Hermes also documents an xurl-based X skill for posting.
The stack already has the pieces we need:
- Hermes runtime config generation for the master agent.
- Agent CRD provisioning for durable sub-agents.
- Per-agent Secret/env injection through
hermes-env. - Go MCP server patterns in the existing x402 MCP implementation.
- x402 and storefront flows that make agent self-promotion valuable.
Proposal
Add a stack-managed x-publisher MCP service that exposes a deliberately small publishing surface:
whoami: return the authenticated X account identity.draft_post: produce/validate a post draft without publishing.publish_post: publish a text post after policy checks.reply_to_post: reply to an existing post after policy checks.delete_own_post: delete a post previously created by the service.
The service owns X OAuth credentials centrally and calls the X API on behalf of agents. Hermes agents only see the MCP tools.
Suggested Architecture
-
Add an operator command such as
obol social x authorobol x auth.- Performs OAuth for the selected X account.
- Requests only the scopes needed for posting, for example
tweet.read,tweet.write,users.read, andoffline.access. - Stores refresh/access material in a Kubernetes Secret owned by the stack.
-
Add a Deployment/Service for
x-publisher.- Runs in a dedicated namespace or the existing platform namespace.
- Reads X credentials from the Secret.
- Serves Streamable HTTP MCP internally.
- Emits structured audit logs for every draft/publish/delete action.
-
Render the MCP server into Hermes configs.
- Master Hermes config gets the MCP server during
obol agent init/obol agent sync. - CRD Agent-rendered Hermes configs get the same MCP server by default, or behind a spec flag if we want opt-in.
Example shape:
mcp_servers: x_publisher: url: http://x-publisher.social.svc.cluster.local/mcp tools: include: - whoami - draft_post - publish_post - reply_to_post - delete_own_post resources: false prompts: false - Master Hermes config gets the MCP server during
-
Add policy gates before publishing.
- Per-agent rate limits, for example posts/hour and posts/day.
- Duplicate/repost suppression.
- Character limit and URL/card validation.
- Optional human approval mode: agents can draft freely, but
publish_postrequires operator approval. - Configurable account modes: one shared operator account, per-agent account, or disabled.
-
Add a self-promotion skill/profile guidance.
- Teach agents to announce their available paid services with pricing and endpoint links.
- Keep claims factual and derived from ServiceOffer/status metadata.
- Never expose tokens, private endpoints, local hostnames, or raw bearer values.
MVP
A minimal shippable version could be:
- One shared X account.
- Text-only posts.
draft_post,publish_post, andwhoami.- Default
draft_only=trueuntil the operator flipspublish_enabled=true. - Per-agent daily rate limit.
- Audit logs and unit tests around policy checks.
Open Questions
- Should publishing be enabled for every agent by default, or only for agents that opt in through
spec.social.x.enabled? - Should sub-agents be allowed to publish directly, or only submit drafts to the master agent/operator?
- Should X publishing be sold as a paid MCP tool too, or remain an internal operator capability?
- Do we want X's hosted MCP included for read/search workflows separately from this publishing service?
Acceptance Criteria
- An operator can authenticate one X account without copying credentials into agent pods.
- The default Hermes agent can call
draft_postandpublish_postthrough MCP. - A CRD-created Hermes sub-agent can use the same MCP tools without direct X token access.
- Publishing actions are rate-limited and logged.
obol agent syncand Agent reconciliation preserve the MCP configuration.- Tests cover config rendering, Secret wiring, and publish policy behavior.
- Lingua principale
- Go
- Stelle
- 11
- Fork
- 1
- Merge medio
- 1h 20m
- PR unite (30g)
- 39
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di ObolNetwork/obol-stack
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
ObolNetwork/obol-stack#612 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 30/100
ObolNetwork/obol-stack#829 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 3/5 1-2 giorni Idoneità per principianti 72/100
ObolNetwork/obol-stack#828 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
ObolNetwork/obol-stack#821 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
ObolNetwork/obol-stack#807 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di ObolNetwork/obol-stack
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
duplication
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
openvibely/openvibely#1443 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 60/100
canonical/service-mesh#845 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 80/100
keyxmakerx/Chronicle#1179 ·
I maintainer di solito rispondono entro 1 giorno