Skip to content

feat: add native Xquik public search toolset - #986

Open
kriptoburak wants to merge 1 commit into
crestalnetwork:mainfrom
kriptoburak:codex/add-xquik-toolset
Open

feat: add native Xquik public search toolset#986
kriptoburak wants to merge 1 commit into
crestalnetwork:mainfrom
kriptoburak:codex/add-xquik-toolset

Conversation

@kriptoburak

@kriptoburak kriptoburak commented Jun 18, 2026

Copy link
Copy Markdown

Description

Adds a native Xquik toolset to IntentKit’s current class-derived catalog. xquik_search_tweets searches public X posts by query, post ID, or status URL through the documented Xquik REST contract.

The integration:

  • Declares repository-native ToolsetMeta catalog metadata and an icon.
  • Uses the hosted XQUIK_API_KEY configuration pattern already used by other data tools.
  • Sends the documented GET /api/v1/x/tweets/search query and authentication fields.
  • Bounds each call to 200 posts and preserves cursor pagination.
  • Validates required post and pagination fields while retaining additional response fields.
  • Converts HTTP, transport, JSON, and malformed-response failures into stable tool errors.
  • Keeps upstream response bodies and connection details out of agent-visible errors.
  • Includes focused tests for metadata, discovery, availability, input bounds, routing, response validation, and failure handling.

The branch is rebuilt from current main. It uses the new code-derived catalog and does not restore the retired schema.json system.

Independent Test Fix

Two OpenRouter provider-routing tests constructed the real client without supplying a test API key. They passed only on machines with OPENROUTER_API_KEY configured. The tests now set a local placeholder through monkeypatch, keeping the suite independent of developer credentials.

Type of Change

  • Bugfix
  • New Feature
  • Improvement
  • Documentation Update

Validation

  • ./lint.sh ci
  • uv run pytest -m "not bdd and not integration" -q: 1,648 passed, 113 deselected
  • Focused Xquik, toolset-contract, and OpenRouter tests: 64 passed
  • Ruff format and lint checks
  • BasedPyright: 0 errors, 0 warnings, 0 notes
  • Import-layer contract: kept
  • Dependency declarations: no issues
  • Xquik OpenAPI contract verified for route, query fields, response fields, cursor pagination, and x-api-key authentication
  • git diff --check

Xquik is an independent third-party service. Not affiliated with X Corp. "Twitter" and "X" are trademarks of X Corp.

Related Issue

N/A

@kriptoburak kriptoburak changed the title feat: add Xquik toolset feat: add a validated Xquik search toolset Jul 18, 2026
@kriptoburak
kriptoburak force-pushed the codex/add-xquik-toolset branch from a77f25c to 504facb Compare July 19, 2026 20:31
Register the current class-derived catalog metadata, authenticated search client, typed response validation, and focused regression coverage.

Keep OpenRouter provider tests hermetic by setting their test API key explicitly.
@kriptoburak
kriptoburak force-pushed the codex/add-xquik-toolset branch from 504facb to de8663c Compare August 12, 2026 21:24
@kriptoburak kriptoburak changed the title feat: add a validated Xquik search toolset feat: add native Xquik public search toolset Aug 12, 2026
@kriptoburak

Copy link
Copy Markdown
Author

Rebuilt this branch from current main at d4267e9. The implementation now follows IntentKit’s class-derived ToolsetMeta catalog and removes the retired schema.json approach.

Current head: de8663c

Validation on this head is green: ./lint.sh ci; 1,648 CI-selected tests; 64 focused Xquik, catalog, and OpenRouter tests; BasedPyright; import-layer checks; and dependency checks. There are no maintainer review threads.

The commit has a valid local GPG signature from Xquik support@xquik.com. GitHub may display no_user because that signing email is not linked to a GitHub account, so I am not claiming GitHub identity verification.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant