# com.agishub/mcp (remote · api.agishub.com)

AgisHub — pay-per-call tools for AI agents over x402 (USDC on Base). No API key.

- Trust score: 64/100 (medium)
- Change this week: +14
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `api.agishub.com`: 64/100 (this document), [markdown](https://verifymcp.io/servers/com-agishub-mcp/api.md), [page](https://verifymcp.io/servers/com-agishub-mcp/api)
- npm · `@agishub/mcp`: 33/100, [markdown](https://verifymcp.io/servers/com-agishub-mcp/agishub-mcp.md), [page](https://verifymcp.io/servers/com-agishub-mcp/agishub-mcp)

## Channel facts

- Endpoint: `https://api.agishub.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `2.1.1`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 49/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 25 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS not yet verified: we couldn't determine whether a plaintext access path exists.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC is configured correctly; the domain's records validate against the full chain to the root.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 77/100
  - AI-judged instruction clarity (excellent).
  - Tool/resource definitions use about 2224 tokens (~88/item across 25 items; 25 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http com-agishub-mcp https://api.agishub.com/mcp
```

### Codex

```toml
[mcp_servers.com-agishub-mcp]
url = "https://api.agishub.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-agishub-mcp": {
      "type": "remote",
      "url": "https://api.agishub.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-agishub-mcp --url https://api.agishub.com/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  com-agishub-mcp:
    url: "https://api.agishub.com/mcp"
```

### Other

```json
{
  "mcpServers": {
    "com-agishub-mcp": {
      "type": "http",
      "url": "https://api.agishub.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 64, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-02 (score 63, +10)

- [functional improvement] Schema quality: unverified → excellent

### 2026-07-31 (score 53, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 52, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-29 (score 52, +1)

- [functional regression] Schema quality: 1778 → 2298
- [functional] New tool “status”
- [functional] New tool “chat”
- [functional] New tool “memory_search”
- [functional] New tool “relay”
- [functional] New tool “price”
- [functional] New tool “memory_upsert”

### 2026-07-28 (score 51, +1)

- [functional regression] Schema quality: 1039 → 1778
- [functional] New tool “classify”
- [functional] New tool “transcribe”
- [functional] New tool “summarize”
- [functional] New tool “shorten”
- [functional] New tool “qr_code”
- [functional] New tool “extract_entities”
- [functional] New tool “embed”
- [functional] New tool “convert_units”
- [functional] New tool “convert_currency”

### 2026-07-27 (score 50, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 49)

First indexed and scored.

## MCP tools (25)

### `now_in` (~72 tokens)

Get the current local time in an IANA timezone, including the UTC offset, zone abbreviation and whether DST is in effect. Use whenever you need to know what time it is 'now' somewhere.

Input parameters:

- `timezone` (string, required): IANA timezone, e.g. 'Europe/Madrid', 'Asia/Kolkata'.

### `convert_timezone` (~111 tokens)

Convert a specific date/time from one IANA timezone to another. Accepts ISO 8601 or natural language ('next Tuesday 3pm'). Returns the converted datetime with its UTC offset, zone abbreviation and DST flag.

Input parameters:

- `datetime` (string, required): ISO 8601 or natural language, e.g. "2026-07-09T15:30" or "next Tuesday 3pm".
- `from` (string, required): Source IANA timezone.
- `to` (string, required): Target IANA timezone.

### `convert_batch` (~80 tokens)

Convert a single instant into many IANA timezones at once — a world-clock view. Like convert_timezone, but 'to' is a list of target zones.

Input parameters:

- `datetime` (string, required): ISO 8601 or natural language.
- `from` (string, required): Source IANA timezone.
- `to` (array, required): List of target IANA timezones.

### `tz_offset` (~73 tokens)

Get the exact UTC offset of an IANA timezone at a given instant, DST-aware. Correctly handles fractional offsets such as India +05:30 and Nepal +05:45.

Input parameters:

- `instant` (string): ISO 8601 or natural language. Defaults to now.
- `timezone` (string, required): IANA timezone.

### `list_timezones` (~65 tokens)

List or search valid IANA timezone identifiers, optionally filtered by a city, region or country substring (e.g. 'kolkata', 'america'). Use it to discover the exact identifier to pass to the other tools.

Input parameters:

- `query` (string): Case-insensitive substring filter.

### `lookup_timezone` (~71 tokens)

Resolve a city or country name to its IANA timezone(s) so you don't need the exact identifier — e.g. 'Delhi' -> 'Asia/Kolkata'. Use it first when you only have a place name.

Input parameters:

- `city_or_country` (string, required): City or country name, or ISO country code.

### `date_math` (~131 tokens)

Timezone-aware date arithmetic: add or subtract a duration to a datetime (days are calendar-based and DST-safe; hours and minutes are absolute), or compute the difference between two datetimes that may be in different zones.

Input parameters:

- `datetime` (string, required): Base datetime: ISO 8601 or natural language.
- `operation` (object, required): What to compute: { type:'add', amount, unit } to add/subtract a duration, or { type:'diff', to_datetime, to_timezone? } for the difference between two datetimes.
- `timezone` (string, required): IANA timezone the base datetime is in.

### `find_meeting_slots` (~163 tokens)

Find working-hour time slots that overlap across participants in different timezones for a meeting of a given duration, excluding weekends and (when a country is given per participant) that person's public holidays. Free tier returns at most 1 slot; the paid endpoint returns every matching slot (see 'upgrade' in the response).

Input parameters:

- `date_range` (object, required): Inclusive date window to search, e.g. { "start":"2026-07-13", "end":"2026-07-17" }.
- `duration` (number, required): Meeting duration in minutes.
- `participants` (array, required): The people to meet. Each participant is { timezone (IANA, required), working_hours? { start, end }, country? (ISO alpha-2) }.

### `is_holiday` (~89 tokens)

Check whether a given date is a public holiday in a country (identified by its ISO 3166-1 alpha-2 code), and return the holiday name if so. Backed by an authoritative public-holiday dataset.

Input parameters:

- `country_code` (string, required): ISO country code, e.g. "US", "ES", "IN".
- `date` (string, required): Date "YYYY-MM-DD".

### `extract` (~182 tokens)

Fetch any public web page and return its main content as clean, token-efficient Markdown (title, description, headings, links, lists). Set render:true to execute JavaScript first for single-page apps or JS-heavy pages that would otherwise come back empty. Built for RAG and for agents that need to read the contents of a URL.

Input parameters:

- `include_images` (boolean): Keep images as markdown (default false).
- `include_links` (boolean): Keep hyperlinks in the markdown output (default true).
- `max_chars` (integer): Truncate the markdown to at most this many characters (sets truncated:true).
- `render` (boolean): Render JavaScript with a headless browser before extracting (default false). Enable for SPAs / JS-heavy pages that return empty content otherwise. Slower.
- `url` (string, required): Full http/https URL of the page to extract.

### `qr_code` (~129 tokens)

Generate a QR code for any text or URL. Returns an inline SVG plus a data URI, with selectable size, quiet-zone margin and error-correction level.

Input parameters:

- `ec_level` (string): Error-correction level: L(7%), M(15%), Q(25%), H(30%). Default M.
- `margin` (integer): Quiet-zone margin around the code, in cells (default 4).
- `size` (integer): Pixel size of each QR module/cell in the SVG (default 6).
- `text` (string, required): Text or URL to encode in the QR code.

### `convert_units` (~124 tokens)

Convert a value between units of the same category: length, mass, volume, speed, area, digital storage, time, and temperature (Celsius/Fahrenheit/Kelvin).

Input parameters:

- `from` (string, required): Source unit, e.g. 'km', 'mi', 'kg', 'lb', 'C', 'F', 'GB', 'm/s'.
- `to` (string, required): Target unit in the SAME category as 'from', e.g. 'mi', 'km', 'lb', 'F'.
- `value` (number, required): The numeric value to convert.

### `convert_currency` (~105 tokens)

Convert an amount between currencies using live daily exchange rates (ISO 4217 codes, e.g. USD, EUR, GBP, JPY). Returns the converted amount and the rate used.

Input parameters:

- `amount` (number, required): The amount of money to convert.
- `from` (string, required): Source currency ISO 4217 code, e.g. 'USD', 'EUR'.
- `to` (string, required): Target currency ISO 4217 code, e.g. 'EUR', 'JPY'.

### `summarize` (~64 tokens)

Summarize a block of text into a short abstract, with an optional target length. No external API key required.

Input parameters:

- `max_words` (integer): Approximate maximum length of the summary, in words (default ~80).
- `text` (string, required): The text to summarize.

### `classify` (~64 tokens)

Classify a text into exactly one of the candidate labels you provide (e.g. sentiment, topic, intent).

Input parameters:

- `labels` (array, required): Candidate labels to choose from, e.g. ['positive','negative','neutral'].
- `text` (string, required): The text to classify.

### `extract_entities` (~43 tokens)

Extract named entities from text — people, organizations, locations, dates and miscellaneous — returned as structured JSON.

Input parameters:

- `text` (string, required): The text to extract named entities from.

### `transcribe` (~70 tokens)

Transcribe an audio file (given by public URL) to text. Handles mp3, wav, m4a, ogg and more.

Input parameters:

- `audio_url` (string, required): Public URL of an audio file (mp3, wav, m4a, ogg, ...) to transcribe to text.

### `embed` (~46 tokens)

Turn text into a numeric embedding vector for semantic search, RAG and similarity. Multilingual.

Input parameters:

- `text` (string, required): Text to embed into a numeric vector for semantic search / RAG.

### `chat` (~82 tokens)

Ask a general-purpose LLM a question or give it an instruction, with an optional system prompt. No external API key required.

Input parameters:

- `max_tokens` (integer): Maximum tokens to generate (default 512).
- `prompt` (string, required): The user's message or question for the assistant.
- `system` (string): Optional system instruction to steer the assistant's behaviour/persona.

### `memory_upsert` (~98 tokens)

Store a piece of text in a persistent, searchable memory collection (namespace). Embedded and indexed for later semantic recall.

Input parameters:

- `id` (string): Optional stable id to update an existing entry; auto-generated if omitted.
- `namespace` (string, required): Your collection key — groups and isolates your memories. Treat it like a secret: anyone with it can read/write this collection.
- `text` (string, required): The text/content to store and make searchable.

### `memory_search` (~88 tokens)

Semantically search a memory collection (namespace) and return the most relevant stored entries. The retrieval half of RAG.

Input parameters:

- `namespace` (string, required): The namespace to search within (the same key used on upsert).
- `query` (string, required): Natural-language query; returns the most semantically similar stored entries.
- `top_k` (integer): How many results to return (default 5).

### `relay` (~117 tokens)

Deliver a webhook (POST/PUT/PATCH a JSON payload to a URL) with guaranteed, retried delivery. Returns immediately with a job_id; AgisHub keeps retrying in the background until it succeeds.

Input parameters:

- `headers` (object): Optional extra request headers, e.g. an auth token.
- `method` (string): HTTP method (default POST).
- `payload`: JSON body to POST to the target (object, array, string or number).
- `url` (string, required): Public http/https URL to deliver the webhook to.

### `status` (~46 tokens)

Check the delivery status of a webhook job (queued / retrying / delivered / failed) by its job_id.

Input parameters:

- `job_id` (string, required): The job_id returned by webhook_relay.

### `price` (~58 tokens)

Get live USD spot prices for one or more cryptocurrencies by ticker symbol (e.g. BTC, ETH, SOL).

Input parameters:

- `symbols` (string, required): Comma-separated ticker symbols, e.g. 'BTC,ETH,SOL'. Prices are returned in USD.

### `shorten` (~53 tokens)

Shorten a long URL into a compact api.agishub.com/s/<code> link that redirects to the original. Codes are stored for a year.

Input parameters:

- `url` (string, required): The long http/https URL to shorten.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/com-agishub-mcp/api#diagnostics

## Score history

- 2026-08-03: 64
- 2026-08-02: 63
- 2026-08-01: 53
- 2026-07-31: 53
- 2026-07-30: 52
- 2026-07-29: 52
- 2026-07-28: 51
- 2026-07-27: 50
- 2026-07-26: 49

## Links

- Remote endpoint: https://api.agishub.com/mcp
- Repository: https://github.com/agishub/agishub-mcp
- Website: https://agishub.com/
- Changelog RSS feed: https://verifymcp.io/servers/com-agishub-mcp/api/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-agishub-mcp/api/changelog.json
- HTML version of this page: https://verifymcp.io/servers/com-agishub-mcp/api
