Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
APINOA_API_KEYYesRequired for every data call. Create a key under Dashboard > API keys at apinoa.com.
APINOA_BASE_URLNoBase URL for the apinoa API gateway.https://gateway.apinoa.com

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
search_docsA

Find how to do a task with apinoa: the matching operations as you call them in execute (e.g. apinoa.tiktok.posts({ hashtag })), every parameter, the cost per call, and the fields of what they return. Free: it calls nothing. Use it before writing code. Pass words ('tiktok hashtag videos', 'instagram reels of an account', 'amazon product reviews'), a platform, or a type name ('Post'); with neither you get the list of every operation.

Platforms: aliexpress, amazon, instagram, linkedin, reddit, shopify, threads, tiktok, tiktokshop, walmart, x, youtube.

executeA

Run TypeScript that calls the apinoa API, and get back only what it prints or returns. Use it for every data task, from one call to thousands: fan out over accounts or posts, follow pages, then filter, count, rank and average in the code, so raw API answers never fill the conversation.

The code is the body of an async function: use await, and return a small result (aggregate, slice, pick the fields you need). In scope:

  • apinoa..(params): one API call, returns the answer's data; throws ApinoaError (code, status) on a refusal. search_docs lists the parameters and the fields returned.

  • pages(op, params, { maxPages }): every item of a paged operation, following cursors (default 5 pages).

  • many(items, fn, { concurrency }): fn over every item, 8 at a time by default; a failed item comes back undefined.

  • store.save(name, value) / store.load(name) / store.list() / store.saveFile(name, base64): data kept on this machine between runs.

  • usage: { calls, units, budget } of this run. The code is type-checked before it runs: an operation, parameter or field that does not exist fails there, before anything is billed. Each call costs units (1 unit = $0.001, per search_docs); the run stops once budget_units are spent. Answers are cached for 10 minutes, so re-running after a fix costs nothing for calls already made. Only the API is reachable from the code.

Example: const page = await apinoa.tiktok.posts({ hashtag: "glassskin", limit: 50 }); const authors = [...new Set(page.items.map((p) => p.author.handle))].slice(0, 10); const recent = await many(authors, (u) => apinoa.tiktok.posts({ username: u, limit: 30 })); return authors.map((u, i) => { const views = (recent[i]?.items ?? []).map((p) => p.metrics?.views ?? 0).sort((a, b) => a - b); return { author: u, median: views[Math.floor(views.length / 2)] ?? null }; });

Operations (call search_docs with words or a platform for parameters, costs and the fields returned):

  • apinoa.aliexpress: search, browse, categories, imageSearch, product, shipping

  • apinoa.amazon: search, imageSearch, browse, categories, product

  • apinoa.instagram: profile, post, posts, comments, group, groups

  • apinoa.linkedin: profile, post, posts, comments, group, job, jobs

  • apinoa.reddit: profile, profiles, post, posts, comments, group, groups

  • apinoa.shopify: search, imageSearch, catalog, product, reviews

  • apinoa.threads: profile, post, posts, comments

  • apinoa.tiktok: profile, profiles, post, posts, comments, group, groups, media

  • apinoa.tiktokshop: search, browse, categories, catalog, product, reviews

  • apinoa.walmart: search, browse, categories, product, reviews

  • apinoa.x: profile, post, posts, group

  • apinoa.youtube: profile, profiles, post, posts, comments, groups

translate_imageA

Replace the text inside a product image with a translation, keeping fonts, colours and layout. Give the image as a URL. Returns the translated image.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.1/5.0

Scored across 3 tools

Disambiguation4/5

The three tools have clearly separate roles: search_docs is a free, non-billing documentation lookup, execute runs TypeScript against the API, and translate_image rewrites text in an image. The one soft spot is translate_image, which is a single concrete operation living outside the execute/search_docs pattern, so an agent may briefly wonder whether it is also reachable as an apinoa.* operation.

Naming Consistency4/5

All three names are snake_case and verb-first (search_docs, execute, translate_image), so the convention is predictable. 'execute' is a bare verb without a noun, which is a minor deviation from the verb_noun pattern of the other two.

Tool Count4/5

Three tools is lean, but the design intentionally pushes a very large operation surface (13 platforms, dozens of operations) through a single code-execution tool, so the small count is earned rather than thin. The only questionable inclusion is translate_image, which is a narrow one-off in an otherwise general orchestration set.

Completeness4/5

Discovery (search_docs), execution (execute with pages/many/store/usage helpers), and broad platform coverage including search, browse, profile, posts, comments, reviews, jobs and catalogs form a coherent lifecycle for a data-extraction API. Minor gaps remain: budget/usage and stored data are only reachable by writing code, and there is no standalone auth or setup/status tool.

Maintenance

ActivityMaintained
ResponsivenessNo issues