package mcpdocs

import "time"

type Server struct {
	Name        string      `json:"name"`
	Description string      `json:"description,omitempty"`
	Image       string      `json:"image,omitempty"`
	DocURL      string      `json:"doc_url"`
	Category    string      `json:"category,omitempty"`
	Tools       []*Tool     `json:"tools,omitempty"`
	Resources   []*Resource `json:"resources,omitempty"`
	Prompts     []*Prompt   `json:"prompts,omitempty"`
	FetchedAt   time.Time   `json:"fetched_at"`
}

type Tool struct {
	Name        string       `json:"name"`
	Description string       `json:"description,omitempty"`
	InputSchema *InputSchema `json:"input_schema,omitempty"`
	DocURL      string       `json:"doc_url"`
}

type Resource struct {
	URI         string `json:"uri"`
	Name        string `json:"name"`
	Description string `json:"description,omitempty"`
	MimeType    string `json:"mime_type,omitempty"`
	DocURL      string `json:"doc_url"`
}

type Prompt struct {
	Name        string      `json:"name"`
	Description string      `json:"description,omitempty"`
	Arguments   []*Argument `json:"arguments,omitempty"`
	DocURL      string      `json:"doc_url"`
}

type Argument struct {
	Name        string `json:"name"`
	Description string `json:"description,omitempty"`
	Required    bool   `json:"required"`
}

type InputSchema struct {
	Type       string                 `json:"type"`
	Properties map[string]interface{} `json:"properties,omitempty"`
	Required   []string               `json:"required,omitempty"`
}
