# Agent Bits (remote · agentbits.dev)

Machine-readable utilities and datasets for AI agents.

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

## Components

- remote · `agentbits.dev`: 61/100 (this document), [markdown](https://verifymcp.io/servers/rwaldman-agentbits/agentbits.md), [page](https://verifymcp.io/servers/rwaldman-agentbits/agentbits)

## Channel facts

- Endpoint: `https://agentbits.dev/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.3.0`

## 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-20.

- **Endpoint Security**: 46/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 18 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 check failed: the endpoint is reachable over plaintext HTTP.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 74/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 2521 tokens (~140/item across 18 items; 18 tools + 0 resources), over budget; trim descriptions and params.
  - 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**: 84/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 52% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### Claude

```bash
claude mcp add --transport http rwaldman-agentbits https://agentbits.dev/mcp
```

### Codex

```toml
[mcp_servers.rwaldman-agentbits]
url = "https://agentbits.dev/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "rwaldman-agentbits": {
      "type": "remote",
      "url": "https://agentbits.dev/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add rwaldman-agentbits --url https://agentbits.dev/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  rwaldman-agentbits:
    url: "https://agentbits.dev/mcp"
```

### Other

```json
{
  "mcpServers": {
    "rwaldman-agentbits": {
      "type": "http",
      "url": "https://agentbits.dev/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-20 (score 61, +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-18 (score 60, +1)

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

### 2026-08-16 (score 59, +1)

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

### 2026-08-14 (score 58, +1)

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

### 2026-08-13 (score 57, 0)

- [functional improvement] Stability: unverified → 0.03

### 2026-08-12 (score 57)

First indexed and scored.

## MCP tools (18)

### `base64_decode` (~134 tokens)

Decode a Base64 string into UTF-8 text and report invalid payloads as errors when recovering embedded credentials, tokens, or transport-encoded content.

Use when:
\- Decode this Base64 string to UTF-8 text
\- Recover plain text from a Base64-encoded payload
\- Check whether a Base64 string is valid and decode it

Do not use when:
\- Encode plain text to Base64 (use base64_encode)
\- Decode percent-encoded URL components (use url_decode)
\- Decrypt ciphertext—Base64 decoding is not decryption

Input parameters:

- `value` (string, required): Base64 text to decode

### `base64_encode` (~133 tokens)

Convert a UTF-8 string into standard Base64 when you need a portable text encoding for credentials, binary-safe transport, or embedding data in JSON/HTTP fields.

Use when:
\- Encode this UTF-8 string as Base64
\- Convert plain text into standard Base64 for transport
\- Produce a Base64 representation of a credential or payload string

Do not use when:
\- Decode Base64 back to text (use base64_decode)
\- Percent-encode URL components (use url_encode)
\- Hash or encrypt data for security—Base64 is encoding only

Input parameters:

- `value` (string, required): Text to encode

### `countries_bulk` (~166 tokens)

Download the complete versioned countries dataset as JSON for caching, offline use, or multi-country analysis when a single country_lookup call is not enough.

Use when:
\- Download the full countries dataset as JSON
\- Cache the complete versioned countries snapshot for offline use
\- Analyze or filter many countries without repeated single-code lookups

Do not use when:
\- Look up metadata for a single country by ISO code (use country_lookup instead)
\- Look up one currency or language code (use currency_lookup / language_lookup)
\- Fetch live geopolitical or exchange-rate feeds

Payment: 0.001 USDC via x402 on eip155:8453. No account. No API key. No signup.

Input parameters:

- `version` (string): Dataset version to retrieve. Defaults to 1.

### `country_lookup` (~186 tokens)

Resolve an ISO 3166-1 alpha-2 country code (for example CA, US, JP) to official name, region, currency, calling code, languages, and related country metadata when you already have the two-letter code.

Use when:
\- What currency and calling code does country code JP use?
\- Get official name, region, and languages for ISO country CA
\- Look up standardized metadata for a two-letter ISO 3166-1 country code

Do not use when:
\- Download the full countries dataset for offline or multi-country use (use countries_bulk)
\- Look up currency symbol or decimals by ISO 4217 code alone (use currency_lookup)
\- Search for a country when you only know its English name and not the ISO code

Input parameters:

- `code` (string, required): ISO 3166-1 alpha-2 country code, for example CA or JP

### `currency_lookup` (~142 tokens)

Resolve an ISO 4217 currency code such as USD, EUR, or JPY to its name, symbol, decimal places, and which countries use it when you need currency metadata rather than a live exchange rate.

Use when:
\- What is the symbol and number of decimal places for EUR?
\- Which countries use currency code JPY?
\- Get ISO 4217 name and metadata for USD

Do not use when:
\- Convert amounts between currencies or fetch live FX rates
\- Find which currency a country uses when you only have a country code (use country_lookup)
\- Validate payment-card-like numbers (use luhn_validate)

Input parameters:

- `code` (string, required)

### `http_status_lookup` (~130 tokens)

Explain what a numeric HTTP status code such as 404 or 429 means by returning its standard reason phrase and a short description for debugging or API responses.

Use when:
\- What does HTTP status 404 mean?
\- Get the standard name and description for status code 429
\- Explain an HTTP response code returned by an API

Do not use when:
\- Decide whether a request succeeded without needing the status name
\- Look up MIME types or content-type headers (use mime_lookup)
\- Diagnose TLS, DNS, or network failures that are not HTTP status codes

Input parameters:

- `code` (integer, required)

### `isbn_validate` (~140 tokens)

Verify whether an ISBN-10 or ISBN-13 passes checksum rules and return normalized digits when checking book identifiers before catalog or purchase flows.

Use when:
\- Is this ISBN valid?
\- Check the checksum for an ISBN-13 book identifier
\- Normalize and validate an ISBN-10 or ISBN-13 string

Do not use when:
\- Look up book title, author, or cover metadata from an ISBN
\- Validate UUIDs (use uuid_validate) or payment-card Luhn numbers (use luhn_validate)
\- Validate arbitrary barcode formats that are not ISBN-10/13

Input parameters:

- `value` (string, required): ISBN-10 or ISBN-13 candidate

### `json_validate` (~122 tokens)

Parse a string as JSON to confirm it is well-formed and return a normalized representation when possible before further processing or storage.

Use when:
\- Is this string valid JSON?
\- Parse and normalize a JSON payload before processing
\- Check whether agent or user-supplied text is well-formed JSON

Do not use when:
\- Validate against a specific JSON Schema or OpenAPI model beyond well-formedness
\- Encode or decode Base64 (use base64_encode / base64_decode)
\- Validate UUID or ISBN identifier formats

Input parameters:

- `value` (string, required)

### `language_lookup` (~126 tokens)

Resolve an ISO 639-1 language code such as en, fr, or ja to its English name and native name when you need language metadata from a two-letter code.

Use when:
\- What language does ISO 639-1 code ja refer to?
\- Get the native name for language code fr
\- Resolve a two-letter language code to its English and native names

Do not use when:
\- Translate text between languages
\- Detect the language of arbitrary free-form text
\- Look up country languages from a country code (use country_lookup)

Input parameters:

- `code` (string, required)

### `luhn_validate` (~132 tokens)

Run the Luhn checksum on a numeric string such as a payment-card-like identifier to verify the check digit before accepting or storing the value.

Use when:
\- Does this number pass a Luhn check?
\- Validate a payment-card-like identifier checksum
\- Verify a numeric ID that uses a Luhn check digit

Do not use when:
\- Charge a card, tokenize payments, or call a payment processor
\- Validate ISBNs (use isbn_validate) or UUIDs (use uuid_validate)
\- Look up currency metadata (use currency_lookup)

Input parameters:

- `value` (string, required): Numeric string to validate with Luhn

### `mime_lookup` (~144 tokens)

Map a file extension such as webp or png, or a MIME type string, to curated Content-Type metadata when setting headers, validating uploads, or choosing a media type.

Use when:
\- What MIME type should I use for a .webp file?
\- Look up metadata for Content-Type application/json
\- Resolve a file extension to the correct MIME type for an upload or response header

Do not use when:
\- Sniff or detect MIME type from raw file bytes
\- Encode or decode Base64 file payloads (use base64_encode / base64_decode)
\- Look up DNS top-level domain metadata (use tld_lookup)

Input parameters:

- `query` (string, required)

### `timestamp_convert` (~160 tokens)

Convert Unix epoch seconds or milliseconds to ISO-8601, or an ISO-8601 datetime to Unix epoch values, when bridging APIs that disagree on time formats.

Use when:
\- Convert this Unix timestamp to ISO-8601
\- Turn an ISO-8601 datetime into epoch milliseconds
\- Bridge APIs that mix Unix seconds and ISO-8601 strings

Do not use when:
\- Convert a datetime between IANA timezones while preserving the instant (use timezone_convert)
\- Convert length, mass, or temperature units (use unit_convert)
\- Interpret relative phrases like 'next Tuesday' or 'in 3 hours'

Input parameters:

- `input_format` (string, required): Format of value
- `value` (string, required): Unix timestamp or ISO-8601 datetime

### `timezone_convert` (~187 tokens)

Convert an ISO-8601 datetime from one IANA timezone to another while preserving the same instant, including daylight-saving-aware wall times such as Toronto to Tokyo.

Use when:
\- What time is 3pm Toronto in Tokyo?
\- Convert an ISO-8601 datetime from America/New_York to Europe/London
\- Show the same instant in another IANA timezone with DST-aware offsets

Do not use when:
\- Only convert between Unix epoch and ISO-8601 without changing timezone (use timestamp_convert)
\- Convert length, mass, or temperature units (use unit_convert)
\- Guess a city timezone from a postal address without an IANA zone id

Input parameters:

- `datetime` (string, required): ISO-8601 datetime, with or without offset
- `from_timezone` (string, required): IANA timezone for interpreting naive datetimes
- `to_timezone` (string, required): IANA timezone for output

### `tld_lookup` (~124 tokens)

Identify what a DNS top-level domain such as com, io, or ai is classified as and commonly used for when classifying domains or answering TLD questions.

Use when:
\- What kind of TLD is .io?
\- Is .ai a country-code or generic top-level domain?
\- Get curated metadata for DNS TLD com

Do not use when:
\- Check whether a full domain name is registered or available
\- Resolve DNS records or WHOIS ownership
\- Look up MIME types for file extensions (use mime_lookup)

Input parameters:

- `tld` (string, required)

### `unit_convert` (~139 tokens)

Convert a numeric value between supported length, mass, or temperature units—for example miles to kilometers or Celsius to Fahrenheit—when you need a deterministic unit conversion.

Use when:
\- Convert 10 miles to kilometers
\- What is 25°C in Fahrenheit?
\- Convert a mass value between kilograms and pounds

Do not use when:
\- Convert currencies or fetch exchange rates (use currency_lookup for metadata only)
\- Convert timestamps or timezones (use timestamp_convert / timezone_convert)
\- Convert unsupported unit categories outside length, mass, and temperature

Input parameters:

- `from_unit` (string, required)
- `to_unit` (string, required)
- `value` (number, required)

### `url_decode` (~117 tokens)

Decode a percent-encoded URL component into plain text when reading query parameters, path segments, or form values that contain escaped characters.

Use when:
\- Decode this percent-encoded URL component
\- Convert %20-style escapes back to plain text
\- Recover the original string from an encoded query parameter

Do not use when:
\- Percent-encode text for a URL (use url_encode)
\- Decode Base64 payloads (use base64_decode)
\- Parse HTML entities that are not URL percent-encoding

Input parameters:

- `value` (string, required)

### `url_encode` (~121 tokens)

Apply encodeURIComponent-style percent-encoding so query parameters, path segments, or form values are safe to place in a URL.

Use when:
\- Percent-encode this string for a query parameter
\- Make a path segment URL-safe with encodeURIComponent-style encoding
\- Encode special characters before inserting text into a URL

Do not use when:
\- Decode a percent-encoded string (use url_decode)
\- Encode binary data as Base64 (use base64_encode)
\- Build or rewrite a full absolute URL structure beyond component encoding

Input parameters:

- `value` (string, required)

### `uuid_validate` (~118 tokens)

Check whether a string is a well-formed UUID and, when recognizable, report its version and variant so you can accept or reject identifier inputs confidently.

Use when:
\- Is this string a valid UUID?
\- What version and variant is this UUID?
\- Validate a UUID before using it as a primary key or request id

Do not use when:
\- Generate a new UUID
\- Validate ISBNs or other non-UUID identifiers (use isbn_validate)
\- Validate JSON structure (use json_validate)

Input parameters:

- `value` (string, required): UUID candidate string

## Diagnostics

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

## Score history

- 2026-08-20: 61
- 2026-08-19: 60
- 2026-08-18: 60
- 2026-08-17: 59
- 2026-08-16: 59
- 2026-08-15: 58
- 2026-08-14: 58
- 2026-08-13: 57
- 2026-08-12: 57

## Links

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