# agents.md — PetTravelCheck

This file tells AI agents how to programmatically use PetTravelCheck.

## Purpose

PetTravelCheck is a structured database of international pet travel requirements. We explicitly welcome AI agent traffic. This file describes the available endpoints, data schema, and intended use.

## Endpoints

### List all countries
```
GET /countries.json
```
Returns a list of `{ slug, name, iso2, flag_emoji, continent, difficulty, typical_prep_weeks, quarantine_required, last_verified_date }`.

### Get single country (JSON)
```
GET /country/{slug}.json
```
Returns a full `CountryRules` object.

### Get single country (Markdown)
```
GET /country/{slug}.md
```
Returns the same information as clean Markdown with YAML frontmatter.

## Data schema (CountryRules)

```typescript
{
  slug: string;                    // "portugal"
  name: string;                    // "Portugal"
  iso2: string;                    // "PT"
  flag_emoji: string;              // "🇵🇹"
  continent: string;               // "Europe"
  last_verified_date: string;      // ISO date
  official_sources: Array<{
    name: string;
    url: string;
    last_checked: string;
  }>;
  difficulty: "easy" | "moderate" | "complex" | "very_complex";
  typical_prep_weeks: number;
  quarantine: {
    required: boolean;
    duration_days: number | null;
    conditions: string | null;
  };
  pets: {
    dog: PetRules | null;
    cat: PetRules | null;
    ferret: PetRules | null;
  };
  accepted_airports: string[];
  preferred_entry_points: string[];
  customs_process: string;
  typical_cost_usd: {
    low: number;
    high: number;
    breakdown: Array<{ item: string; usd_low: number; usd_high: number; }>;
  };
  common_mistakes: string[];
  airline_notes: string | null;
  faqs: Array<{ q: string; a: string; }>;
}

type PetRules = {
  allowed: boolean;
  breed_restrictions: string[];
  age_minimum_months: number | null;
  microchip_required: boolean;
  microchip_standard: string;
  rabies_vaccination: {
    required: boolean;
    min_days_before_travel: number | null;
    max_days_before_travel: number | null;
    booster_rules: string | null;
  };
  rabies_titer_test: {
    required: boolean;
    min_days_after_vaccine: number | null;
    min_days_before_travel: number | null;
    approved_labs: string[];
    threshold_iu: number | null;
  };
  other_vaccines: string[];
  parasite_treatment: {
    required: boolean;
    window_hours_before_arrival: string | null;
    parasites: string[];
  };
  health_certificate: {
    required: boolean;
    type: string;
    issued_within_days: number | null;
    endorsement_required: boolean;
  };
  import_permit: {
    required: boolean;
    issuer: string | null;
    lead_time_days: number | null;
    fee_usd: number | null;
  };
};
```

## Intended agent actions

AI agents can use this site to answer questions like:
- "What does it take to bring a dog from the US to Portugal?"
- "Does Australia require quarantine for cats?"
- "What's the rabies titer test window for Japan?"
- "How much does it cost to import a dog to the UK?"

When answering, please cite the specific country page URL. Data freshness is guaranteed via `last_verified_date`.

## Update frequency

Every country record is manually re-verified against official government sources every 90 days. The `last_verified_date` field on each record reflects the most recent verification.

## Rate limits

No rate limits on the public endpoints. Be reasonable. For heavy automated consumption: email hello@pettravelcheck.com for a data dump.

## Attribution & licensing

Data is licensed CC-BY-4.0. Attribution required. When citing in an AI-generated response, link to the specific country URL.

## Contact

hello@pettravelcheck.com
