matrix-openapi-skill

Operate Matrix Client-Server API through UXC with a curated OpenAPI schema, bearer-token auth, and homeserver-aware messaging guardrails.

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "matrix-openapi-skill" with this command: npx skills add jolestar/matrix-openapi-skill

Matrix Client-Server API Skill

Use this skill to run Matrix Client-Server operations through uxc + OpenAPI.

Reuse the uxc skill for shared execution, auth, and error-handling guidance.

Prerequisites

  • uxc is installed and available in PATH.
  • Network access to your Matrix homeserver's client-server base URL, usually https://<homeserver>/_matrix/client/v3.
  • Access to the curated OpenAPI schema URL:
    • https://raw.githubusercontent.com/holon-run/uxc/main/skills/matrix-openapi-skill/references/matrix-client-server.openapi.json
  • A Matrix access token for the target homeserver.

Scope

This skill covers a practical request/response Matrix surface:

  • token owner lookup
  • joined room discovery
  • room state lookup
  • /sync polling reads, including daemon-backed poll subscribe
  • user profile and presence lookup
  • room message sends

This skill does not cover:

  • login, SSO, device registration, or generic token acquisition flows
  • appservice, federation, or bot framework abstractions
  • webhook or long-running event receiver runtime
  • full Matrix spec coverage

Homeserver Base URL

Matrix is homeserver-specific. The endpoint you link must include the Matrix client-server base path:

  • typical form: https://<homeserver>/_matrix/client/v3
  • example form: https://matrix.org/_matrix/client/v3

Do not link only the homeserver origin without /_matrix/client/v3.

Authentication

Matrix Client-Server API uses Authorization: Bearer <access_token>.

Preferred path for OAuth-aware homeservers:

uxc auth oauth start matrix-oauth \
  --endpoint https://matrix.org/_matrix/client/v3 \
  --redirect-uri http://127.0.0.1:8788/callback \
  --client-id <client_id>

uxc auth oauth complete matrix-oauth \
  --session-id <session_id> \
  --authorization-response 'http://127.0.0.1:8788/callback?code=...'

uxc auth binding add \
  --id matrix-oauth \
  --host matrix.org \
  --path-prefix /_matrix/client/v3 \
  --scheme https \
  --credential matrix-oauth \
  --priority 100

Fallback path when you already have an access token:

uxc auth credential set matrix-access \
  --auth-type bearer \
  --secret-env MATRIX_ACCESS_TOKEN

uxc auth binding add \
  --id matrix-access \
  --host matrix.org \
  --path-prefix /_matrix/client/v3 \
  --scheme https \
  --credential matrix-access \
  --priority 100

If your homeserver is not matrix.org, replace the host while keeping the same path prefix. Validate the active mapping when auth looks wrong:

uxc auth binding match https://matrix.org/_matrix/client/v3

Notes:

  • uxc auth oauth works only for homeservers that expose Matrix OAuth metadata.
  • Prefer a loopback redirect URI on an uncommon high port, such as http://127.0.0.1:8788/callback, to avoid conflicts with local services on common ports.
  • Legacy Matrix login and SSO fallback flows are not covered by this skill yet.

Core Workflow

  1. Use the fixed link command by default:

    • command -v matrix-openapi-cli
    • If missing, create it: uxc link matrix-openapi-cli https://matrix.org/_matrix/client/v3 --schema-url https://raw.githubusercontent.com/holon-run/uxc/main/skills/matrix-openapi-skill/references/matrix-client-server.openapi.json
    • matrix-openapi-cli -h
  2. Inspect operation schema first:

    • matrix-openapi-cli get:/account/whoami -h
    • matrix-openapi-cli get:/sync -h
    • matrix-openapi-cli put:/rooms/{roomId}/send/{eventType}/{txnId} -h
  3. Prefer read validation before writes:

    • matrix-openapi-cli get:/account/whoami
    • matrix-openapi-cli get:/joined_rooms
    • matrix-openapi-cli get:/rooms/{roomId}/state roomId=!abc123:example.org
  4. Execute with key/value or positional JSON:

    • key/value: matrix-openapi-cli get:/sync timeout=30000 filter={"room":{"timeline":{"limit":10}}}
    • positional JSON: matrix-openapi-cli put:/rooms/{roomId}/send/{eventType}/{txnId} '{"roomId":"!abc123:example.org","eventType":"m.room.message","txnId":"uxc-001","msgtype":"m.text","body":"Hello from UXC"}'
  5. For background /sync polling, call uxc subscribe start directly against the homeserver base URL:

    • uxc subscribe start https://matrix.org/_matrix/client/v3 get:/sync --auth matrix-oauth --mode poll --poll-config '{"interval_secs":2,"extract_items_pointer":"/rooms/join/!abc123:example.org/timeline/events","missing_extract_items_pointer_as_empty":true,"request_cursor_arg":"since","response_cursor_pointer":"/next_batch","checkpoint_strategy":{"type":"cursor_only"}}' --sink file:$HOME/.uxc/subscriptions/matrix-sync.ndjson timeout=1000 'filter={"room":{"rooms":["!abc123:example.org"],"timeline":{"limit":5}}}'

Operation Groups

Session / Discovery

  • get:/account/whoami
  • get:/joined_rooms
  • get:/sync

Room Reads

  • get:/rooms/{roomId}/state
  • get:/rooms/{roomId}/state/{eventType}/{stateKey}

User Reads

  • get:/profile/{userId}
  • get:/presence/{userId}/status

Messaging

  • put:/rooms/{roomId}/send/{eventType}/{txnId}

Guardrails

  • Keep automation on the JSON output envelope; do not use --text.
  • Parse stable fields first: ok, kind, protocol, data, error.
  • get:/sync works both as a normal polling/read call and as a validated daemon-backed poll subscription when invoked through uxc subscribe start.
  • For room-scoped /sync subscriptions, set missing_extract_items_pointer_as_empty=true so sparse responses without new room timeline events are treated as an empty batch instead of a fatal error.
  • put:/rooms/{roomId}/send/{eventType}/{txnId} is high-risk and should default to m.room.message text sends unless the user explicitly asks for another event type.
  • Reuse a unique txnId per send attempt to avoid accidental duplicates.
  • Many homeservers restrict presence visibility and room state/event access based on membership and server policy; auth success does not imply every room or profile read will succeed.
  • matrix-openapi-cli <operation> ... is equivalent to uxc <homeserver_client_base> --schema-url <matrix_openapi_schema> <operation> ....

References

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

Block Company

Block Company develops financial technology including Square payment terminals, Cash App peer-to-peer payments, and Bitcoin integration under Jack Dorsey's l...

Registry SourceRecently Updated
Coding

Browser Harness

用 LLM 友好的方式控制用户已登录的真实 Chrome(CDP)。一行命令在当前标签页跑 JS、点击、滚动、截图、读 DOM、填表、上传文件——共享 cookie/session/登录态,跨 Python 与 TypeScript Agent 操作同一个浏览器。基于 browser-use/browser-ha...

Registry SourceRecently Updated
Coding

Config Drift Scanner

Detect configuration drift across environments (dev, staging, production). Compare config files, environment variables, feature flags, and secrets across dep...

Registry SourceRecently Updated
Coding

API Gateway

Connect to 100+ APIs (Google Workspace, Microsoft 365, GitHub, Notion, Slack, Airtable, HubSpot, etc.) with managed OAuth. Use this skill when users want to...

Registry SourceRecently Updated
73.1K369byungkyu