WAIS & Z39.50 Protocol Specification

Technical reference for archival interoperability, legacy protocol endpoints, and historical information retrieval standards maintained by the 1990 Web Archive.

OVERVIEW Historical Context & Archive Implementation

Before modern HTTP search indexing, the early internet relied on decentralized retrieval protocols. WAIS (Wide Area Information Server) and ANSI Z39.50 enabled structured querying of remote databases across TCP/IP networks. The 1990 Web Archive preserves native compatibility with both standards to support digital historians, library science researchers, and protocol archaeologists.

Our implementation runs dual-stack protocol servers, translating modern archival storage into compliant Z39.50 (ISO 23950) and WAIS responses while preserving original query semantics, record formats, and error codes.

Archive Note: All protocol endpoints are rate-limited to 15 queries/minute for archival preservation. Bulk access requires a research API key via developer portal.

Z39.50 Specification & Endpoints

ANSI Z39.50 defines a client/server protocol for bibliographic and archival retrieval. The archive exposes Z39.50 compliant databases mapping to era-specific web collections.

Parameter Value / Description
Standard Port 210 (TCP)
Archive Host z3950.1990webarchive.org
Database Names geoCities_1995, angelfire_1997, academia_1990-1994, full_text_index
Record Syntax USMARC, ISBD, 1990WEB/XML (custom archival extension)
Authentication None required for public collections. RESEARCHER_TOKEN for restricted tiers.

Query Syntax & Examples

-- Z39.50 Prefix Query (CQL-style mapped)
prefix "web-archive-1990s"
search "title contains 'netscape' and date = 1995"
result-set name=1
present result-set-name=1 record-format=1990WEB/XML
close

Supported Z39.50 Attributes

Attribute 1 (Title)

Metadata.title

Matches <title> tags, document headers, and catalog metadata.

Attribute 4 (Author/Origin)

Metadata.originator

Matches domain registrants, HTML <author> tags, or WHOIS data.

Attribute 7 (Date)

Metadata.archiveDate

ISO 8601 capture timestamps. Supports range queries: date >= 1994-01-01.

Attribute 10 (Full Text)

Content.fulltext

Boolean indexing across archived HTML, plain text, and extracted body content.

WAIS Specification & Endpoints

WAIS (Wide Area Information Server) uses a request/response model over TCP port 210 (or 211 in dual-stack configurations). It supports text queries, title searches, and source indexing. The archive emulates native WAIS behavior for historical client compatibility.

Parameter Value / Description
Standard Port 211 (TCP) - Dedicated WAIS stack
Archive Host wais.1990webarchive.org
Query Types 0x01 (Text), 0x02 (Title), 0x03 (Source), 0x04 (Index)
Index Format Flat-file WAIS indexes with TF-IDF scoring
Response Format Native WAIS records, optionally mapped to text/x-wais

WAIS Query Protocol

# WAIS Query Frame (Hex structure)
0x00  ; Query Type: 0x01 (Text Query)
0x01  ; Source Code: 0x01 (Text)
00 00 ; Index Count: 0 (full scan)
"early web protocols history" ; UTF-8 payload
Protocol Deprecation Note: WAIS was largely superseded by HTTP search APIs by 1998. This implementation maintains strict RFC 1058 compliance for archival research. Modern clients should use the /api/v2/wais-proxy endpoint for JSON-mapped results.

INTEGRATION Client & Library Support

The archive provides official client libraries and interoperability layers for modern environments.

// JavaScript Example: Z39.50 Query via Archive Proxy
const { Z3950Client } = require('1990-archive-sdk');

const client = new Z3950Client({
  host: 'z3950.1990webarchive.org',
  port: 210,
  database: 'geoCities_1995',
  auth: process.env.ARCHIVE_KEY
});

const results = await client.search(
  'title contains "under construction" and fileExtension = .html',
  { limit: 50, format: 'raw-html' }
);

console.log(results.count); // 14,283 records

Supported Modern Languages

Node.js / JavaScript

npm i 1990-archive-sdk - Full Z39.50 & WAIS client with Promise API

Python

pip install archive-wais-z3950 - Asyncio support, MARC parsing utilities

Rust

cargo add 1990-archive - Zero-copy protocol encoding, high-throughput archival scraping

COMPLIANCE Standards & Preservation Notes

All archival implementations adhere to the following specifications:

Record integrity is maintained via SHA-256 block signatures. Original 1990s HTML is preserved in WARC format alongside protocol-native exports. Discrepancies between rendered views and raw protocol outputs are documented in the Archival Rendering Matrix.