At a minimum, help text should note this. This is true for things like addwitnessaddress especially.
CBitcoinSecret vchSecret;
                    bool fGood = vchSecret.SetString(privkey);
                    if (!fGood) {
                        throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Invalid private key encoding");
                    }
                    CKey key = vchSecret.GetKey();
                    if (!key.IsValid()) {
                        throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Private key outside allowed range");
                    }
                    CPubKey pubkey = key.GetPubKey();
                    assert(key.VerifyPubKey(pubkey));
                    CKeyID vchAddress = pubkey.GetID();
                    pwallet->MarkDirty();
                    pwallet->SetAddressBook(vchAddress, label, "receive");
                    if (pwallet->HaveKey(vchAddress)) {
                        throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Already have this key");
                    }
                    pwallet->mapKeyMetadata[vchAddress].nCreateTime = timestamp;
                    if (!pwallet->AddKeyPubKey(key, pubkey)) {
                        throw JSONRPCError(RPC_WALLET_ERROR, "Error adding key to wallet");
                    }
                    pwallet->UpdateTimeFirstKey(timestamp);
                }
            }
            success = true;
        } else {
            
            if (pubKeys.size() && keys.size() == 0) {
                const std::string& strPubKey = pubKeys[0].get_str();
                if (!IsHex(strPubKey)) {