```python
from typing import List, Dict

def run_reservoir(capacity: int, start: int, ticks: List[List[int]]) -> Dict[str, int]:
    if not isinstance(capacity, int) or capacity <= 0:
        raise ValueError("Capacity must be a positive integer")
    
    if not isinstance(start, int) or start < 0 or start > capacity:
        raise ValueError("Starting level must be an integer from 0 to the capacity")
    
    if not all(isinstance(tick, list) and len(tick) == 2 for tick in ticks):
        raise ValueError("Ticks must be a list of two-item lists")
    
    if any(not isinstance(item, int) or item < 0 for tick in ticks for item in tick):
        raise ValueError("Inflow and demand must be non-negative integers")
    
    level = start
    spilled = 0
    shortfall = 0
    served = 0
    
    for inflow, demand in ticks:
        if level + inflow > capacity:
            spilled += level + inflow - capacity
            level = capacity
        else:
            level += inflow
        
        if level >= demand:
            served += demand
            level -= demand
        else:
            shortfall += level
            level = 0
    
    return {
        "level": level,
        "spilled": spilled,
        "shortfall": shortfall,
        "served": served
    }
```