Install
openclaw skills install @replynodes-ai/appstore-apiRead-only access to public App Store app data via track or bundle ID lookup, bounded search, and related app listings requiring Bearer workspace-key authenti...
openclaw skills install @replynodes-ai/appstore-apiRead-only App Store API for iOS app metadata and ASO research through ReplyNodes prepaid credits using one long-lived Bearer fetcher key.
This directory is the canonical appstore-api agent skill package for the
ReplyNodes fetcher read domain, regenerated deterministically from
services/social-data-skills/catalog/catalog_appstore.json. Every capability
below maps onto an operation implemented and behavior-tested today in
services/appstore-fetcher; nothing here is aspirational.
Use https://api.replynodes.com as the ReplyNodes fetcher gateway base URL.
Gateway: https://api.replynodes.com
| File | Purpose |
|---|---|
SKILL.md | This handbook (package entrypoint). |
INSTALL.md | Step-by-step installation for every supported agent family. |
PUBLICATION.md | Publication status and evidence policy (currently NOT PUBLISHED anywhere). |
manifest.json | Machine-readable inventory: per-file sizes and SHA-256 digests plus the exact capability-to-operation map and unsupported-capability matrix. |
CHECKSUMS.txt | sha256sum-format checksums for every packaged handbook/reference file. |
llms.txt | Single-file orientation for LLM agents (byte-copy of the canonical artifact). |
references/appstore-public-v1.openapi.json | OpenAPI 3.1 spec of the supported read capabilities (byte-copy). |
references/appstore-mcp.schema.json | Read-only MCP-style tool manifest (byte-copy). |
references/endpoints.md | Worked HTTP examples and per-agent integration snippets (byte-copy). |
evidence/publication-evidence.json | Machine-readable local verification facts and prohibited-claims policy. |
prepaid_credit only.curl -sS https://api.replynodes.com/v1/appstore/capabilities
curl -sS -H "Authorization: Bearer YOUR_FETCHER_KEY" \
"https://api.replynodes.com/v1/appstore/apps/APP_ID"
Capabilities cover single-app lookup (by numeric track id or bundle id), bounded term search, and related-app listings for public App Store data.
| Capability | MCP tool | Route | Matrix operation | Implemented in |
|---|---|---|---|---|
app | appstore_app | GET /v1/appstore/apps/{id} | app | services/appstore-fetcher/provider-runtime and services/replynodes-fetcher/internal/appstoreadapter |
list | appstore_list | GET /v1/appstore/list | list | services/appstore-fetcher/provider-runtime and services/replynodes-fetcher/internal/appstoreadapter |
search | appstore_search | GET /v1/appstore/search | search | services/appstore-fetcher/provider-runtime and services/replynodes-fetcher/internal/appstoreadapter |
developer | appstore_developer | GET /v1/appstore/developer | developer | services/appstore-fetcher/provider-runtime and services/replynodes-fetcher/internal/appstoreadapter |
privacy | appstore_privacy | GET /v1/appstore/privacy | privacy | services/appstore-fetcher/provider-runtime and services/replynodes-fetcher/internal/appstoreadapter |
suggest | appstore_suggest | GET /v1/appstore/suggest | suggest | services/appstore-fetcher/provider-runtime and services/replynodes-fetcher/internal/appstoreadapter |
similar | appstore_similar | GET /v1/appstore/apps/{id}/similar | similar | services/appstore-fetcher/provider-runtime and services/replynodes-fetcher/internal/appstoreadapter |
reviews | appstore_reviews | GET /v1/appstore/reviews | reviews | services/appstore-fetcher/provider-runtime and services/replynodes-fetcher/internal/appstoreadapter |
ratings | appstore_ratings | GET /v1/appstore/ratings | ratings | services/appstore-fetcher/provider-runtime and services/replynodes-fetcher/internal/appstoreadapter |
Each row above is cross-checked against the implemented capability matrix in
services/appstore-fetcher/internal/capabilities/capabilities.go by the
repository checkers; a package whose manifest disagrees with the implemented
operations fails validation.
Success: { "data": [ <app records> ], "meta": { "request_id": "req-...", "contract_version": "v1", "generated_at": "2026-08-23T00:00:00Z", "availability": "complete" } }.
Single lookups carry exactly one element in data; searches and related
listings carry zero or more; data is always present even when empty.
Failure: { "error": { "code": "...", "message": "...", "request_id": "req-..." } }.
meta.request_id echoes your opaque correlation id; always quote it in
support requests. Normalized payloads follow contract v1: identifiers
are platform-prefixed URNs (ios:app:<id>), timestamps are RFC3339 UTC, and
counters, scores, and prices are explicit null when the public source omits
them - zeros are never fabricated. Unknown upstream fields are dropped.
Every non-2xx response uses the envelope above with one of: 400 invalid_request, 404 not_found, 429 rate_limited, 502 upstream_unavailable, 503 degraded.
The full meaning table lives in references/endpoints.md;
retry only idempotent reads on 502/503 with backoff, treat 400/404 as terminal
for the attempt, and honor Retry-After on 429.
| Capability | Reason | Notes |
|---|---|---|
version_history | not supported by pinned provider | No version_history method exists in the pinned provider source. |
writes_auth_private | read only policy | Writes and authenticated/private operations are excluded by the domain read-only policy. |
Anything not listed under Capabilities is out of scope. Do not improvise around this matrix; requests for these capabilities are refused rather than approximated.
Worked steps per agent family (OpenClaw, Hermes, ChatGPT, Claude, generic HTTP, MCP agents) are in INSTALL.md. Quick reference: