```python
def fresh_value(entry: dict, now: int) -> str:
    """
    Returns the value of the record if it is still usable at the given tick.
    Raises ValueError if the entry is not a valid record, or if the record is no longer usable at the given tick.
    """
    if not isinstance(entry, dict):
        raise ValueError("Entry must be a dictionary.")
    
    if len(entry) != 3:
        raise ValueError("Record must have exactly three fields: value, stored, and ttl.")
    
    if "value" not in entry or "stored" not in entry or "ttl" not in entry:
        raise ValueError("Record must have 'value', 'stored', and 'ttl' fields.")
    
    if not isinstance(entry["value"], str):
        raise ValueError("Value must be a string.")
    
    if not isinstance(entry["stored"], int) or entry["stored"] < 0:
        raise ValueError("Stored must be a non-negative integer.")
    
    if not isinstance(entry["ttl"], int) or entry["ttl"] <= 0:
        raise ValueError("TTL must be a positive integer.")
    
    if not isinstance(now, int) or now < entry["stored"]:
        raise ValueError("Now must be an integer at least stored.")
    
    if now >= entry["stored"] + entry["ttl"]:
        raise ValueError("Record is no longer usable at the given tick.")
    
    return entry["value"]
```