pet-adoption-mcp
Version:
A Model Context Protocol (MCP) server that helps users find adoptable pets through the Petfinder API
175 lines (174 loc) • 3.61 kB
TypeScript
export type Location = {
city: string;
state: string;
} | {
latitude: string;
longitude: string;
} | string;
export declare enum Size {
Small = "small",
Medium = "medium",
Large = "large",
XLarge = "xlarge"
}
export interface MultipleSize extends Array<Size> {
}
export declare enum Age {
Baby = "baby",
Young = "young",
Adult = "adult",
Senior = "senior"
}
export declare enum Gender {
Male = "male",
Female = "female"
}
export declare enum Coat {
Short = "short",
Medium = "medium",
Long = "long",
Wire = "wire",
Hairless = "hairless",
Curly = "curly"
}
export declare enum Sort {
Recent = "recent",
Distance = "distance",
ReversedRecent = "-recent",
ReversedDistance = "-distance"
}
export type Color = string;
export declare enum Status {
Adoptable = "adoptable",
Pending = "pending",
Adopted = "adopted"
}
export type Photo = {
small: string;
medium: string;
large: string;
full: string;
};
export type Animal = {
id: number;
organization_id: string;
url: string;
type: string;
species: string;
breeds: {
primary: string;
secondary: string | null;
mixed: boolean;
unknown: boolean;
};
colors: {
primary: string;
secondary: string | null;
tertiary: string | null;
};
age: Age;
gender: Gender;
size: Size;
coat: Coat;
name: string;
description: string;
photos: Array<Photo>;
videos: Array<{
embed: string;
}>;
status: Status;
attributes: {
spayed_neutered: boolean;
house_trained: boolean;
declawed: boolean;
special_needs: boolean;
shots_current: boolean;
};
environment: {
children: boolean;
dogs: boolean;
cats: boolean;
};
tags: string[];
contact: {
email: string;
phone: string;
address: {
address1: string;
address2: string;
city: string;
state: string;
postcode: string;
country: string;
};
};
published_at: string;
distance: number;
primary_photo_cropped: Array<Photo>;
};
export interface SearchAnimalsResponse {
animals: Array<Animal & {
_links: {
self: {
href: string;
};
type: {
href: string;
};
organization: {
href: string;
};
};
}>;
pagination: {
count_per_page: number;
total_count: number;
current_page: number;
total_pages: number;
};
}
export interface AuthenticateResponse {
token_type: string;
expires_in: number;
access_token: string;
}
export interface ErrorResponse {
type: string;
status: number;
title: string;
detail: string;
"invalid-params": Array<{
in: string;
path: string;
message: string;
}>;
}
export interface BreedResponse {
breeds: Array<{
name: string;
_links: {
type: {
href: string;
};
};
}>;
}
export interface AnimalType {
name: string;
coats: string[];
colors: string[];
genders: string[];
breeds?: string[];
}
export interface GetAnimalTypesResponse {
types: Array<AnimalType & {
_links: {
self: {
href: string;
};
breeds: {
href: string;
};
};
}>;
}